Создание собственных отчетов в 1С:Предприятие — задача, с которой рано или поздно сталкивается каждый пользователь системы. Стандартные формы не всегда покрывают специфические потребности бизнеса: может понадобиться уникальная группировка данных, нестандартные расчеты или особая визуализация. К счастью, платформа 1С предоставляет гибкие инструменты для разработки кастомизированных отчетов — как через конструктор для новичков, так и с помощью встроенного языка программирования для опытных пользователей.
Эта статья поможет разобраться в процессе с нуля: от выбора подходящего типа отчета до тонкостей настройки системы компоновки данных (СКД). Мы рассмотрим базовые сценарии (например, создание простого отчета по остаткам товаров) и более сложные задачи (динамические параметры, программная обработка результатов). Особое внимание уделим типичным ошибкам, которые допускают начинающие, и способам их избежать. Если вы никогда не работали с конструктором отчетов — не беспокойтесь: первые шаги максимально детализированы.
Важно понимать, что подход к созданию отчета зависит от версии платформы (1С:Предприятие 8.3 или 1С:Предприятие 8.2) и конкретной конфигурации (например, 1С:Бухгалтерия, 1С:Управление торговлей или 1С:Зарплата и управление персоналом). Некоторые функции могут отсутствовать в базовых редакциях. Если вы работаете с облачной версией 1С:Fresh, учтите ограничения на изменение конфигурации.
1. Подготовка: что нужно знать перед созданием отчета
Прежде чем приступать к разработке, определитесь с ключевыми параметрами будущего отчета:
- 📊 Цель отчета: для чего он нужен? (например, анализ продаж, инвентаризация, налоговая отчетность)
- 📌 Источники данных: какие документы, справочники или регистры будут задействованы?
- 🔍 Критерии отбора: нужны ли фильтры по периодам, организациям, номенклатуре?
- 📈 Формат вывода: таблица, диаграмма, сводная форма или комбинированный вариант?
Если вы не программист, начните с конструктора отчетов — он доступен в большинстве типовых конфигураций через меню Отчеты → Создать отчет. Для сложных задач (например, расчетов с использованием временных таблиц или внешних данных) потребуется встроенный язык 1С и система компоновки данных (СКД). Опытные пользователи часто комбинируют оба подхода: создают основу в конструкторе, а затем дорабатывают кодом.
Обратите внимание на права доступа: для создания новых отчетов в конфигураторе нужны полные права (режим Конфигуратор). Если вы работаете в пользовательском режиме (1С:Предприятие), возможности будут ограничены стандартными механизмами. В облачных версиях (например, 1С:Fresh) редактирование конфигурации часто заблокировано — уточните это у администратора.
⚠️ Внимание: Перед внесением изменений в конфигурацию сделайте резервную копию базы данных. Это особенно критично, если вы работаете с рабочей версией, используемой несколькими пользователями. В 1С:Предприятие 8.3 резервное копирование доступно через Администрирование → Обслуживание → Резервное копирование и восстановление.
2. Способы создания отчета: от конструктора до программирования
В 1С есть три основных способа создать отчет. Выбор зависит от ваших навыков и требований к функциональности:
| Способ | Сложность | Когда использовать | Ограничения |
|---|---|---|---|
| Конструктор отчетов (визуальный редактор) | Низкая | Простые отчеты по стандартным данным (остатки, обороты, продажи) | Ограниченные возможности настройки, нет сложных расчетов |
| Система компоновки данных (СКД) | Средняя | Сложные отчеты с группировками, отборами, динамическими параметрами | Требует понимания структуры данных, но не обязательно знания программирования |
| Программирование на встроенном языке | Высокая | Уникальные отчеты с нестандартной логикой, интеграция с внешними системами | Требует знания синтаксиса 1С, ошибки могут привести к сбоям |
Для новичков оптимальный вариант — начать с конструктора отчетов. Он доступен в большинстве конфигураций через меню Отчеты → Создать отчет или Все функции → Отчеты. Например, в 1С:Бухгалтерия 3.0 путь будет таким: Отчеты → Создать → Новый отчет. Конструктор позволяет:
- 📋 Выбирать источники данных (документы, справочники, регистры)
- 🔄 Настраивать группировки и сортировки
- 📊 Добавлять простые вычисляемые поля (например, сумму или среднее значение)
- 🖼️ Выбирать формат вывода (таблица, диаграмма, текст)
Если стандартных возможностей конструктора недостаточно, переходите к Системе компоновки данных (СКД). Она встроена в платформу 1С:Предприятие 8.3 и позволяет гибко настраивать:
- 🔗 Множественные связи между данными
- 📅 Динамические параметры (например, выбор периода прямо при формировании отчета)
- 📊 Сложные вычисляемые поля с формулами
- 🖥️ Условное оформление (цветовая маркировка строк по условиям)
Для работы с СКД не обязательно быть программистом, но потребуется понимать структуру метаданных вашей конфигурации. Например, чтобы создать отчет по остаткам товаров, нужно знать, какие регистры накопления хранят эту информацию (обычно это ТоварыНаСкладах или ОстаткиТоваров).
Если вы не уверены, какие данные нужны для отчета, сначала сформируйте стандартный отчет из типовой конфигурации (например, "Ведомость по товарам") и посмотрите, какие таблицы и поля он использует. Это поможет сориентироваться в структуре.
3. Пошаговая инструкция: создаем простой отчет в конструкторе
Рассмотрим процесс на примере создания отчета по остаткам товаров в 1С:Управление торговлей 11. Этот сценарий подойдет и для других конфигураций (например, 1С:Бухгалтерия или 1С:ERP) с минимальными корректировками.
Шаг 1. Запуск конструктора отчетов
Откройте программу в режиме 1С:Предприятие и перейдите в раздел Отчеты. Выберите Создать отчет (в некоторых конфигурациях пункт может называться Новый отчет или Конструктор отчетов). Если такого пункта нет, проверьте права доступа или используйте путь Все функции → Отчеты.
Шаг 2. Выбор источника данных
В открывшемся окне конструктора:
- Нажмите
Добавить набор данных. - В качестве типа выберите
Регистр накопления. - Укажите регистр
ТоварыНаСкладах(или аналогичный в вашей конфигурации). - Нажмите
ОКи дождитесь загрузки структуры данных.
Шаг 3. Настройка полей и группировок
В разделе Поля отметьте галочками необходимые колонки:
- 📦
Номенклатура(наименование товара) - 🏠
Склад(место хранения) - 📊
КоличествоОстаток(текущий остаток) - 💰
СуммаОстаток(стоимостной остаток)
Для группировки данных по складам перетащите поле Склад в раздел Группировки. Чтобы добавить сортировку по наименованию товара, перетащите Номенклатура в раздел Сортировка.
Шаг 4. Настройка отбора
Если нужно ограничить данные по дате или другим критериям:
- Перейдите на вкладку
Отбор. - Добавьте условие, например,
Периодс операторомв диапазоне. - Укажите начальную и конечную даты (можно оставить пустыми, чтобы отчет формировался за весь период).
Шаг 5. Сохранение и формирование отчета
Нажмите Готово или Сформировать, чтобы увидеть результат. Если отчет соответствует ожиданиям, сохраните его через Файл → Сохранить как. Укажите имя (например, ОстаткиТоваровПоСкладам) и выберите папку для хранения (обычно это Отчеты или Общие отчеты).
☑️ Проверка перед сохранением отчета
4. Работа с системой компоновки данных (СКД): расширенные возможности
Если конструктор отчетов не покрывает ваши потребности, переходите к Системе компоновки данных (СКД). Она позволяет создавать отчеты с динамическими параметрами, сложными группировками и вычисляемыми полями. Рассмотрим ключевые этапы работы с СКД на примере отчета по продажам с детализацией по менеджерам.
Шаг 1. Создание нового отчета через СКД
В конфигураторе (1С:Предприятие в режиме Конфигуратор):
- Откройте дерево метаданных и найдите ветку
Отчеты. - Щелкните правой кнопкой и выберите
Добавить → Отчет. - Укажите имя отчета (например,
АнализПродажПоМенеджерам). - В свойствах отчета выберите
Использовать систему компоновки данных.
Шаг 2. Настройка схемы компоновки данных
В открывшемся редакторе СКД:
- 📝 Добавьте набор данных: выберите
Запроси напишите SQL-подобный запрос к базе. Например, для анализа продаж:
ВЫБРАТЬ
Продажи.Менеджер КАК Менеджер,
Продажи.Дата КАК Дата,
Продажи.Номенклатура КАК Номенклатура,
Продажи.Количество КАК Количество,
Продажи.Сумма КАК Сумма
ИЗ
Документ.РеализацияТоваровУслуг КАК Продажи
- 🔧 Настройте параметры: добавьте динамические параметры для фильтрации (например,
ПериодилиМенеджер). - 📊 Определите структуру отчета: в разделе
Настройкинастройте группировки (по менеджерам и датам), сортировки и вычисляемые поля (например,СреднийЧек = Сумма / Количество).
Шаг 3. Добавляем условное оформление
Чтобы выделить важные данные (например, продажи выше среднего), используйте условное оформление:
- Перейдите на вкладку
Оформление. - Добавьте новое правило (например,
Если Сумма > 100000, то фон ячейки — зеленый). - Настройте цвета, шрифты и другие визуальные параметры.
Шаг 4. Тестирование и сохранение
Перед сохранением:
- 🧪 Протестируйте отчет с разными параметрами (например, за разные периоды).
- 🔍 Проверьте корректность расчетов (особенно вычисляемых полей).
- 💾 Сохраните схему компоновки данных и опубликуйте отчет для пользователей.
⚠️ Внимание: При работе с СКД избегайте слишком сложных запросов с множеством соединений таблиц. Это может значительно замедлить формирование отчета, особенно в больших базах данных. Если отчет формируется дольше 1-2 минут, оптимизируйте запрос или разбейте его на несколько более простых.
Как ускорить медленный отчет в СКД?
1. Проверьте индексы в базе данных — добавьте индексы на поля, используемые в условиях отбора.
2. Разбейте сложный запрос на несколько простых, используя временные таблицы.
3. Ограничьте период данных (например, вместо "за весь период" берите последние 12 месяцев).
4. Отключите ненужные группировки и вычисляемые поля на время тестирования.
5. Программирование отчетов: когда без кода не обойтись
В некоторых случаях стандартных средств СКД недостаточно. Например, если нужно:
- 🔄 Интегрировать данные из внешних источников (Excel, API, другие базы).
- 📈 Строить нестандартные графики или дашборды.
- 🤖 Автоматизировать отправку отчетов по расписанию (например, на email).
- 🔗 Создавать отчеты с уникальной бизнес-логикой (например, расчет KPI по сложным формулам).
В таких случаях придется писать код на встроенном языке 1С. Рассмотрим базовый пример: отчет по дебиторской задолженности с цветовой маркировкой просроченных платежей.
Пример кода для обработки данных:
Процедура СформироватьОтчет()
// Создаем запрос к регистру расчетов
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасчетыПокупателей.Контрагент КАК Контрагент,
| РасчетыПокупателей.ДатаОплаты КАК ДатаОплаты,
| РасчетыПокупателей.Сумма КАК Сумма,
| РасчетыПокупателей.ДниПросрочки КАК ДниПросрочки
|ИЗ
| РегистрРасчетов.РасчетыСПокупателями КАК РасчетыПокупателей
|ГДЕ
| РасчетыПокупателей.Сумма > 0";
// Выполняем запрос
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
// Формируем таблицу значений для вывода
ТаблицаРезультатов = Новый ТаблицаЗначений;
ТаблицаРезультатов.Колонки.Добавить("Контрагент");
ТаблицаРезультатов.Колонки.Добавить("Сумма");
ТаблицаРезультатов.Колонки.Добавить("ДниПросрочки");
ТаблицаРезультатов.Колонки.Добавить("Цвет");
// Обрабатываем данные и добавляем условное оформление
Пока Выборка.Следующий() Цикл
НоваяСтрока = ТаблицаРезультатов.Добавить();
НоваяСтрока.Контрагент = Выборка.Контрагент;
НоваяСтрока.Сумма = Выборка.Сумма;
НоваяСтрока.ДниПросрочки = Выборка.ДниПросрочки;
// Маркируем просроченные платежи
Если Выборка.ДниПросрочки > 30 Тогда
НоваяСтрока.Цвет = Новый Цвет(255, 100, 100); // Красный
ИначеЕсли Выборка.ДниПросрочки > 10 Тогда
НоваяСтрока.Цвет = Новый Цвет(255, 255, 100); // Желтый
Иначе
НоваяСтрока.Цвет = Новый Цвет(150, 255, 150); // Зеленый
КонецЕсли;
КонецЦикла;
// Выводим результат в табличный документ
ТабличныйДокумент = Новый ТабличныйДокумент;
Макет = Новый Макет("МакетОтчета");
Область = Макет.ПолучитьОбласть("Шапка");
ТабличныйДокумент.Вывести(Область);
// Выводим данные
Для Каждого Строка Из ТаблицаРезультатов Цикл
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Заполнить(Строка);
ТабличныйДокумент.Вывести(Область, Строка.Цвет);
КонецЦикла;
// Показываем пользователю
ТабличныйДокумент.Показать();
КонецПроцедуры
Этот код:
- Формирует запрос к регистру расчетов с покупателями.
- Добавляет данные в таблицу значений с условной раскраской.
- Выводит результат в табличный документ с цветовым оформлением.
Критичный момент: при программировании отчетов всегда проверяйте производительность кода на больших объемах данных. Запросы с вложенными циклами или рекурсией могут "подвесить" базу. Используйте Объект.Запрос.ВыполнитьПакетом() для пакетной обработки данных.
Программирование отчетов в 1С требует знания встроенного языка, но дает максимальную гибкость. Начните с простых примеров (например, вывод данных из справочника), затем переходите к сложным расчетам и интеграциям.
6. Типичные ошибки и как их избежать
Даже опытные пользователи 1С иногда сталкиваются с проблемами при создании отчетов. Вот наиболее распространенные ошибки и способы их решения:
| Ошибка | Причина | Как исправить |
|---|---|---|
| Отчет формируется слишком долго | Слишком сложный запрос или отсутствие индексов | Оптимизируйте запрос, добавьте индексы на поля отбора, разбейте на подзапросы |
| Данные в отчете неактуальные | Не указан или неверно задан период | Проверьте настройки отбора по дате, используйте ТекущаяДата() для динамического периода |
| Отсутствуют нужные поля в выводе | Поля не добавлены в набор данных или скрыты в настройках | Проверьте состав полей в запросе и настройки видимости в СКД |
| Ошибка "Поле не найдено" | Опечатка в имени поля или изменена структура метаданных | Сверьте названия полей с метаданными, обновляйте отчеты после изменений конфигурации |
| Отчет не сохраняется | Недостаточно прав или неверный путь сохранения | Проверьте права доступа, сохраняйте в раздел Общие отчеты или личную папку |
Одна из самых коварных ошибок — несовпадение типов данных. Например, если в запросе вы пытаетесь сложить поле типа Строка с полем Число, 1С не выдаст ошибку, но результат будет некорректным. Всегда проверяйте типы полей в метаданных (через Конфигуратор → Метаданные).
Еще одна частая проблема — неверные связи между таблицами в запросах. Например, если вы объединяете документы РеализацияТоваровУслуг и ПоступлениеТоваровУслуг по полю Номенклатура, но не учитываете организацию или склад, данные могут дублироваться. Всегда проверяйте связи на уникальность.
⚠️ Внимание: Если вы изменяете структуру отчета, который уже используется другими пользователями, обязательно протестируйте его в тестовой базе перед обновлением рабочей версии. Это особенно важно для отчетов, задействованных в регламентных задачах (например, автоматическая отправка отчетности в ФНС).
7. Продвинутые техники: динамические параметры и внешние отчеты
Для опытных пользователей 1С доступны дополнительные инструменты, которые позволяют создавать действительно гибкие и мощные отчеты. Рассмотрим два полезных приема:
Динамические параметры
Динамические параметры позволяют пользователю изменять условия отчета прямо при его формировании. Например, можно сделать так, чтобы менеджер мог выбирать:
- 📅 Период (день, неделя, месяц, квартал)
- 🏢 Организацию (если в базе несколько юридических лиц)
- 👥 Ответственного сотрудника
- 📦 Группу номенклатуры
Чтобы добавить динамический параметр в СКД:
- В схеме компоновки данных перейдите на вкладку
Параметры. - Нажмите
Добавитьи укажите имя параметра (например,ПериодНачала). - Выберите тип значения (например,
Дата). - В настройках отчета свяжите параметр с полем отбора (например,
Дата >= &ПериодНачала).
Для удобства пользователей можно задать значения по умолчанию. Например, чтобы отчет по умолчанию формировался за текущий месяц, в свойствах параметра укажите:
ЗначениеПоУмолчанию = НачалоМесяца(ТекущаяДата());
Внешние отчеты и обработки
Если вы хотите использовать отчет в нескольких базах или передать его коллегам, сохраните его как внешний отчет (файл с расширением .erf). Для этого:
- В конструкторе отчетов нажмите
Файл → Сохранить как. - Выберите тип файла
Внешний отчет (*.erf). - Укажите путь для сохранения (например, на сетевой диск или локальный компьютер).
Чтобы подключить внешний отчет в другой базе:
- Откройте 1С:Предприятие в режиме
Конфигуратор. - Перейдите в
Файл → Открытьи выберите сохраненный файл.erf. - Нажмите
Загрузитьи подтвердите добавление отчета в конфигурацию.
Внешние отчеты удобны для:
- 🔄 Обмена отчетами между разными организациями (например, в холдинге).
- 🛠️ Быстрого развертывания на нескольких рабочих местах.
- 📦 Резервного копирования пользовательских отчетов.
Обратите внимание, что внешние отчеты могут не работать, если в целевой базе отсутствуют используемые объекты метаданных (например, справочники или регистры с другими именами). В этом случае потребуется адаптация кода.
8. Автоматизация: как отправлять отчеты по расписанию
Если отчет нужно формировать регулярно (например, ежедневно или раз в неделю), настройте автоматическую отправку по email или сохранение в сетевую папку. Это можно сделать с помощью:
- 📅 Регламентных заданий (встроенный механизм 1С).
- 🤖 Внешних обработок с использованием
Планировщик задач Windows. - 📧 Интеграции с почтовыми сервисами (например, через SMTP).
Настройка регламентного задания:
- В режиме
1С:Предприятиеперейдите вАдминистрирование → Регламентные задания. - Нажмите
Создатьи выберите тип заданияФормирование отчета. - Укажите созданный вами отчет и настройте параметры (период, адресатов и т.д.).
- Задайте расписание (например,
Ежедневно в 20:00). - Сохраните и активируйте задание.
Пример кода для отправки отчета по email:
Процедура ОтправитьОтчетНаПочту(АдресПочты, Тема, Текст, ПутьКФайлу)
Попытка
Почта = Новый Почта;
Сообщение = Новый Сообщение