Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 12:13

Доработка Отчета

Автор Erkhan, 17 фев 2023, 13:21

0 Пользователей и 1 гость просматривают эту тему.

Erkhan

Есть задача сделать отчет по договорам. Из самого документа надо достать данные и также с табличных частей этого документа взять некоторую информацию. Пожалуйста подскажите как это сделать? Отчет по данным из самого документа я с формировал, теперь нужно заполнить две колонки из данных табличных частей этого документа!

Максим75

запросом, к данным по документу присоединяете левым соединением данные табличной части, связь по ссылке (т.е. самому документу) и выбираете в табличной части все, что хочется.

Erkhan

ВЫБРАТЬ
                  |   Договорчик.НомерДоговора КАК НомерДоговора,
                  |   Договорчик.ДатаЗаключения КАК ДатаЗаключения,
                  |   Договорчик.Контрагент КАК Контрагент,
                  |   Договорчик.ВидДоговора КАК ВидДоговора,
                  |   Договорчик.Номер КАК Номер,
                  |   Договорчик.Дата КАК ДатаРег,
                  |   Договорчик.СтатусДоговора КАК СтатусДоговора,
                  |   Договорчик.ДатаНачалаДоговора КАК ДатаНачала,
                  |   Договорчик.ДатаОкончанияДоговора КАК ДатаОкончания,
                  |   Договорчик.Автор КАК Автор,
                  |   Договорчик.СрокПоставкиТРУС КАК СрокПоставкиТРУС,
                  |   Договорчик.СрокПоставкиТРУПо КАК СрокПоставкиТРУПо,
                  |   ВЫБОР
                  |      КОГДА Договорчик.Контрагент.НовыйКонтрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                  |         ТОГДА ИСТИНА
                  |      ИНАЧЕ ЛОЖЬ
                  |   КОНЕЦ КАК Устаревший
                  |ИЗ
                  |   Документ.Договор КАК Договорчик
               |   ЛЕВОЕ СОЕДИНЕНИЕ Заявитель КАК Заявитель
               |   ПО Договорчик.Ссылка = ДоговорчиктчЗаявитель.Ссылка
               |   ЛЕВОЕ СОЕДИНЕНИЕ Куратор КАК Куратор
                   |   ПО Договорчик.Ссылка = ДоговорчиктчКуратор.Ссылка
                  |ГДЕ
                  |   (НЕ Договорчик.ПометкаУдаления)
                  |   И Договорчик.Проведен
                  |   И Договорчик.Дата <= &ДатаКон
                  |   И Договорчик.Дата >= &ДатаНач
                  |{ГДЕ
                  |   Договорчик.ДатаЗаключения,
                  |   Договорчик.Контрагент,
                  |   Договорчик.СтатусДоговора,
                  |   Договорчик.Автор,
                  |   (ВЫБОР
                  |         КОГДА Договорчик.Контрагент.НовыйКонтрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                  |            ТОГДА ИСТИНА
                  |         ИНАЧЕ ЛОЖЬ
                  |      КОНЕЦ) КАК Устаревший}

Вот так?

Максим75

Erkhan, нет.

 ЛЕВОЕ СОЕДИНЕНИЕ Заявитель КАК Заявитель
и
 ЛЕВОЕ СОЕДИНЕНИЕ Куратор КАК Куратор

это чего такое? что такое Заявитель и Куратор?
Табличные части документа документа Договор?


Erkhan

да, табличные части

Максим75

Erkhan, так а в запросе не видно, что это табличные части.
должно быть  Документ.Договор.Заявитель, ну и с куратором так же.
Вы конструктором запрос создаете? или ручками правите?
в конструкторе же все видно, что выбирается, как связывается и т.д.

Erkhan

Я на этом этапе написал три запроса в одном я достаю элементы из основного документа. А в двух остальных я достаю Заявителя и Куратора из табличных частей и делаю конкатенацию строк через запятую так как У одного договора может быть несколько кураторов и заявителей. Теперь вопрос как мне соединить три этих запроса в один? 

Afinogen

 B) ЛЕВОЕ СОЕДИНЕНИЕ

Erkhan

Afinogen, ВЫБРАТЬ
                  |   ТаблицаДоговоров.НомерДоговора КАК НомерДоговора,
                  |   ТаблицаДоговоров.ДатаЗаключения КАК ДатаЗаключения,
                  |   ТаблицаДоговоров.Контрагент КАК Контрагент,
                  |   ТаблицаДоговоров.ВидДоговора КАК ВидДоговора,
                  |   ТаблицаДоговоров.Номер КАК Номер,
                  |   ТаблицаДоговоров.Дата КАК ДатаРег,
                  |   ТаблицаДоговоров.СтатусДоговора КАК СтатусДоговора,
                  |   ТаблицаДоговоров.ДатаНачалаДоговора КАК ДатаНачала,
                  |   ТаблицаДоговоров.ДатаОкончанияДоговора КАК ДатаОкончания,
                  |   ТаблицаДоговоров.Автор КАК Автор,
                  |   ТаблицаДоговоров.СрокПоставкиТРУС КАК СрокПоставкиТРУС,
                  |   ТаблицаДоговоров.СрокПоставкиТРУПо КАК СрокПоставкиТРУПо,
                  |   ВЫБОР
                  |      КОГДА ТаблицаДоговоров.Контрагент.НовыйКонтрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                  |         ТОГДА ИСТИНА
                  |      ИНАЧЕ ЛОЖЬ
                  |   КОНЕЦ КАК Устаревший
                  |ПОМЕСТИТЬ ВТ_Договора
                  |ИЗ
                  |   &ТаблицаДоговоров КАК ТаблицаДоговоров
               |   ЛЕВОЕ СОЕДИНЕНИЕ Куратор КАК Куратор
               |   ПО ТаблицаДоговоров.Ссылка = &ТаблицаКураторов.Ссылка
                  |ГДЕ
                  |   (НЕ ТаблицаДоговоров.ПометкаУдаления)
                  |   И ТаблицаДоговоров.Проведен
                  |   И ТаблицаДоговоров.Дата <= &ДатаКон
                  |   И ТаблицаДоговоров.Дата >= &ДатаНач
                  |{ГДЕ
                  |   ТаблицаДоговоров.ДатаЗаключения,
                  |   ТаблицаДоговоров.Контрагент,
                  |   ТаблицаДоговоров.СтатусДоговора,
                  |   ТаблицаДоговоров.Автор,
                  |   (ВЫБОР
                  |         КОГДА ТаблицаДоговоров.Контрагент.НовыйКонтрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                  |            ТОГДА ИСТИНА
                  |         ИНАЧЕ ЛОЖЬ
                  |      КОНЕЦ) КАК Устаревший}
                  |;
                  |
                  |////////////////////////////////////////////////////////////////////////////////
                  |ВЫБРАТЬ
                  |   ВТ_Договора.НомерДоговора,
                  |   ВТ_Договора.ДатаЗаключения,
                  |   ВТ_Договора.Контрагент,
                  |   ВТ_Договора.ВидДоговора,
                  |   ВТ_Договора.Номер,
                  |   ВТ_Договора.ДатаРег,
                  |   ВТ_Договора.СтатусДоговора,
                  |   ВТ_Договора.ДатаНачала,
                  |   ВТ_Договора.ДатаОкончания,
                  |   ВТ_Договора.Автор,
                  |   ВТ_Договора.СрокПоставкиТРУС,
                  |   ВТ_Договора.СрокПоставкиТРУПо,
                  |   ВТ_Договора.Устаревший
                  |ИЗ
                  |   ВТ_Договора КАК ВТ_Договора
Вот так делаю, ошибку выдает

Afinogen

правильно вот эта часть кода лишняя

|   ЛЕВОЕ СОЕДИНЕНИЕ Куратор КАК Куратор
               |   ПО ТаблицаДоговоров.Ссылка = &ТаблицаКураторов.Ссылка
                  |ГДЕ
                  |   (НЕ ТаблицаДоговоров.ПометкаУдаления)
                  |   И ТаблицаДоговоров.Проведен
                  |   И ТаблицаДоговоров.Дата <= &ДатаКон
                  |   И ТаблицаДоговоров.Дата >= &ДатаНач
                  |{ГДЕ
                  |   ТаблицаДоговоров.ДатаЗаключения,
                  |   ТаблицаДоговоров.Контрагент,
                  |   ТаблицаДоговоров.СтатусДоговора,
                  |   ТаблицаДоговоров.Автор,
                  |   (ВЫБОР
                  |         КОГДА ТаблицаДоговоров.Контрагент.НовыйКонтрагент <> ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                  |            ТОГДА ИСТИНА
                  |         ИНАЧЕ ЛОЖЬ
                  |      КОНЕЦ) КАК Устаревший}
Нельзя делать левое соединение с таблицей которая передается как параметр

нужно первым пакетом сохранить во временную таблицу а затем уже делать  левое соединение с сохраненной таблицей


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск