В начало

Отчет по закупкам и продажам

           

Есть некий отчет по закупкам и продажам, у отчета есть форма отчета и макет.

            Нужно создать отчет используя соединение таблиц.

            Сам запрос можно создать в консоли запросов.

 

Листинг 1. Запрос к таблицам документов

ВЫБРАТЬ

            ЕСТЬNULL(Приходная.Номенклатура, Расходная.Номенклатура) КАК Номенклатура,

            ЕСТЬNULL(Приходная.Количество,0) КАК Закупки,

            ЕСТЬNULL(Расходная.Количество,0) КАК Продажи

ИЗ Документ.ПриходнаяНакладная.Товары КАК Приходная

ПОЛНОЕ СОЕДИНЕНИЕ

            Документ.РасходнаяНакладная.Товары КАК Расходная

ПО Приходная.Номенклатура = Расходная.Номенклатура

 

            Затем полученный запрос нужно вставить в процедуру в модуле формы вместо уже имеющегося.

 

Листинг 2. Процедуры модуля формы

&НаКлиенте

Процедура Сформировать(Команда)

                ТабДок = Новый ТабличныйДокумент;

                СоздатьОтчет(ТабДок);

                ТабДок.Показать();

КонецПроцедуры

 

&НаСервереБезКонтекста

Процедура СоздатьОтчет (ТабДок)

                Макет = Отчеты.ЗакупкиИПродажи.ПолучитьМакет("Макет");

                Запрос = Новый Запрос;

                Запрос.Текст =

                               "ВЫБРАТЬ

                               |ЕСТЬNULL(Приходная.Номенклатура, Расходная.Номенклатура) КАК Номенклатура,

                               |ЕСТЬNULL(Приходная.Количество,0) КАК Закупки,

                               |ЕСТЬNULL(Расходная.Количество,0) КАК Продажи

                               |ИЗ Документ.ПриходнаяНакладная.Товары КАК Приходная

                               |ПОЛНОЕ СОЕДИНЕНИЕ

                               |               Документ.РасходнаяНакладная.Товары КАК Расходная

                               |ПО Приходная.Номенклатура = Расходная.Номенклатура";

 

                Результат = Запрос.Выполнить();

 

                ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");

                ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");

                ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");

                ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");

                ОбластьДетальныхЗаписей = Макет.ПолучитьОбласть("Детали");

 

                ТабДок.Очистить();

                ТабДок.Вывести(ОбластьЗаголовок);

                ТабДок.Вывести(ОбластьШапкаТаблицы);

                ТабДок.НачатьАвтогруппировкуСтрок();

 

                ВыборкаДетальныеЗаписи = Результат.Выбрать();

 

                Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

                               ОбластьДетальныхЗаписей.Параметры.Заполнить(ВыборкаДетальныеЗаписи);

                               ТабДок.Вывести(ОбластьДетальныхЗаписей, ВыборкаДетальныеЗаписи.Уровень());

                КонецЦикла;

 

                ТабДок.ЗакончитьАвтогруппировкуСтрок();

                ТабДок.Вывести(ОбластьПодвалТаблицы);

                ТабДок.Вывести(ОбластьПодвал);

КонецПроцедуры

 

            Результат работы можно видеть ниже.

Рис. 1. Сформированный отчет