Свой отчет в 1С 8.3: от запроса до готовой печатной формы

· 9 мин

Содержание

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

Нужны два условия. Первое: вы понимаете, из каких таблиц брать данные (документы, справочники, регистры). Второе: у вас есть доступ в Конфигуратор с правом изменять отчеты. Ниже весь путь на живом примере: отчет по реализациям с итогами по контрагентам и выбором периода.

Что понадобится до начала работы

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

ВариантКогда подходитМинус
Внешний отчет (файл .erf)Нужен быстрый эксперимент или отчет для одной базыНужно подключать к каждой базе отдельно
Отчет в расширенииТиповая конфигурация на поддержкеНужен вход в Конфигуратор под администратором
Отчет в самой конфигурацииСвоя разработка или снятая с поддержки конфигурацияУсложняет обновление типовых релизов

Для первого раза берите внешний отчет . Он ничего не ломает в рабочей базе, а перенести его потом в расширение несложно.

Перед стартом проверьте три вещи:

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

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

Шаг 1. Создайте объект «Отчет» и подключите схему

В Конфигураторе выберите Файл → Новый → Внешний отчет. Если работаете в конфигурации или расширении, найдите в дереве ветку «Отчеты», нажмите правой кнопкой и выберите «Добавить».

Дайте отчету имя без пробелов, например ОтчетРеализацииПоКонтрагентам. В поле «Синоним» напишите нормальное название, которое увидит пользователь: «Реализации по контрагентам».

Затем создайте основную схему компоновки данных:

  1. В окне отчета откройте закладку «Данные».
  2. Нажмите кнопку «Открыть схему компоновки данных» рядом со строкой «Основная схема компоновки данных». Если схемы нет, система предложит её создать.
  3. В диалоге оставьте предложенный вариант макета и нажмите «Готово».

Откроется редактор схемы с закладками: «Наборы данных», «Связи наборов данных», «Вычисляемые поля», «Ресурсы», «Параметры», «Макеты», «Настройки».

Шаг 2. Опишите набор данных запросом

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

Откройте «Конструктор запроса» или пишите текст руками. На учебном примере запрос такой:

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

Названия документов и реквизитов зависят от конфигурации. Реализация товаров и услуг с реквизитом СуммаДокумента есть в типовых Бухгалтерии и Управлении торговлей, но в вашей базе они могут называться иначе. Проверьте по дереву метаданных.

После нажатия «ОК» система предложит заполнить поля набора. Согласитесь: она разберет запрос и создаст поля Контрагент, Документ, Дата, Сумма.

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

Не вставляйте в запрос чужие значения подстановкой в текст. Всё, что пользователь будет менять, выносите в параметры с &. Так запрос быстрее и безопаснее.

Шаг 3. Настройте поля, ресурсы и группировки

Поля есть, но отчет пока не знает, что суммировать. Перейдите на закладку «Ресурсы» и добавьте поле Сумма с выражением Сумма(Сумма). Теперь по любой группировке система будет считать итоги сама.

Дальше поля и их роли. На закладке «Наборы данных» у каждого поля есть признаки:

  • 🔹 «Ограничение поля» — запрещает пользователю выводить поле в отчет или использовать в отборе.
  • 🔹 «Роль» — например, периодичность или измерение. Для простого отчета не нужна.
  • 🔹 «Выражение представления» — что показывать вместо значения, если в нем ссылка или число с лишними разрядами.

Хотите отдельную колонку, которой нет в запросе? Используйте «Вычисляемые поля». Например, НДС с выражением Сумма * 20 / 120 для сумм с НДС. Пересчитайте на примере: сумма 12 000, НДС выходит 2 000. Если ставка в документе другая, выражение придется менять.

Теперь структура. Переходите на закладку «Настройки» и добавляйте группировки:

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

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

Шаг 4. Добавьте отборы и параметры, которые видит пользователь

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

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

Для отбора по контрагенту:

  1. Закладка «Настройки» → вложенная закладка «Отбор».
  2. Добавьте поле Контрагент, вид сравнения «Равно».
  3. У строки отбора поставьте «Режим редактирования → Быстрый доступ», тогда отбор будет сразу виден на форме отчета, без захода в настройки.

Ещё несколько приемов, которые экономят время:

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

Если у отбора нет значения, строку отбора платформа пропускает. Пользователю не нужно удалять пустые условия.

Шаг 5. Оформите результат, чтобы его хотелось открывать

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

Порядок. Закладка «Порядок» — по какому полю сортировать. Для нашего отчета: контрагент по возрастанию, сумма по убыванию. Тогда крупные реализации идут выше.

Условное оформление. Закладка «Условное оформление» → добавьте правило: если Сумма больше 500 000, красить строку в светлый цвет и выделять шрифт полужирным. Условие и цвет задаются в самой строке, код писать не нужно.

Другие настройки. Там находятся расположение итогов («Итоги по группировкам», «Общие итоги»), размещение заголовков полей и тип вывода: таблица или диаграмма. Диаграмма подходит, если вы сравниваете 5-10 значений, а не 300.

Для более тонкой подстройки (например, чтобы в шапке таблицы отображалась организация и период) создайте на закладке «Макеты» свой макет. Это отдельная тема, для базового отчета не нужная.

Шаг 6. Проверьте отчет в работе и откройте пользователям

Закройте редактор схемы и запустите отчет: в Конфигураторе Отладка → Начать отладку (клавиша F5) или сохраните внешний отчет в файл и откройте через Файл → Открыть в обычном клиенте.

Что проверить перед тем, как показывать коллегам:

  • ✅ Итог по одному контрагенту совпал с тем, что вы видите в его карточке или в журнале документов.
  • ✅ Отчет показывает только проведенные документы, если вы так задумали.
  • ✅ Последний день периода попал в выборку.
  • ✅ Отбор по контрагенту, когда он пуст, не обнуляет отчет.
  • ✅ Отчет формируется за период в год и не «подвисает».

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

Перед выдачей отчета пользователям
Выполнено: 0 / 5

Как ускорить формирование и не нагрузить базу

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

  1. Фильтруйте в запросе, а не в отборе схемы. Условие по периоду стоит в ГДЕ, тогда в память попадают только нужные строки.
  2. Берите только нужные поля. Если вывод не использует Комментарий, не тащите его из запроса.
  3. Используйте виртуальные таблицы с параметрами. Для регистров лучше РегистрНакопления.Продажи.Обороты(&Начало, &Конец, ...), чем читать всю таблицу и отбирать вручную.
  4. Не вызывайте в запросе вложенные подзапросы там, где хватит соединения. Подзапрос, выполняемый для каждой строки, на большой таблице растянет отчет на минуты.
  5. Ограничьте глубину. Группировка по трем-четырем полям на миллион строк потребует много памяти. Если нужна детализация, пусть пользователь раскрывает группировку, а не получает всё сразу.

Для диагностики полезны два инструмента: консоль запросов (внешняя обработка, где запрос запускается отдельно от отчета и видно время) и технологический журнал платформы, если нужна статистика по событиям. Начинайте с консоли запросов: она проще.

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

Когда СКД не хватает и что делать

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

  • 🔸 Нужен сложный расчет по нескольким источникам, который нельзя выразить запросом.
  • 🔸 Нужно вывести данные в нестандартной форме, например в бланке с жёсткой разметкой.
  • 🔸 Отчет должен менять свою настройку по действиям пользователя на форме.

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

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

Типичные сбои при первом запуске

Три ошибки встречаются у новичков чаще остальных.

  • ❗ «Поле не найдено» при формировании. Вы переименовали псевдоним в запросе, а в настройках остался старый. Обновите список полей набора данных и заново выберите поля в настройках.
  • ❗ Итоги не считаются. В ресурсах нет выражения для поля или оно задано для другой группировки. Откройте закладку «Ресурсы» и проверьте, что для поля Сумма указана функция Сумма.
  • ❗ Документы дублируются. Вы соединили документ с табличной частью, а суммируете реквизит шапки. Каждая строка товаров повторяет сумму документа. Либо берите сумму из табличной части, либо не соединяйте её.

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

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

Можно ли сделать отчет без программирования?
Да. Для отчета на СКД нужно описать запрос в конструкторе и настроить поля. Код на встроенном языке не нужен, если нет сложной логики.
Чем внешний отчет отличается от встроенного в конфигурацию?
Внешний хранится в файле .erf и подключается к базе отдельно. Встроенный лежит в самой конфигурации и обновляется вместе с ней.
Почему отчет показывает пустую таблицу?
Чаще всего причина в отборе или параметрах: период по умолчанию не задан, а условие МЕЖДУ не находит записей. Проверьте значения параметров и условие Проведен в запросе.
Как сохранить настройки отчета для себя?
В форме отчета нажмите «Настройки», измените колонки и отборы и сохраните вариант отчета. Он появится в списке вариантов для вашей учётной записи.
Нужно ли знать язык запросов?
Для простых отчетов хватит конструктора запроса, он собирает текст по выбранным таблицам и полям. Для условий и соединений знание языка запросов сильно ускорит работу.