Имя: Пароль:
1C
1С v8
Подчиненные документы и документы основания
,
0 kep12377
 
06.08.22
15:32
Приветствую всех. Нужно в запросе выбрать подчиненные документы и документы основания. Подскажите как это сделать

        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
        |    РеализацияТоваровУслуг.Ссылка КАК Ссылка,
        |    АВТОНОМЕРЗАПИСИ() КАК Номер
        |ПОМЕСТИТЬ ВТ_ДокОсн
        |ИЗ
        |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
        |ГДЕ
        |    РеализацияТоваровУслуг.Дата МЕЖДУ &ДатаНач И &ДатаКон
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    СвязанныеДокументы.Ссылка КАК ПодДок,
        |    ВТ_ДокОсн.Ссылка КАК Документ,
        |    ВТ_ДокОсн.Номер КАК Номер
        |ИЗ
        |    КритерийОтбора.СвязанныеДокументы КАК СвязанныеДокументы,
        |    ВТ_ДокОсн КАК ВТ_ДокОсн";
        
        //Запрос.УстановитьПараметр("ЗначениеКритерияОтбора", ВыборкаДетальныеЗаписи.Ссылка);
        Запрос.УстановитьПараметр("ДатаНач", ЭтаФорма.ДатаНачало);
        Запрос.УстановитьПараметр("ДатаКон", ЭтаФорма.ДатаКонец);
1 AlvlSpb
 
06.08.22
19:55
ВЫБРАТЬ
    СвязанныеДокументы.Ссылка
ИЗ
    КритерийОтбора.СвязанныеДокументы(&Док) КАК СвязанныеДокументы

В качестве параметра Док, в критериях отбора может быть только один документ. Так что получаешь нужные доки и запрос в цикле
2 kubik_live
 
06.08.22
22:13
(1) Медленно работает запрос к КритерийОтбора. Вариантов ускорения не нашел...
3 kubik_live
 
06.08.22
22:16
+(2) Надо было получить цепь документов в отчете: Счет - ПоступлениеНаРС/Реализация - СчФАванс/СчФВыданный
4 kep12377
 
07.08.22
08:06
(3) А можно ли в одном запросе получить ссылку на документ основание( допустим , если самому в текст запроса добавить строку с именем документа) и в этом же запросе получить подчинённые документы?
5 kep12377
 
07.08.22
08:08
(4) дело в том, что у меня есть имя документа, а мне нужно получить ссылку этого документа и его подчинённые доки. У меня получается сделать это только в двух запросах , то есть получается цикл в цикле, а это не гуд. Хотелось бы объединить в один.
6 AlvlSpb
 
07.08.22
08:12
(5) Что значит "есть имя документа"?
7 kep12377
 
07.08.22
09:13
(6) В первом сообщении документ реализации я указал для примера. В действительности, на форме выбирается имя документа. И с помощью запроса нужно получить ссылку на этот документ и подчинённые .
8 Михаил Козлов
 
07.08.22
11:11
Можно программно (и рекурсивно) сформировать текст запроса. Но критерий отбора, вроде как, для этого и служит.
Штатное получение дерева связных не смотрели?
9 RomanYS
 
07.08.22
11:53
(5) соединение тебе поможет
10 AlvlSpb
 
07.08.22
16:28
(7) ЧТО ЗНАЧИТ "Имя документа"? Что выбираешь на форме? Есть подозрение, что это и есть ссылка.
11 Михаил Козлов
 
07.08.22
18:44
(10) Имя документа: "ЗаказКлиента" или "СчетНаОплатуПокупателю".
12 kep12377
 
07.08.22
19:21
(10) На форме строка с выпадающим выбором. На ней выбирается имя документа через метаданные. Затем нужно вывести документы и подчиненные в отчет. Всё это пишу вручную.

    Массив = Новый Массив;
    
    Для Каждого Документ Из Метаданные.Документы Цикл
        Массив.Добавить(Документ.Имя);
    КонецЦикла;
    
    ЭтотОбъект.Элементы.ВидДокумента.СписокВыбора.ЗагрузитьЗначения(Массив);
13 kep12377
 
07.08.22
19:21
(11) Абсолютно любой документ.