Свой отчет на СКД в Конфигураторе 1С 8.3: от объекта метаданных до прав пользователей

· 11 мин

Содержание

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

Типичная ситуация: главбух просит «продажи по контрагентам за период с разбивкой по менеджерам», а в типовых отчетах такого среза нет. Ниже — порядок, которым это делают на практике в любой конфигурации на платформе 8.3. Пути и названия даны для интерфейса Конфигуратора платформы 8.3.2x.

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

Где создавать отчет и как добавить объект метаданных

Сначала решите, куда положить отчет. От этого зависит, как он будет обновляться и кто сможет его открыть.

ВариантКогда подходитРиски и ограничения
Объект в основной конфигурацииСвоя, нетиповая конфигурация или снятая с поддержкиВ типовой ломает обновления
Объект в расширении (.cfe)Типовая на поддержке, отчет нужен постоянноНужно следить за совместимостью расширения после обновлений
Внешний отчет (.erf)Разовая задача, обмен с коллегами, база в облакеФайл живёт отдельно, права настраиваются иначе
Какая у вас база?

Добавление в основную конфигурацию

  1. Откройте Конфигуратор и выполните Конфигурация → Открыть конфигурацию.
  2. В дереве метаданных найдите ветку «Отчеты», щёлкните правой кнопкой и выберите «Добавить».
  3. Задайте «Имя» латиницей или кириллицей без пробелов, например ПродажиПоМенеджерам. «Синоним» — то, что увидит пользователь: «Продажи по менеджерам».
  4. На вкладке «Основные» нажмите кнопку «Открыть схему компоновки данных». Платформа предложит создать макет с именем ОсновнаяСхемаКомпоновкиДанных — согласитесь.

Добавление в расширение

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

💡 Префикс расширения автоматически подставится к именам новых объектов. Это защищает от конфликта имён, если в следующем релизе типовой появится отчет с тем же именем.

Наборы данных: запрос и источники информации

Набор данных — это ответ на вопрос «откуда отчет берёт цифры». В редакторе СКД на вкладке «Наборы данных» нажмите зелёный плюс. Типов три:

  • 🔎 Набор данных — запрос. Основной вариант: данные из регистров, документов и справочников.
  • 🧩 Набор данных — объект. Данные готовит код: например, таблица значений, собранная из внешнего файла или веб-сервиса.
  • 🔗 Набор данных — объединение. Склеивает несколько наборов в одну таблицу, как ОБЪЕДИНИТЬ ВСЕ в запросе.

Для набора-запроса нажмите «Конструктор запроса». Выберите таблицы, поля, условия — конструктор сгенерирует текст. Пример для продаж по документам реализации:

ВЫБРАТЬ
    Реализация.Ссылка КАК Документ,
    Реализация.Дата КАК Дата,
    Реализация.Контрагент КАК Контрагент,
    Реализация.Ответственный КАК Менеджер,
    Реализация.СуммаДокумента КАК Сумма
ИЗ
    Документ.РеализацияТоваровУслуг КАК Реализация
ГДЕ
    Реализация.Проведен
    И Реализация.Дата МЕЖДУ &НачалоПериода И &КонецПериода

Если между набором-запросом и набором-объектом нужна связь, её задают на вкладке «Связи наборов данных»: источник, приёмник, выражение связи.

Для оборотов и остатков берите виртуальные таблицы регистров (.Обороты, .Остатки, .ОстаткиИОбороты) с параметрами периода, а не фильтруйте реальную таблицу движений. На базе с несколькими годами учёта разница в скорости измеряется минутами.

Фигурные скобки в запросе СКД

Приём, который сильно упрощает жизнь: необязательные условия заключают в фигурные скобки.

ГДЕ
    Реализация.Проведен
    {И Реализация.Контрагент = &Контрагент}

Если пользователь не заполнил параметр Контрагент, СКД просто выкинет это условие из запроса. Без скобок пустой параметр отфильтрует всё и отчет окажется пустым.

Поля, ресурсы и параметры отчета

После того как запрос сохранён, поля появятся в таблице набора данных. Для каждого можно задать заголовок, ограничения использования и роль.

Ресурсы

На вкладке «Ресурсы» перечисляются поля, которые суммируются по группировкам. Двойной щелчок по полю Сумма переносит его в ресурсы с выражением Сумма(Сумма). Без этого шага итоги по менеджерам и контрагентам не посчитаются.

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

Вычисляемые поля

Вкладка «Вычисляемые поля» нужна, когда показатель считается из других полей. Пример — средний чек:

Путь к даннымВыражение
СреднийЧекСумма (значение в строке — сумма одного документа)

Чтобы итог считался верно, в ресурсах задайте для СреднийЧек выражение Сумма(Сумма) / Количество(Различные Документ), а не сумму средних. Чтобы не получить деление на ноль, оберните выражение в ВЫБОР КОГДА Количество(Различные Документ) > 0 ТОГДА ... ИНАЧЕ 0 КОНЕЦ.

Параметры

Параметры &НачалоПериода и &КонецПериода из запроса появятся на вкладке «Параметры» автоматически. Удобная схема для пользователя — один параметр периода вместо двух дат:

  1. Добавьте параметр Период с типом СтандартныйПериод.
  2. Для НачалоПериода в колонке «Выражение» укажите &Период.ДатаНачала, для КонецПериода — &Период.ДатаОкончания.
  3. У параметров НачалоПериода и КонецПериода установите ограничение доступности, чтобы пользователь видел только Период.

ДатаОкончания стандартного периода возвращает конец дня, поэтому документы последнего числа не теряются. Если же вы передаёте простую дату, оберните её в КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ) прямо в запросе.

Настройки и варианты отчета

Без настроек отчет ничего не выведет, даже с правильным запросом. Перейдите на вкладку «Настройки».

  1. В верхнем окне структуры щёлкните правой кнопкой «Отчет» и выберите «Новая группировка». Поле группировки — Менеджер.
  2. Внутри неё добавьте вложенную группировку по полю Контрагент.
  3. Если нужны строки документов, добавьте ещё одну группировку без поля — это «Детальные записи».
  4. На нижних вкладках задайте «Выбранные поля» (ресурс Сумма выберите обязательно), «Отбор», «Сортировку».

Быстрее всего начать с кнопки «Открыть конструктор настроек»: он предложит тип отчета (список, таблица, диаграмма) и соберёт структуру за 4-5 шагов. Потом поправите руками.

Варианты

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

Быстрые и пользовательские настройки

Чтобы бухгалтер мог менять отбор прямо на форме отчета, у элемента отбора или параметра откройте свойства пользовательской настройки и включите «Включать в пользовательские настройки». Режим редактирования «Быстрый доступ» выводит поле в шапку формы, «Обычный» — в окно «Настройки».

Оформление: макеты и внешний вид вывода

Внешний вид результата СКД задаётся тремя способами.

  • 🎨 Условное оформление в настройках варианта. Например, красить строку красным, если Сумма меньше нуля. Задаётся на нижней вкладке «Условное оформление».
  • 🖌️ Макет оформления на вкладке «Другие настройки». Там же заголовок отчета, вывод параметров и отборов, расположение итогов.
  • 📐 Макеты на вкладке «Макеты» схемы. Позволяют заменить стандартный вывод группировки или поля своим фрагментом табличного документа: например, шапку с логотипом и подписями.

Формат чисел и дат задают в свойстве «Оформление» поля набора данных: параметр «Формат», например ЧДЦ=2 для двух знаков после запятой или ДФ=dd.MM.yyyy для даты.

💡 Если отчет должен выглядеть как печатная форма с фиксированными рамками и подписями, СКД со своими макетами быстро становится неудобной. В таком случае проще вывести данные в табличный документ кодом по обычному макету — об этом в следующем разделе.

Программная доработка в модуле объекта

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

Откройте модуль объекта отчета (вкладка «Прочее» → «Модуль объекта») и выберите событие ПриКомпоновкеРезультата:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    ДокументРезультат.Очистить();

    Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    // Пример: если период не задан, берём текущий месяц
    ПараметрПериод = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(
        Новый ПараметрКомпоновкиДанных("Период"));
    Если ПараметрПериод <> Неопределено
        И Не ЗначениеЗаполнено(ПараметрПериод.Значение.ДатаНачала) Тогда
        Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("Период",
            Новый СтандартныйПериод(НачалоМесяца(ТекущаяДатаСеанса()),
                КонецМесяца(ТекущаяДатаСеанса())));
    КонецЕсли;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, ДанныеРасшифровки);

    Процессор = Новый ПроцессорКомпоновкиДанных;
    Процессор.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(Процессор);

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

Обратите внимание на порядок: сначала СтандартнаяОбработка = Ложь, иначе платформа после вашего кода сформирует отчет второй раз своими средствами. Четвёртый параметр Истина в Инициализировать разрешает расшифровку: по двойному щелчку на сумме пользователь откроет документ.

Внешние наборы данных

Если в схеме есть «Набор данных — объект», его имя (например, ТаблицаДанных) передают вторым параметром:

ВнешниеНаборы = Новый Структура("ТаблицаДанных", ТаблицаЗначений);
Процессор.Инициализировать(МакетКомпоновки, ВнешниеНаборы, ДанныеРасшифровки, Истина);

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

Своя форма отчета

Если нужна нестандартная форма (кнопки, свои поля), создайте её на вкладке «Формы» и назначьте основной. В форме обязательно должен остаться реквизит Отчет и элемент табличного документа для результата — иначе отчет не будет формироваться. Для большинства задач стандартной формы хватает.

Публикация отчета и права пользователей

Отчет создан, но пользователи его пока не видят. Нужно три шага.

1. Проверка и обновление конфигурации

  1. Нажмите F7 или Конфигурация → Обновить конфигурацию базы данных. Добавление отчета не меняет структуру таблиц, поэтому обычно оно проходит без монопольного режима (динамическое обновление), но пользователи увидят отчет только после перезапуска сеанса.
  2. Запустите отладку F5, откройте отчет через меню «Все функции» (включается в параметрах: Сервис и настройки → Параметры → Отображать команду «Все функции») и проверьте цифры на коротком периоде.

Перед обновлением рабочей базы сделайте резервную копию (Администрирование → Выгрузить информационную базу в Конфигураторе или копию каталога/бэкап СУБД).

2. Место в интерфейсе

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

В типовых конфигурациях на БСП свои отчеты дополнительно показываются в панели «Отчеты» раздела. Для этого в свойствах отчета обычно указывают «Хранилище вариантов» = ХранилищеВариантовОтчетов, чтобы пользовательские варианты сохранялись так же, как у типовых отчетов.

3. Роль и права доступа

Без отдельной роли отчет увидят только пользователи с полными правами. Для остальных:

  1. В ветке «Общие → Роли» добавьте роль, например ОтчетПродажиПоМенеджерам (в расширении — в самом расширении).
  2. На объекте отчета установите права «Использование» и «Просмотр».
  3. Проверьте, что у пользователей есть право «Чтение» на таблицы из запроса: документ, регистр, справочники. В типовых это обычно уже выдано профилями.
  4. В режиме 1С:Предприятие добавьте роль в профиль группы доступа: Администрирование → Настройки пользователей и прав → Профили групп доступа.
Перед тем как отдать отчет пользователям
Выполнено: 0 / 5

Внешний отчет: как отдать файл

Внешний отчет создают через Файл → Новый → Внешний отчет и сохраняют в файл .erf. Открыть его можно через Файл → Открыть в режиме 1С:Предприятие. Для постоянного доступа в типовых его регистрируют в справочнике дополнительных отчетов (Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки). Для регистрации в модуле внешнего отчета должна быть экспортная функция СведенияОВнешнейОбработке() по требованиям БСП — без неё справочник файл не примет.

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

Если отчет пустой, медленный или считает не то

Ошибки при создании отчета на СКД почти всегда одни и те же. Быстрая диагностика:

Диагностика: выберите симптом

Частые вопросы

Можно ли сделать отчет без СКД?
Да. Создайте отчет без основной схемы, добавьте макет табличного документа и выводите области кодом в форме или модуле. Так делают печатные отчеты с жёсткой версткой, но отборы, варианты и расшифровку придётся писать самому.
Как перенести готовый отчет в другую базу?
Для внешнего отчета достаточно файла .erf. Объект из конфигурации можно сохранить как внешний отчет через контекстное меню объекта в дереве метаданных или перенести через сравнение и объединение конфигураций. Расширение выгружается в файл .cfe.
Почему отчет в расширении пропал после обновления типовой?
Расширение могло отключиться из-за несовместимости, если оно заимствовало объекты, которые изменились в релизе. Откройте Расширения конфигурации, посмотрите сообщения проверки и исправьте заимствованные объекты.
Как сохранить настройки отчета для всех пользователей?
Сделайте отдельный вариант в схеме компоновки в Конфигураторе. Варианты, сохранённые пользователем в режиме 1С:Предприятие, хранятся в хранилище вариантов и по умолчанию видны только ему, если он не открыл к ним доступ.
Можно ли вывести в отчет диаграмму?
Да. В структуре настроек вместо группировки добавьте элемент «Диаграмма», задайте точки (например, месяц) и серии (менеджер), а ресурс выберите в выбранных полях.