Имя: Пароль:
1C
1C 7.7
v7: глПолучитьСписокПодчиненныхДокументов
0 dk
 
18.01.12
09:32
Есть у кого готовое? что=то пошарился в типовых - не нашел (
1 andrewks
 
18.01.12
09:33
тут писать-то на 5 минут
2 Mikeware
 
18.01.12
09:34
ВыбратьПодчиененые и заполнить в цикле?
3 1Сергей
 
18.01.12
09:34
//******************************************************************************
// глПолучитьВсеПодчиненныеДокументы(Док, СписокДок)
//
// Параметры:
//  Док - документ, к которому нужно получить список подчиненных документов
//  СписокДок - список значений, содержащий идентификаторы и
//  представления видов документов
// Возвращаемое значение:
//  Список значений, содержащий идентификаторы и
//  представления видов документов
//
// Описание:
//  Формируем список документов, которые введены на основании документа (Док)
//
Процедура глПолучитьВсеПодчиненныеДокументы(Док, СписокДок) Экспорт
   
   Если СписокДок.НайтиЗначение(Док.ТекущийДокумент())<=0 Тогда
       
       СписокДок.ДобавитьЗначение(Док.ТекущийДокумент());
       ПодчинДок = СоздатьОбъект("Документ");
       
       ПодчинДок.ВыбратьПодчиненныеДокументы(,,Док.ТекущийДокумент());
       Пока ПодчинДок.ПолучитьДокумент() = 1 Цикл
           
           глПолучитьВсеПодчиненныеДокументы(ПодчинДок,СписокДок);
           
       КонецЦикла;
       
   КонецЕсли;
   
КонецПроцедуры // глПолучитьВсеПодчиненныеДокументы()
4 Rie
 
18.01.12
09:34
Док = СоздатьОбъект("Документ");
Док.ВыбратьПодчиненныеДокументы(,,КомуПодчиненные);
Пока Док.ПолучитьДокумент()=1 Цикл
//...

не оно?
5 Mikeware
 
18.01.12
09:36
Функция  глВыбратьПодчиненные(ДокОснование,ВидПодчДокумента="", НачДата="",КонДата="", флПроведенные="") Экспорт
       ТекстЗапроса="
   |SELECT
   |    distinct
   |    Жур.IDDoc [Док $Документ],
   |    Жур.IDDocDef Док_вид
   |FROM
   |    _1SJourn Жур (nolock)
   |INNER JOIN
   |    _1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
   |                      Отбор. MDID = 0 AND
   |                    Отбор.ParentVal = :ВыбОснование* ";
   Если ПустоеЗначение(НачДата)=0 Тогда
       ТекстЗапроса=ТекстЗапроса+"
   |                    AND  Отбор.Child_Date_Time_IDDoc >:НачДата ";
   КонецЕсли;
   Если ПустоеЗначение(КонДата)=0 Тогда
       ТекстЗапроса=ТекстЗапроса+"
   |                    AND  Отбор.Child_Date_Time_IDDoc < :КонДата~";
   КонецЕсли;
ТекстЗапроса=ТекстЗапроса+"
   |where  Жур.ismark=0";
   Если ПустоеЗначение(флПроведенные)=0 Тогда
       ТекстЗапроса=ТекстЗапроса+"
       |    and Жур.closed&1=:Проведенные";
   КонецЕсли;
   Если ПустоеЗначение(ВидПодчДокумента)=0 Тогда
   ТекстЗапроса=ТекстЗапроса+"
   |    and Жур.IDDocDef=$ВидДокумента."+ВидПодчДокумента;
   КонецЕсли;
   ТекстЗапроса=ТекстЗапроса+"    
   |order by Жур.iddoc
   |";
   рс=СоздатьОбъект("ODBCRecordset");
   Если ПустоеЗначение(НачДата)=0 Тогда
       рс.УстановитьТекстовыйПараметр("НачДата", НачДата);
   КонецЕсли;
   Если ПустоеЗначение(КонДата)=0 Тогда
       рс.УстановитьТекстовыйПараметр("КонДата",КонДата);
   КонецЕсли;
   рс.УстановитьТекстовыйПараметр("ВыбОснование",ДокОснование);
   Если ПустоеЗначение(флПроведенные)=0 Тогда
       рс.УстановитьТекстовыйПараметр("Проведенные",флПроведенные);
   КонецЕсли;
   результат=рс.ВыполнитьИнструкцию(текстЗапроса);
   Возврат результат;
КонецФункции // глВыбратьПодчиненные
6 dk
 
18.01.12
09:37
(3) спб
---
(1)(2)(4) там несколько уровней вложенности + защита от зацикливания
7 andrewks
 
18.01.12
09:38
(6) ну-ка расскажи про зацикливание
8 dk
 
18.01.12
09:39
(7) 2 документа ссылаются др на др
9 filh
 
18.01.12
09:39
(7) в типовой ТиС посмотри.
10 1Сергей
 
18.01.12
09:39
(5) изварщенец :)
11 filh
 
18.01.12
09:39
+9 обработка - ДеревоДокументов
12 dk
 
18.01.12
09:39
ну или через другой подчиненный документ
13 andrewks
 
18.01.12
09:42
(8) ну, элементарно проверяется по наличию в текущем списке
14 dk
 
18.01.12
09:44
просто лениво писать и тестить, раз уже готовое есть
15 aka AMIGO
 
18.01.12
09:53
16 aka AMIGO
 
18.01.12
10:39
17 Злопчинский
 
18.01.12
11:17
курите все бамбук любители типовых - ДеревоДокументов из Тис или Бух - кривое; строится только по реквизитам шапки и не защищает от зацикливания при наличии циклических ссылок
18 Simod
 
18.01.12
11:30
(17) У меня ни разу не зациклилось. Просвяти.
19 Mikeware
 
18.01.12
11:38
(10) почему извращенец? Удобно, если нужно найти, скажем, непроведенные документы определенного вида, созданные после даты....
(18) Было, но надо извращаться...
20 aka AMIGO
 
18.01.12
12:39
(18) зациклится, если применить (8)
21 Злопчинский
 
19.01.12
01:12
(18) уже просветили...
Закон Брукера: Даже маленькая практика стоит большой теории.