Сборка отчета в 1С — это процесс разработки отчета, который позволяет получать нужную информацию из базы данных в удобном для анализа виде. Сборка отчета включает определение источника данных, выбор полей, настройку фильтров, группировок, вычислений и оформление отчета. В 1С есть несколько инструментов для создания отчетов, самым мощным и гибким из которых является Система компоновки данных (СКД).
1. Инструменты для создания отчетов в 1С:
- Конструктор отчетов (устаревший): Простой инструмент, подходящий для создания простых отчетов, но с ограниченной функциональностью. Рекомендуется использовать СКД для новых разработок. Система компоновки данных (СКД): Мощный и гибкий инструмент, позволяющий создавать отчеты любой сложности. СКД предоставляет широкие возможности для настройки источника данных, полей, фильтров, группировок, вычислений и оформления отчета.
В дальнейшем будем рассматривать создание отчета с использованием Системы компоновки данных (СКД).
2. Основные этапы создания отчета с использованием СКД:
Создание объекта метаданных “Отчет”:
- В Конфигураторе 1С найдите ветку “Отчеты” в дереве метаданных. Нажмите правой кнопкой мыши на ветке “Отчеты” и выберите “Добавить”. Укажите имя отчета (например, “ОтчетОПродажах”). Укажите синоним отчета (например, “Отчет о продажах”). Перейдите на закладку “Система компоновки данных”. Нажмите кнопку “Открыть схему компоновки данных”. Откроется конструктор схемы компоновки данных.
Определение набора данных (источника данных):
- В конструкторе схемы компоновки данных перейдите на закладку “Наборы данных”. Нажмите правой кнопкой мыши на ветке “Наборы данных” и выберите “Добавить набор данных -> Запрос”. Укажите имя набора данных (например, “НаборДанныхПродажи”). В окне редактора запроса введите текст запроса на языке запросов 1С. Запрос должен выбирать данные, которые будут использоваться в отчете. Пример запроса:
O ВЫБРАТЬ
O РеализацияТоваровУслуг. Дата КАК Дата,
O РеализацияТоваровУслуг. Номер КАК Номер,
O РеализацияТоваровУслуг. Контрагент КАК Контрагент,
O РеализацияТоваровУслуг. СуммаДокумента КАК СуммаДокумента,
O Товары. Номенклатура КАК Номенклатура,
O Товары. Количество КАК Количество,
O Товары. Цена КАК Цена,
O Товары. Сумма КАК Сумма
O ИЗ
O Документ. РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
O ЛЕВОЕ СОЕДИНЕНИЕ Документ. РеализацияТоваровУслуг. Товары КАК Товары
O ПО РеализацияТоваровУслуг. Ссылка = Товары. Ссылка
- Нажмите кнопку “ОК” для сохранения запроса. Проверьте доступность полей: Убедитесь, что поля, выбранные в запросе, отображаются в дереве полей набора данных. Создайте параметры: При необходимости, создайте параметры запроса (например, “ДатаНачала”, “ДатаОкончания”) для фильтрации данных по периоду.
Определение структуры отчета (макета):
- Перейдите на закладку “Макеты”. Добавьте макет типа “Макет компоновки данных”. В конструкторе макета определите структуру отчета:
- Группировки: Перетащите поля из набора данных в область группировок, чтобы сгруппировать данные по определенным критериям (например, по контрагенту, номенклатуре, дате). Ресурсы: Перетащите поля из набора данных в область ресурсов, чтобы вычислить итоговые значения (например, сумму продаж, количество товаров). Поля: Перетащите поля из набора данных в область полей, чтобы отобразить их в отчете. Условное оформление: Используйте условное оформление, чтобы выделить определенные данные в отчете (например, выделить продажи выше определенной суммы).
Настройка параметров отчета (если необходимо):
- Перейдите на закладку “Параметры”. Определите параметры, которые пользователь сможет задавать перед формированием отчета (например, “Дата начала”, “Дата окончания”, “Контрагент”). Укажите тип параметра, значение по умолчанию и другие свойства.
Настройка отборов (фильтров):
- Перейдите на закладку “Отборы”. Добавьте отборы, чтобы ограничить данные, которые будут отображаться в отчете. Укажите поле отбора, вид сравнения (например, “Равно”, “В списке”) и значение отбора (или параметр, который будет задавать пользователь).
Настройка вычисляемых полей (если необходимо):
- Перейдите на закладку “Вычисляемые поля”. Добавьте вычисляемые поля, чтобы создавать новые поля на основе существующих (например, рассчитать скидку, вычислить рентабельность). Укажите формулу вычисления.
Оформление отчета:
- Используйте конструктор макета для оформления отчета. Настройте шрифты, цвета, выравнивание и другие параметры оформления. Используйте условное оформление для выделения определенных данных.
Сохранение схемы компоновки данных: Сохраните схему компоновки данных. Программный код для формирования отчета (в модуле объекта “Отчет”):
10. &НаСервере
11. Процедура СформироватьОтчет(Результат, ПараметрыОтчета)
12.
13. // Получаем схему компоновки данных
14. СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
15.
16. // Создаем компоновщик настроек
17. КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных;
18. КомпоновщикНастроек. Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));
19.
20. // Устанавливаем параметры отчета (если есть)
21. Для Каждого Параметр ИЗ ПараметрыОтчета Цикл
22. НайденныйПараметр = КомпоновщикНастроек. Параметры. Найти(Параметр. Ключ);
23. Если НайденныйПараметр <> Неопределено Тогда
24. НайденныйПараметр. Значение = Параметр. Значение;
25. КонецЕсли;
26. КонецЦикла;
27.
28. // Получаем настройки компоновки данных
29. Настройки = КомпоновщикНастроек. ПолучитьНастройки();
30.
31. // Создаем процессор компоновки данных
32. ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
33. ПроцессорКомпоновкиДанных. Инициализировать(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);
34.
35. // Создаем процессор вывода результата компоновки данных
36. ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
37. ПроцессорВывода. УстановитьОбъект(Результат);
38.
39. // Выводим результат
40. Попытка
41. ПроцессорВывода. Вывести(ПроцессорКомпоновкиДанных);
42. Исключение
43. Сообщить("Ошибка при формировании отчета: " + ОписаниеОшибки());
44. КонецПопытки;
45.
46. КонецПроцедуры
47.
48. &НаКлиенте
49. Процедура Сформировать(Команда)
50.
51. Результат = Элементы. Результат; // Табличный документ на форме
52. ПараметрыОтчета = Новый Структура();
53. // Заполните параметры отчета значениями с формы, например:
54. // ПараметрыОтчета. Вставить("ДатаНачала", ДатаНачала);
55. // ПараметрыОтчета. Вставить("ДатаОкончания", ДатаОкончания);
56.
57. СформироватьОтчет(Результат, ПараметрыОтчета);
58.
59. КонецПроцедуры
- ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"): Получает схему компоновки данных, созданную ранее. КомпоновщикНастроекКомпоновкиДанных: Позволяет настраивать отчет динамически, в зависимости от выбора пользователя. ПроцессорКомпоновкиДанных: Формирует данные для отчета на основе схемы и настроек. ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент: Выводит сформированные данные в табличный документ (который отображается на форме). В клиентской процедуре Сформировать происходит вызов серверной процедуры и передача ей необходимых параметров.
Создание формы отчета:
- Создайте форму отчета (обычно основную форму). Разместите на форме табличный документ (элемент “Поле табличного документа”). Разместите на форме элементы управления для задания параметров отчета (например, поля ввода для даты начала и даты окончания). В коде формы добавьте обработчик команды «Сформировать», который будет вызывать серверную процедуру СформироватьОтчет и передавать ей параметры отчета.
3. Важные моменты:
- Язык запросов 1С: для получения данных из базы данных используется язык запросов 1С. Он похож на SQL, но имеет свои особенности. Схема компоновки данных: это основной объект, в котором описывается структура отчета, источники данных, связи между таблицами, фильтры, группировки, вычисляемые поля и оформление. Параметры: Параметры позволяют пользователю задавать значения, которые будут использоваться при формировании отчета (например, период, контрагент, склад). Макеты: Макеты используются для определения внешнего вида отчета (шрифты, цвета, выравнивание). Роли: Используйте роли для управления доступом пользователей к отчетам. Отладка: используйте отладчик для поиска и исправления ошибок в коде отчета. Оптимизация: оптимизируйте запросы и настройки отчета для повышения производительности. Тестирование: Тщательно протестируйте отчет перед вводом в эксплуатацию.
Пример: Простой отчет о продажах за период
Создайте отчет “ПродажиЗаПериод”. Создайте набор данных “НаборДанныхПродажи” с запросом:
3. ВЫБРАТЬ
4. РеализацияТоваровУслуг. Дата КАК Дата,
5. РеализацияТоваровУслуг. Контрагент КАК Контрагент,
6. РеализацияТоваровУслуг. СуммаДокумента КАК СуммаДокумента
7. ИЗ
8. Документ. РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
9. ГДЕ
10. РеализацияТоваровУслуг. Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
Создайте параметры «Дата начала» и «Дата окончания» типа «Дата». В макете перетащите поля «Дата», «Контрагент», «Сумма документа» в область полей. В коде отчёта создайте процедуры СформироватьОтчет и Сформировать, как показано выше, и передавайте значения из формы для параметров «Дата начала» и «Дата окончания».
Это лишь базовый пример. Система компоновки данных позволяет создавать отчеты любой сложности с использованием различных источников данных, сложных вычислений и интерактивных возможностей.