Разработка отчетов в современной платформе 1С:Предприятие практически невозможна без использования механизма системы компоновки данных (СКД). Этот инструмент позволяет гибко настраивать структуру отчетов, группировки и отборы, не привязываясь жестко к коду формы. Однако, самой частой задачей, с которой сталкиваются разработчики и аналитики, является необходимость расширить стандартный набор полей.
Часто возникает ситуация, когда в макете отчета есть все необходимое, но отсутствует одна критически важная колонка, например, артикул номенклатуры или комментарий контрагента. Добавление такого поля требует понимания того, как СКД взаимодействует с запросом и набором данных. Процесс не сводится к простому перетаскиванию элементов, так как требует корректной настройки источников.
В этой статье мы детально разберем алгоритм действий для включения новых полей в ваш отчет. Мы рассмотрим работу с обычными полями таблиц, вычисляемыми выражениями и сложными случаями, когда данные нужно подтянуть из связанных регистров. Понимание этих принципов позволит вам создавать универсальные и мощные отчеты.
Подготовка схемы компоновки данных
Прежде чем приступать к добавлению новых элементов, необходимо убедиться, что ваша схема настроена корректно. Откройте конфигуратор или режим предприятия в режиме редактирования отчета. Перейдите на вкладку Настройки и найдите кнопку редактирования схемы. Если схема еще не создана, система предложит создать её автоматически на основе запроса, но для ручного управления лучше создать пустую схему.
В открывшемся конструкторе схемы вы увидите дерево наборов данных. Именно здесь происходит магия управления полями. Каждый набор данных представляет собой результат выполнения конкретного запроса. Для работы с полями вам нужно выбрать активный набор данных, к которому вы планируете добавить информацию. Без выбора набора интерфейс добавления будет недоступен.
Важно понимать разницу между полями самого запроса и полями, которые отображаются в отчете. Вкладка Поля в свойствах набора данных отвечает за то, какие колонки вообще доступны для использования в отчете. Если поля нет в этом списке, вы не сможете вывести его в макет, даже если оно присутствует в тексте запроса.
⚠️ Внимание: Изменения в схеме компоновки данных могут повлиять на существующие пользовательские настройки отчета. Если отчет уже используется в рабочей базе, обязательно сделайте резервную копию перед внесением правок.
Добавление стандартных полей из запроса
Самый простой сценарий — это добавление поля, которое уже присутствует в тексте запроса набора данных. Например, вы выбрали таблицу Справочник.Номенклатура и хотите вывести поле "Артикул". В конструкторе схемы перейдите на вкладку Поля. Здесь вы увидите список доступных полей текущего набора.
Чтобы добавить поле, нажмите кнопку Добавить в нижней части окна. Откроется окно выбора полей, где отображается структура таблиц, участвующих в запросе. Найдите нужную таблицу и отметьте галочкой требуемое поле. После нажатия ОК поле появится в списке доступных.
Теперь поле готово к использованию. Вы можете перетащить его из списка доступных полей в область Поля отчета на вкладке настроек. Также можно использовать кнопку Добавить поле непосредственно в структуре отчета. Система автоматически подставит заголовок колонки, который обычно совпадает с синонимом поля в метаданных.
- 📂 Поля выбираются из дерева метаданных, доступного в текущем запросе.
- 🏷️ Заголовок поля можно изменить в свойствах, чтобы он был понятен пользователю.
- 🔍 Используйте поиск в окне выбора полей, если список слишком большой.
Если поле добавлено, но в отчете отображаются пустые значения, проверьте тип соединения в запросе. Возможно, для некоторых записей связанные данные отсутствуют, и используется левое соединение, которое не заполняет поля при отсутствии совпадений.
Создание вычисляемых полей и выражений
Часто требуется вывести данные, которых нет в базе в готовом виде. Например, нужно показать полную стоимость строки (Количество умножить на Цену) или отобразить текущую дату формирования отчета. Для этих целей в СКД предусмотрены вычисляемые поля. Они создаются непосредственно в схеме компоновки данных.
В списке полей набора данных нажмите кнопку Добавить и выберите тип Поле выражения. В открывшемся конструкторе выражений вы можете использовать арифметические операторы, строковые функции и логические условия. Синтаксис выражений похож на язык запросов 1С, но имеет свои особенности, специфичные для СКД.
Для создания выражения перетащите необходимые поля из списка доступных в область конструктора. Например, чтобы получить итоговую сумму, выражение будет выглядеть как Сумма * Количество. Вы также можете использовать встроенные функции, такие как ЕСТЬNULL для обработки пустых значений или ФОРМАТ для изменения представления данных.
Особенности типов данных в выражениях
При сложении полей разных типов (например, число и строка) система может выдать ошибку или выполнить неявное преобразование. Всегда проверяйте типы полей в выражении, используя функцию ТипЗнч или явное приведение типов.
После создания выражения не забудьте задать ему понятный заголовок. По умолчанию система присвоит имя вида Поле1, что неудобно для восприятия. В свойствах вычисляемого поля укажите заголовок, который увидит пользователь в шапке колонки отчета.
⚠️ Внимание: Вычисляемые поля рассчитываются на клиенте или сервере в зависимости от сложности выражения и настроек системы. Сложные выражения с большим количеством строк могут замедлить формирование отчета.
Настройка связей между наборами данных
В сложных отчетах данные часто берутся из нескольких независимых запросов. Например, один набор содержит продажи, а второй — плановые показатели. Чтобы добавить поле из второго набора в отчет, основанный на первом, необходимо настроить связи между наборами данных. Без этой настройки поля второго набора будут недоступны для выбора.
Перейдите на вкладку Связи наборов данных в конструкторе схемы. Здесь нужно создать новую связь. Укажите ведущий и ведомый наборы данных. Ключевым моментом является выбор полей, по которым будет происходить соединение. Обычно это общие идентификаторы, такие как Номенклатура или Контрагент.
Тип связи играет критическую роль. Вы можете выбрать внутреннее соединение, левое или правое. Внутреннее соединение оставит в отчете только те строки, для которых есть совпадения в обоих наборах. Левое соединение сохранит все строки ведущего набора, даже если для них нет данных в ведомом.
| Тип связи | Описание поведения | Когда использовать |
|---|---|---|
| Внутреннее | Только совпадающие записи | Для отчетов строгого соответствия |
| Левое | Все записи первого + совпадения второго | Когда второй набор дополняет первый |
| Полное | Все записи из обоих наборов | Для сверки двух независимых списков |
После настройки связи поля связанного набора станут доступны в общем списке полей отчета. Вы сможете добавлять их в макет так же, как и обычные поля. Система автоматически подтянет значения на основе установленных ключей связи.
Работа с параметрами и отборами
Добавленное поле часто требует фильтрации. Пользователь должен иметь возможность отобрать данные по новому полю, например, показать только товары с определенным артикулом. Для этого поле должно быть доступно в структуре отбора. В свойствах поля на вкладке Дополнительно убедитесь, что флаг Включать в отбор установлен.
Если поле является параметром (например, период отчета или конкретный склад), его нужно объявить в разделе Параметры схемы компоновки данных. Параметр отличается от обычного поля тем, что его значение вводится пользователем перед формированием отчета и подставляется в запрос.
Для добавления параметра перейдите на соответствующую вкладку и нажмите Добавить. Укажите имя, тип значения и, при необходимости, значение по умолчанию. В тексте запроса этот параметр будет использоваться как &ИмяПараметра. В настройках отчета пользователь сможет выбирать значения этого параметра через стандартные элементы управления.
- 🎛️ Параметры позволяют динамически менять состав данных в отчете.
- 📅 Для дат используйте тип Дата с возможностью выбора периода.
- 📝 Для текстовых отборов удобно использовать параметры с типом Строка.
Не забудьте связать параметр с полем отбора в настройках отчета. В конструкторе настроек добавьте элемент отбора, выберите нужное поле и в качестве условия укажите ваш параметр. Это сделает отчет интерактивным и удобным для анализа.
Проверка и отладка результата
После внесения всех изменений необходимо проверить работоспособность отчета. Нажмите кнопку Обновить или F5 в окне настроек схемы. Система выполнит запрос и покажет предварительный результат. Внимательно изучите полученные данные: корректно ли заполнились новые колонки, нет ли дублирования строк.
Особое внимание уделите производительности. Добавление полей из связанных таблиц или использование сложных вычисляемых выражений может существенно увеличить время формирования. Если отчет формируется дольше 5-10 секунд, попробуйте оптимизировать запрос или упростить выражения.
Используйте кнопку Показать запрос в конструкторе схемы, чтобы увидеть итоговый текст SQL-подобного запроса, который генерирует СКД. Это помогает понять, как именно система соединяет таблицы и какие условия накладывает. Анализ текста запроса часто позволяет найти ошибки в настройке связей.
☑️ Контрольный список проверки отчета
Если в отчете появились неожиданные пустые значения или дубли, вернитесь к настройке связей наборов данных. Чаще всего проблема кроется в неверно выбранном типе соединения или отсутствии индексов по полям соединения в базе данных.
⚠️ Внимание: Интерфейс и возможности конструктора СКД могут незначительно отличаться в разных версиях платформы 1С. Всегда сверяйтесь с документацией к вашей конкретной версии конфигурации.
Используйте группировки в настройках отчета, чтобы структурировать вывод добавленных полей. Это сделает отчет более читаемым, особенно если вы добавили много деталей.
Часто задаваемые вопросы
Почему добавленное поле отображается пустым в отчете?
Скорее всего, проблема в типе соединения таблиц в запросе. Если используется левое соединение, а в связанной таблице нет записей для данного ключа, поле будет пустым. Также проверьте, что поле действительно добавлено в список доступных полей набора данных.
Можно ли добавить поле из другой конфигурации или базы?
Напрямую в одном запросе СКД это сделать нельзя. Однако вы можете использовать механизм внешних источников данных или предварительно выгрузить нужные данные в регистры сведений вашей базы, а затем подключить их к отчету.
Как изменить заголовок колонки для добавленного поля?
Выделите поле в списке полей отчета или в списке доступных полей набора данных. В палитре свойств найдите параметр Заголовок и впишите туда требуемое название. Это изменит отображение только в данном отчете, не затрагивая метаданные.
Влияет ли добавление поля на скорость работы отчета?
Да, любое дополнительное поле требует выборки данных из базы. Если поле находится в основной таблице запроса, влияние минимально. Если поле требует дополнительного соединения или вычисления, время формирования может увеличиться.
Грамотная настройка связей и использование вычисляемых полей позволяют расширить функционал стандартных отчетов 1С без изменения программного кода.