Отчеты и Аналитика · 10 мин
Как создать форму отчета в 1С
Как создать форму отчета в 1С через конструктор и вручную: настройка макета СКД, параметров, отборов и проверка результата. Пошаговая инструкция с примерами.
Форма отчета в 1С — это интерфейс, который пользователь видит при открытии отчета: кнопки, поля периода, отборы и область с результатом. В типовых конфигурациях большинство отчетов собираются на системе компоновки данных (СКД), и форма для них генерируется автоматически. Ручная работа с формой требуется, когда стандартного варианта недостаточно: нужны дополнительные кнопки, нестандартные элементы управления или особая логика перед формированием.
Перед началом важно понимать, что в 1С существует два подхода. Первый — отчет на СКД, где платформа сама рисует форму на основе настроек схемы компоновки. Второй — отчет с произвольной формой, где разработчик создает форму в конфигураторе и программирует формирование результата в модуле. Выбор зависит от задачи: для аналитических отчетов по данным базы почти всегда достаточно СКД, а собственная форма нужна для нестандартного интерактива.
Ниже описан полный цикл: от создания объекта «Отчет» в конфигураторе до проверки результата в режиме предприятия. Инструкция ориентирована на управляемые формы, которые используются в современных конфигурациях (Управление торговлей, ERP, Бухгалтерия 3.0 и других).
Что понадобится перед началом работы
Для создания формы отчета потребуется доступ к конфигуратору 1С и права на изменение конфигурации. Если работа ведется в типовой конфигурации на поддержке, изменения лучше выполнять через расширение конфигурации — это сохранит возможность штатного обновления и не нарушит целостность типового кода.
Также понадобится тестовая база. Никогда не разрабатывайте и не отлаживайте отчеты напрямую в рабочей базе: ошибка в запросе или модуле формы может привести к тяжелым выборкам, блокировкам и падению сеансов пользователей. Порядок безопасной работы: разработка в копии базы, проверка на реальных объемах данных, затем перенос в рабочую среду через выгрузку расширения или обновление конфигурации.
Как создать объект «Отчет» и схему компоновки данных
Откройте конфигуратор, в дереве конфигурации найдите ветку «Отчеты» и добавьте новый объект. Задайте имя и синоним — синоним увидит пользователь в интерфейсе. На закладке «Основные» нажмите кнопку «Открыть схему компоновки данных» — платформа предложит создать новую схему автоматически.
В схеме компоновки на закладке «Наборы данных» добавьте набор данных типа «Запрос» и напишите текст запроса к нужным таблицам. Например, для отчета по продажам это будет запрос к виртуальной таблице оборотов регистра накопления. После этого на закладке «Настройки» определите структуру отчета: группировки строк, выбранные поля и ресурсы.
ВЫБРАТЬ
Продажи.Номенклатура КАК Номенклатура,
СУММА(Продажи.СуммаОборот) КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, , ) КАК Продажи
СГРУППИРОВАТЬ ПО
Продажи.НоменклатураПосле сохранения схемы отчет уже работоспособен: в режиме предприятия платформа автоматически построит форму с кнопкой «Сформировать», настройками и областью результата. Именно этот механизм закрывает большинство потребностей, и создавать форму вручную не требуется.
Когда платформа создает форму автоматически
Автоматически генерируемая форма отчета СКД включает панель быстрых настроек (период, отборы, помеченные как пользовательские), кнопки «Сформировать» и «Настройки», а также табличный документ с результатом. Этого достаточно для стандартных аналитических отчетов: обороты, остатки, динамика показателей, списки с отборами.
Чтобы параметры появились в шапке формы, откройте в схеме компоновки закладку «Параметры» и для нужных параметров установите признак «Включать в пользовательские настройки» с режимом редактирования «Быстрый доступ». То же самое относится к отборам на закладке «Настройки»: элементы отбора, добавленные в пользовательские настройки, отобразятся в форме без единой строки кода.
Как создать собственную форму отчета вручную
Если автоматической формы недостаточно, создайте свою. В конфигураторе откройте объект отчета, перейдите в ветку «Формы» и добавьте новую форму вида «Форма отчета». Мастер предложит выбрать тип формы — оставьте «Форма отчета», чтобы платформа подключила стандартные команды формирования.
В редакторе формы добавьте нужные реквизиты: например, поле «Период», флажки, переключатели или таблицу значений для предварительного просмотра. Разместите элементы на форме перетаскиванием из панели реквизитов, настройте группировку по вертикали и горизонтали. Для команд, которые вы добавляете сами, создайте обработчики в модуле формы с директивой &НаКлиенте или &НаСервере.
- 1Откройте объект «Отчет» в конфигураторе и перейдите в ветку «Формы»
- 2Добавьте форму вида «Форма отчета» через мастер
- 3Создайте реквизиты формы для параметров и результата
- 4Разместите элементы управления и привяжите их к реквизитам
- 5Напишите обработчики команд формирования в модуле формы
- 6Укажите созданную форму как основную в свойствах отчета
- 7Проверьте работу в режиме предприятия на тестовой базе
После создания формы откройте свойства отчета и укажите её в поле «Основная форма отчета». Без этого шага платформа продолжит использовать автоматическую форму, и ваша разработка не появится у пользователей.
Программное формирование результата в модуле формы
Для отчета с собственной формой логику формирования обычно размещают в обработчике команды. Если отчет использует СКД, результат можно сформировать программно: получить схему, применить настройки, выполнить компоновку и вывести результат в реквизит формы типа «Табличный документ».
&НаСервере
Процедура СформироватьНаСервере()
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
Схема = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Компоновщик = Новый КомпоновщикНастроекКомпоновкиДанных;
Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема));
Компоновщик.ЗагрузитьНастройки(Схема.НастройкиПоУмолчанию);
КонецПроцедурыТяжелые операции — компоновку результата и запросы к базе — выполняйте в серверных процедурах. Клиентская часть должна только вызывать серверный метод и обновлять отображение. Для длительных формирований в конфигурациях на БСП используйте механизм длительных операций, чтобы форма не «зависала» и пользователь видел индикатор выполнения.
Проверка результата и типичные ошибки
После создания формы обновите конфигурацию базы данных (клавиша F7 в конфигураторе) и запустите режим предприятия. Откройте отчет, задайте параметры и сформируйте результат. Проверьте три вещи: форма открывается без ошибок, параметры корректно передаются в запрос, результат соответствует данным базы — сверьте пару цифр с исходными документами или стандартным отчетом.
Как проверить результат
Форма открывается за 1–2 секунды без сообщений об ошибках
Ошибка компиляции модуля или пустое окно
Данные в результате соответствуют выбранному периоду и отборам
Результат не меняется при смене параметров
Отчет по типовому периоду формируется за приемлемое время без блокировок
Формирование занимает минуты, у пользователей возникают ошибки ожидания
Альтернатива: внешний отчет без изменения конфигурации
Если нет возможности менять конфигурацию, создайте внешний отчет — файл с расширением .erf. В конфигураторе выберите «Файл — Новый — Внешний отчет» и повторите те же шаги со схемой компоновки и формой. Внешний отчет открывается в режиме предприятия через «Файл — Открыть» или подключается к справочнику «Дополнительные отчеты и обработки», если в конфигурации есть БСП.
Внешние отчеты удобны для доработок под конкретного заказчика: они не требуют обновления конфигурации, легко переносятся между базами и не влияют на поддержку типового решения. Ограничение — внешний отчет не может использовать общие модули конфигурации, которые не отмечены как доступные для внешних соединений, поэтому всю логику приходится держать в собственном модуле объекта.
Сравнение вариантов
Подходит для стандартных аналитических отчетов; не требует программирования, но ограничена типовыми элементами
Нужна для нестандартных элементов и логики; требует разработки и поддержки модуля формы
Подходит при запрете изменения конфигурации; ограничен в доступе к общим механизмам конфигурации
Что важно запомнить
Для большинства задач форму отчета создает сама платформа на основе схемы компоновки данных — достаточно настроить запрос, параметры и пользовательские настройки. Собственная форма оправдана только при нестандартных требованиях, а доработки безопаснее выполнять в расширении или внешнем отчете на тестовой базе.
Частые вопросы
Можно ли создать форму отчета без программирования?
Да. Если отчет построен на СКД, платформа автоматически генерирует форму с кнопкой «Сформировать», периодом и отборами. Достаточно создать схему компоновки, написать запрос и вынести параметры в пользовательские настройки — код писать не потребуется.
Почему созданная форма не открывается у пользователей?
Наиболее частая причина — форма не указана как основная в свойствах отчета, либо конфигурация базы данных не обновлена после изменений. Также проверьте права доступа: у роли пользователя должно быть право «Просмотр» на объект отчета.
Как добавить поле периода в форму отчета?
В отчете на СКД откройте схему компоновки, на закладке «Параметры» найдите параметры начала и конца периода и включите их в пользовательские настройки с быстрым доступом. Платформа сама разместит поля в шапке автоматической формы.
Чем отличается форма отчета от формы настроек?
Форма отчета — это основной экран с результатом и быстрыми параметрами. Форма настроек открывается по кнопке «Настройки» и содержит полный редактор структуры отчета: группировки, отборы, условное оформление. Обе генерируются платформой, но заменяются независимо друг от друга.
Можно ли изменить форму типового отчета, не снимая конфигурацию с поддержки?
Да, через расширение конфигурации. Создайте расширение, заимствуйте в него нужный отчет и добавьте собственную форму либо переопределите обработчики существующей. Типовая конфигурация при этом остается на полной поддержке и обновляется штатно.
Отчет формируется очень долго — в чем причина?
Чаще всего виноват запрос без ограничения периода или без использования индексированных полей в отборе. Проверьте текст запроса в схеме компоновки, убедитесь, что виртуальные таблицы регистров вызываются с параметрами периода, и протестируйте формирование на копии базы с замером времени.