В начало

«Закупочные цены» с запросом

 

            Есть некий регистр сведений «ЗакупочныеЦены», нужно создать отчетик по нему, используя запрос.

            Запускаем конфигуратор, переходим в нужный раздел и создаем новый отчет «ЗакупочныеЦены». Выводить в отчет будем измерения регистра сведений и естественно ресурс.

Рис. 1. Регистр сведений, заполненный на скорую руку

Рис. 1. Регистр сведений, заполненный на скорую руку

 

            После создания нового отчета, нужно перейти в раздел «Макеты» и создать макет нашего представления о будущем отчете. Макету необходимо выбрать тип «Табличный документ». Макет будет представлять из себя шапку и таблицу из 3 колонок. Для задания имени областей нужно выделить строки и выбрать в главном меню «Таблица – Имена – Назначить имя…». А для того чтобы задать параметры таблицы нужно в свойствах ячеек выбрать «Макет – Заполнение – Параметр».

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

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

 

            Далее переходим к созданию формы отчета, она создается в разделе «Формы». Для формы отчета создаем реквизит «ТабДок» с типом табличный документ и кнопку для вывода отчета и «ДатаОтчета» с типом дата. Перетаскиваем их в раздел «Форма», который находится в левой части, после этого кнопка и пустой табличный документ сразу отобразятся внизу. Если выбрать для кнопки раздел свойств «Основные ­– Действие», то будет создан шаблон процедуры и автоматический переход в модуль формы, в котором собственно надо немного покодить.

 

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

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

 

            Затем заполняем процедуры. Запрос легко создать через контекстное меню, выбрав «Конструктор запроса…» и следуя далее указаниям мастера. Форматную строку, кстати, также, только нужно выбрать «Конструктор форматной строки…».

 

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

&НаКлиенте

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

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

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

 

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

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

      //Синтаксис языка довольно чудесатый,

      //Единообразия вообще нет

      //Макет и области получаем по строковому названию,

      //параметры в макете задаем через точку,

      //а выводим область по имени

      Макет = Отчеты.ЗакупочныеЦены.ПолучитьМакет("Макет");

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

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

      Область_Ш.Параметры.ДатаОтчета = Формат(ДатаОтчета, "ДФ=dd.MM.yyyy");

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

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

     

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

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

      "ВЫБРАТЬ

      |     Контрагент,

      |     Номенклатура,

      |     Цена

      |ИЗ

      |     РегистрСведений.ЗакупочныеЦены.СрезПоследних(&ДатаОтчета, )";

      Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета);

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

      Выборка = Результат.Выбрать();//Создаем выборку

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

            Область_С.Параметры.Контрагент = Выборка.Контрагент;

            Область_С.Параметры.Номенклатура = Выборка.Номенклатура;

            Область_С.Параметры.Цена = Выборка.Цена;

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

      КонецЦикла;

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

            После этого запускаемся в режиме «1С:Предприятие», выбираем наш отчет и формируем его. Ниже показан внешний вид отчета.

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

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

 

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