В начало

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

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

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

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

 

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

ВЫБРАТЬ

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

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

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

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

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

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

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

 

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

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

&НаКлиенте

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

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

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

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

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

 

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

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

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

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

                Запросекст =

                               "ВЫБРАТЬ

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

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

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

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

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

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

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

 

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

 

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

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

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

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

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

 

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

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

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

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

 

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

 

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

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

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

                КонецЦикла;

 

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

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

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

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

 

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

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