В начало

«Список сотрудников» через КЗОР

 

            Чтобы создать отчет «Список сотрудников» в системе «1Средприятие 8.3» по справочнику «Сотрудники», можно воспользоваться конструктором запроса с обработкой результата (КЗОР). Но сначала нужно перейти в раздел «Отчеты» в режиме конфигуратора и создать заготовку отчета.

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

Рис. 1. Форма отчета «Список сотрудников»

Рис. 1. Форма отчета «Список сотрудников»

 

            Затем переходим в модуль формы, который находится на закладке «Модуль», помещаем курсор мыши в тело процедуры СформироватьНаСервере() и выбираем в главном меню конфигуратора «Текст –> Конструктор запроса с обработкой результата…». При этом запускается он – КЗОР.

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

            На закладке «Таблицы и поля» конструктора выбираем таблицы и поля по которым будем формировать отчет.

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

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

            На закладке «Условия» отсеиваем названия групп в фамилиях сотрудников.

Рис. 3. Закладка «Условия»

            Переходим на закладку «Объединения/Псевдонимы» и переименовываем реквизиты: вместо «Родитель» пишем «Группа» ,а вместо «Наименование» – ФИО.

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

            На закладке «Порядок» можно установить сортировку.

Рис. 5. Закладка «Порядок»

 

            А на закладке «Итоги» выбираем группировочное поле, в нашем случае это «Группа».

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

 

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

Рис. 7. Макет

 

            Листинг с кодом процедур показан ниже.

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

 

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

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

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

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

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

     

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

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

      Запросекст =

            "ВЫБРАТЬ

            |     Сотрудникиодитель КАК Группа,

            |     Сотрудникиаименование КАК ФИО,

            |     СотрудникиатаРождения

            |ИЗ

            |     Справочникотрудники КАК Сотрудники

            |ГДЕ

            |     СотрудникитоГруппа = ЛОЖЬ

            |

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

            |     Группа,

            |     ФИО

            |ИТОГИ ПО

            |     Группа";

     

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

     

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

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

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

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

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

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

     

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

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

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

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

     

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

     

      Пока ВыборкаГруппаледующий() Цикл

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

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

     

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

     

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

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

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

            КонецЦикла;

      КонецЦикла;

     

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

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

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

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

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

 

&НаКлиенте

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

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

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

           

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

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

 

            Полученный отчет конечно сыроват, но его доработка это уже дело техники, ниже показан модифицированный отчет.

Рис. 9. Слегка доработанный отчет

 

ПРИМЕЧАНИЕ: отчет сформирован в версии 8.3.