Отчёт на СКД без Конфигуратора: работа в консоли отчётов 1С 8.3

· 10 мин

Содержание

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

Типичная ситуация: главбух просит «быстро посмотреть остатки по 41-му счёту в разрезе складов с отбором по поставщику», а типового отчёта с таким разрезом нет. Через консоль отчётов такую выборку собирают за 10–15 минут, проверяют на живых данных и потом, если отчёт нужен постоянно, переносят во внешний отчёт.

Где взять консоль отчётов и как открыть её в базе

В типовых конфигурациях консоли нет: её добавляют отдельным файлом. Источники такие:

  • 📦 набор стандартных обработок для разработчика, который распространяется вместе с материалами по платформе 8.3;
  • 🧰 сторонние консоли компоновки от сообщества разработчиков — у них больше функций (просмотр макета, вывод в дерево), но проверяйте файл перед запуском в рабочей базе;
  • 🗂 собственная копия, которую ведёт ваш программист.

Выбирайте вариант на управляемых формах. Консоль на обычных формах откроется только в толстом клиенте, а БП 3.0, ЗУП 3.1 и УТ 11 обычно работают в тонком клиенте или веб-клиенте.

Порядок запуска:

  1. Скопируйте файл консоли в локальную папку, например C:\1C\Tools\.
  2. В базе откройте Главное меню (кнопка с тремя полосками в левом верхнем углу) → Файл → Открыть.
  3. Укажите файл .epf.
  4. Платформа покажет предупреждение о безопасности внешней обработки. Подтвердите открытие, если доверяете файлу.

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

Какие права нужны

Чтобы открыть внешний файл, у пользователя должно быть право на интерактивное открытие внешних отчётов и обработок. В БП 3.0, ЗУП 3.1 и УТ 11 его дают через профиль групп доступа, а у пользователя с ролью «Полные права» оно есть всегда.

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

Первый отчёт в консоли: запрос, поля и структура

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

Минимальный рабочий отчёт собирается так:

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

Пример запроса по остаткам товаров в БП 3.0 через регистр бухгалтерии :

ВЫБРАТЬ
    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
    ХозрасчетныйОстатки.Субконто2 КАК Склад,
    ХозрасчетныйОстатки.КоличествоОстатокДт КАК Количество,
    ХозрасчетныйОстатки.СуммаОстатокДт КАК Сумма
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(
        &ДатаОстатков,
        Счет В ИЕРАРХИИ (&Счет41), ,
    ) КАК ХозрасчетныйОстатки

Порядок субконто на счёте 41 зависит от настроек учёта, поэтому проверьте его в плане счетов своей базы, прежде чем называть поля.

Поля Количество и Сумма сразу отметьте на вкладке «Ресурсы». Тогда в группировках по складу и номенклатуре появятся итоги, а не пустые строки.

Параметры и настройки варианта отчёта

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

Что настраивать в первую очередь:

ЧтоГде в консолиЗачем
Тип и значение параметравкладка «Параметры»без значения отчёт не сформируется
Периодпараметр типа «Стандартный период»пользователь выбирает «Этот месяц», «Квартал» и т. п.
Группировкинастройки → «Структура»строки и колонки отчёта
Отборынастройки → «Отбор»ограничение данных без правки запроса
Условное оформлениенастройки → «Условное оформление»подсветка отрицательных остатков, крупных сумм
Быстрые настройкифлажок «Включать в пользовательские настройки»поле выводится в шапку отчёта

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

Несколько вариантов одного отчёта

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

Так удобно отлаживать: вы меняете запрос один раз и сразу проверяете все разрезы. При переносе во внешний отчёт варианты переедут вместе со схемой.

Как разобрать структуру данных и запрос, который строит СКД

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

Как увидеть итоговый запрос:

  1. Откройте внешний отчёт или обработку в Конфигураторе и запустите отладку (Отладка → Начать отладку).
  2. В коде, который формирует отчёт, поставьте точку останова после строки с КомпоновщикМакета.Выполнить(...).
  3. В табло откройте переменную макета компоновки, раскройте НаборыДанных → первый набор → свойство Запрос.

Это и есть текст, который уходит в базу. Его можно скопировать в консоль запросов и прогнать отдельно с теми же параметрами.

Что ещё проверить при разборе структуры:

  • 🔗 Связи наборов данных. Связь работает как левое соединение от первого набора. Если основной набор указан не тот, строки пропадут.
  • 🧮 Вычисляемые поля. Выражение считается после получения данных, поэтому отбор по такому полю не ускоряет запрос.
  • 📊 Ресурсы. Функция агрегирования задана в ресурсе. Сумма вместо среднего по цене — частая причина неверных итогов.
  • 🧩 Роли полей на вкладке набора данных: для остатков и периодов роль влияет на расчёт итогов по группировкам.

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

Отладка макетов и вывода в табличный документ

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

Типичные проблемы с макетами:

  • 🎨 макет привязан к группировке, а в структуре настроек у этой группировки другое имя — макет молча не применяется;
  • 📐 в макете используется параметр, который не заполнен выражением, — ячейка выводится пустой;
  • 🔤 оформление из условного оформления перекрывает оформление макета, и кажется, что макет «не работает ».

Для проверки данных без оформления выведите результат не в табличный документ, а в таблицу значений. Так видно, какие строки и колонки реально пришли:

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновки, Настройки, , ,
    Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));

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

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

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

Расшифровка

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

Ошибки при запуске консоли отчётов и логирование

Ошибки делятся на две группы: консоль не открывается вовсе или открывается, но отчёт не формируется.

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

Подробный текст ошибки СКД показывает в окне сообщения: там есть имя поля или параметра. Читайте его целиком, а не только первую строку.

Как вести лог при отладке

Если отчёт формируется кодом во внешнем отчёте, оберните формирование в Попытка ... Исключение и пишите ошибку в журнал регистрации:

Попытка
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
Исключение
    ЗаписьЖурналаРегистрации("ВнешнийОтчет.ОстаткиПоСкладам",
        УровеньЖурналаРегистрации.Ошибка, , ,
        ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()));
    ВызватьИсключение;
КонецПопытки;

Записи ищут в журнале регистрации (в БП 3.0 он в разделе Администрирование → Обслуживание) с отбором по событию ВнешнийОтчет.ОстаткиПоСкладам. Своё имя события сильно упрощает поиск среди тысяч служебных записей.

Для медленных отчётов в клиент-серверной базе подключают технологический журнал с событиями обращений к СУБД. Его настраивает администратор сервера, и включать его надолго не стоит: файлы журнала быстро растут.

Из консоли во внешний отчёт: перенос и подключение

Консоль хороша для разработки и разовых выборок. Если отчёт нужен бухгалтеру каждый месяц, его переносят во внешний отчёт (.erf), чтобы человек не возился с конструктором.

Порядок переноса:

  1. В Конфигураторе создайте внешний отчёт: Файл → Новый → Внешний отчет.
  2. В свойствах отчёта откройте основную схему компоновки данных — платформа создаст пустую схему.
  3. Перенесите в неё схему из консоли. Большинство консолей умеют сохранять схему в файл, а редактор схемы в Конфигураторе загружает её из файла; если консоль так не умеет, скопируйте текст запроса, затем повторите параметры, ресурсы и вариант настроек вручную.
  4. Сохраните файл .erf и проверьте его через Файл → Открыть в пользовательском режиме.

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

Подключение в типовой конфигурации

В БП 3.0, ЗУП 3.1 и УТ 11 внешние отчёты регистрируют в справочнике дополнительных отчётов: Администрирование → Печатные формы, отчеты и обработки → Дополнительные отчеты и обработки. Сначала включите на этой же странице флажок дополнительных отчётов и обработок.

Чтобы файл принялся в справочник, в модуле объекта отчёта должна быть экспортная функция СведенияОВнешнейОбработке(). Она сообщает вид (дополнительный отчёт), версию, имя и команды. Без неё программа откажется регистрировать файл, хотя через Файл → Открыть он запускается нормально.

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

Регистрируйте в рабочей базе только отчёты, которые прошли проверку на копии. Дополнительный отчёт выполняется с правами пользователя, но код в нём может делать что угодно, в том числе записывать данные.

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

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