Глиф Учебники

Урок 9. Отчёты и обработки, СКД

Курс «1С:Предприятие» · урок 9 из 9 · 4 минуты чтения

Отчёты и обработки — то, ради чего чаще всего зовут программиста 1С: «нужен отчёт по продажам с разбивкой по менеджерам», «нужно поднять цены на 10 %». В этом уроке — оба вида на учебной конфигурации «Склад».

Отчёт и обработка

Оба бывают в конфигурации (ветки «Отчеты» и «Обработки» в дереве) и внешними — отдельными файлами: .erf для отчёта и .epf для обработки. Внешние открываются в базе без изменения конфигурации, поэтому ими удобно дополнять типовые программы.

Отчёт показывает данные данные читает сам данные не меняет ветка «Отчеты» внешний .erf Обработка выполняет действие данные меняет Цены +10 % меняет цены, создаёт документы ветка «Обработки» внешняя .epf
Отчёт только читает данные и показывает их таблицей, а обработка меняет их, например поднимает цены на 10 %; оба бывают в конфигурации и внешними файлами .erf и .epf.

Система компоновки данных

Система компоновки данных (СКД) — механизм платформы, на котором построено большинство отчётов в типовых конфигурациях. Разработчик описывает, *какие данные* нужны (обычно запросом), а платформа сама:

Описание отчёта называется схемой компоновки данных. Код для простого отчёта на СКД не нужен вовсе.

Отчёт «Остатки товаров» на СКД

  1. В конфигураторе добавьте отчёт: ветка «Отчеты» → Добавить, имя ОстаткиТоваров. На закладке Подсистемы отметьте «Склад».
  2. На закладке Основные нажмите Открыть схему компоновки данных и согласитесь создать новую схему.
  3. На закладке Наборы данных схемы добавьте набор данных — запрос и откройте Конструктор запроса…. Выберите таблицу РегистрНакопления.ОстаткиТоваров.Остатки и поля Склад, Товар, КоличествоОстаток, нажмите «ОК». Текст запроса появится в наборе данных.
  4. На закладке Ресурсы добавьте КоличествоОстаток — это поле, по которому считаются итоги (сумма).
  5. На закладке Настройки опишите, как выглядит отчёт: добавьте группировку по полю Склад, внутри неё — детальные записи, а среди выбранных полей отметьте Товар и КоличествоОстаток. То же можно сделать конструктором настроек.
  6. Нажмите F5. В разделе «Склад» появится отчёт «Остатки товаров»: откройте его и нажмите Сформировать.

Получится таблица: склады, под каждым — его товары с количеством, у склада — итог.

Схема компоновки данных Наборы данных — запрос РегистрНакопления. ОстаткиТоваров.Остатки поля: Склад, Товар, КоличествоОстаток Ресурсы КоличествоОстаток — сумма в итогах Настройки группировка Склад детальные записи поля: Товар, КоличествоОстаток Отчёт «Остатки товаров» Сформировать Основной 120 Карандаш70 Ручка50 Магазин 20 Карандаш20 строки складов — из настроек итог склада — сумма ресурса
В схеме компоновки задаются набор данных — запрос к остаткам, ресурс КоличествоОстаток и группировка по складу, а платформа по ним сама строит отчёт с итогом каждого склада.

Обратите внимание: в тексте запроса не было ни даты, ни склада. СКД сама добавит параметры виртуальной таблицы и поля для отборов — дату остатков и склад можно будет задать в настройках отчёта.

Что из чего состоит

Часть схемыЧто задаёт
Наборы данныхоткуда данные: запрос, объект или объединение нескольких наборов
Вычисляемые поляновые поля из выражений, например Цена * Количество
Ресурсычто суммировать (или считать максимум, среднее) в итогах
Параметрызначения, которые пользователь задаёт перед формированием: дата, период
Настройкивид отчёта по умолчанию: группировки, выбранные поля, отборы, сортировка, оформление

В режиме 1С:Предприятие пользователь меняет те же настройки сам — кнопкой настроек в форме отчёта — и может сохранить их как свой вариант. Поэтому отчёт на СКД обычно делают один, а не десять похожих.

Вариант: по складам Основной120 Карандаш70 Ручка50 Магазин20 Карандаш20 Вариант: по товарам Карандаш90 Основной70 Магазин20 Ручка50 Основной50 те же данные: пользователь сам меняет группировку и сохраняет вариант
Один и тот же отчёт на СКД в варианте по складам и в варианте по товарам: пользователь сам меняет группировку в настройках, а итоги считаются по тем же данным.

Обработка «Поднять цены»

Обработка — это форма с кнопками и код. Сделайте её так же, как обработку «Практика» из урока Встроенный язык, но в конфигурации: ветка «Обработки» → Добавить, имя ПоднятьЦены, форма, команда ПоднятьЦены с обработчиком на клиенте. Код модуля формы:

1С
&НаСервереБезКонтекста
Процедура ПоднятьЦеныНаСервере(Процент)
    Выборка = Справочники.Товары.Выбрать();
    Пока Выборка.Следующий() Цикл
        ТоварОбъект = Выборка.ПолучитьОбъект();
        ТоварОбъект.Цена = Окр(ТоварОбъект.Цена * (100 + Процент) / 100, 2);
        ТоварОбъект.Записать();
    КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура ПоднятьЦены(Команда)
    ПоднятьЦеныНаСервере(10);
    Сообщить("Цены подняты на 10 %");
КонецПроцедуры

Кнопка вызывает серверную процедуру, та перебирает товары и записывает каждый с новой ценой.

Обработка, которая меняет много данных, выполняет изменения сразу и без отмены. Перед запуском в рабочей базе сделайте копию — справка Как сделать резервную копию базы, — а сначала проверьте обработку на копии.

Внешний отчёт или обработка

Чтобы не менять конфигурацию, тот же отчёт или обработку делают внешними: в конфигураторе Файл → Новый… → Внешний отчет или Внешняя обработка, а готовый файл открывают в базе через Файл → Открыть…. В типовых конфигурациях внешние файлы ещё и подключают в специальный список дополнительных отчётов и обработок — тогда они появляются в разделах программы, и пользователям не нужно искать файл.

Внешняя обработка выполняет любой код с правами того, кто её открыл: может изменить или удалить данные. Открывайте только файлы, которым доверяете, — от своего программиста или поставщика конфигурации.

Коротко

Проверьте себя

1. Что нужно, чтобы отчёт показывал итог по количеству для каждого склада?
2. Чем обработка отличается от отчёта?
3. Какое расширение у файла внешней обработки?
4. Пользователь хочет тот же отчёт, но с группировкой по товарам. Что нужно сделать?