В начало

«Взаиморасчеты» через КЗОР

 

            Для создания отчета «Взаиморасчеты» с использованием конструктора запросов с обработкой результата (КЗОР) необходимо предварительно создать новый отчет в дереве конфигурации. Включаем его в нужные подсистемы на закладке «Подсистемы». Затем переходим на закладку свойств «Формы», создать там форму отчета.

            В форме отчета добавить реквизит «ТабДок» с типом табличный документ и команду формы «Сформировать».

Рис. 1. Форма отчета

Рис. 1. Форма отчета

 

            Потом необходимо создать действие для кнопки «Сформировать», после чего автоматически будут созданы шаблоны 2-х процедур в модуле формы: одна с директивой «НаКлиенте», другая – НаСервереБезКонтекста. Вписываем параметр «ТабДок» в процедуру «СформироватьНаСервере», помещаем курсор внутрь процедуры и выбираем в главном меню конфигуратора «Текст –> Конструктор запроса с обработкой результата…». Далее запустится конструктор запроса.

            На закладке «Обработка результата» необходимо выбрать тип обработки – вывод в табличный документ, после чего перейти на следующую закладку – «Таблицы и поля».

Рис. 2. КЗОР, закладка «Обработка результата»

Рис. 2. КЗОР, закладка «Обработка результата»

            На закладке «Таблицы и поля» выбираем виртуальную таблицу «Взаиморасчетыстатки», потом поля «Контрагент» и «СуммаДолгаОстаток». Создаем произвольные выражения.

 

Рис. 3. Произвольное выражение

 

Рис. 4. Другое произвольное выражение

Рис. 5. Закладка «Таблицы и поля» КЗОР

Рис. 5. Закладка «Таблицы и поля» КЗОР

 

Далее переходим на закладку «Объединения/Псевдонимы», здесь кое что переименовываем по-человечески чтобы было.

Рис. 6. Закладка «Объединения/Псевдонимы»

Рис. 6. Закладка «Объединения/Псевдонимы»

 

Также можно на закладке «Итоги» выбрать группировочное поле и общие итоги.

Рис. 7. Закладка «Итоги»

 

            Все, можно закрыть КЗОР, при этом будет создан макет отчета, в который по-хорошему останется добавить заголовок, поменять шрифты и сделать выделение областей.

Рис. 8. Макет отчета

Рис. 8. Макет отчета

 

            Также будут заполнена кодом процедура «СформироватьНаСервере(ТабДок)» в модуле формы. Листинг модуля формы приведен ниже.

Листинг 1. Модуль формы и процедуры в нем

&НаКлиенте

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

      СформироватьНаСервере(ТабДок);

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

 

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

Процедура СформироватьНаСервере(ТабДок)

      //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

      // Данный фрагмент построен конструктором.

      // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

     

      Макет = ОтчетызаиморасчетыЧерезКЗОР.ПолучитьМакет("Макет");

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

      Запросекст =

            "ВЫБРАТЬ

            |     ВзаиморасчетыОстаткионтрагент КАК Контрагент,

            |     ВЫБОР

            |           КОГДА ВзаиморасчетыОстаткиуммаДолгаОстаток < 0

            |                 ТОГДА -ВзаиморасчетыОстаткиуммаДолгаОстаток

            |     КОНЕЦ КАК МыДолжны,

            |     ВЫБОР

            |           КОГДА ВзаиморасчетыОстаткиуммаДолгаОстаток > 0

            |                 ТОГДА ВзаиморасчетыОстаткиуммаДолгаОстаток

            |     КОНЕЦ КАК НамДолжны

            |ИЗ

            |     РегистрНакоплениязаиморасчеты.Остатки КАК ВзаиморасчетыОстатки

            |

            |УПОРЯДОЧИТЬ ПО

            |     Контрагент

            |ИТОГИ

            |     СУММА(МыДолжны),

            |     СУММА(НамДолжны)

            |ПО

            |     ОБЩИЕ,

            |     Контрагент";

     

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

     

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

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

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

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

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

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

     

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

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

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

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

     

      ВыборкаОбщийИтог = РезультатЗапросаыбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

     

      ВыборкаОбщийИтогледующий();      // Общий итог

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

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

     

      ВыборкаКонтрагент = ВыборкаОбщийИтогыбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

     

      Пока ВыборкаКонтрагентледующий() Цикл

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

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

      КонецЦикла;

     

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

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

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

     

      //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

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

 

            Далее запускаем платформу в режиме «1Средприятие» и формируем отчет.

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

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

 

            ПРИМЕЧАНИЕ: пример создания отчета сделан на платформе «1Средприятие 8.3» с интерфейсом «Такси».