При доработке нетиповых отчетов на базе Системы компоновки данных (СКД) разработчики часто сталкиваются с ситуацией: в запрос добавлены новые поля, на вкладке Макеты нарисованы новые колонки, однако при формировании отчета данные смещаются вправо, попадают не в свои колонки или не выводятся вовсе. При этом программный код в модулях отчета и формы отсутствует. Проанализируем механизм вывода данных через макеты СКД и разберем по шагам, как правильно добавить новые поля и связать их с оформлением.
В СКД существует два принципиально разных подхода к формированию внешнего вида отчета:
Если в схеме компоновки создан пользовательский макет только для шапки (тип макета «Макет заголовка» или «Макет заголовка группировки»), а строки данных формируются автоматически, возникает конфликт сеток. СКД выводит строки данных строго по порядку и количеству полей, указанных на вкладке Настройки в разделе Выбранные поля. Если количество и ширина колонок в нарисованной шапке перестают совпадать с числом выводимых ресурсов и группировок, весь блок строк сдвигается относительно заголовков.
Кроме того, при добавлении новых полей в запрос важно корректно настроить агрегацию ресурсов. Посмотрим на пример некорректного и исправленного запроса с новыми числовыми полями:
// Ошибочный вариант: поля не сгруппированы и не просуммированы
ВЫБРАТЬ
План.Подразделение КАК Подразделение,
ЕСТЬNULL(ВТПлан.ПланТпДо150, 0) / 1000 КАК ПланТпДо150
ИЗ
ВТПлан КАК ВТПлан
СГРУППИРОВАТЬ ПО
План.Подразделение,
План.ПланТпДо150
// Корректный вариант: ресурс агрегируется функцией СУММА
ВЫБРАТЬ
План.Подразделение КАК Подразделение,
СУММА(ЕСТЬNULL(ВТПлан.ПланТпДо150, 0) / 1000) КАК ПланТпДо150
ИЗ
ВТПлан КАК ВТПлан
СГРУППИРОВАТЬ ПО
План.Подразделение
Если отчет требует строгой нестандартной структуры, необходимо связать через параметры макета не только шапку, но и саму область вывода строк. Разберем этот процесс по шагам:
Сумма(ПланТпДо150)).Параметр.ПараметрПланТпДо150).ПланТпДо150).Если в отчете используется только пользовательский макет заголовка, а строки выводятся стандартным генератором, порядок колонок в шапке должен строго повторять структуру полей в настройках отчета. Рассмотрим, как устранить расхождение:
Отдельно / Вместе с владельцем) и Расположение ресурсов (Горизонтально / Вертикально) не создают дополнительных невидимых колонок.Распространенная ошибка при тестировании отчета после правки схемы — проверка под сохраненным пользовательским вариантом. Платформа 1С сохраняет структуру выбранных полей в пользовательских настройках, из-за чего изменения схемы из конфигуратора могут не примениться к уже открытому варианту отчета.
После внесения изменений в схему компоновки обязательно выполним следующие действия в режиме «1С:Предприятие»:
Для создания иерархических или многоуровневых заголовков не обязательно рисовать жесткий макет вручную. Рассмотрим более гибкий способ средствами настроек СКД:
Горизонтально или В отдельной колонке.При таком подходе СКД сформирует корректную многоуровневую шапку автоматически, сохранит динамическое выравнивание ширин колонок и полностью исключит риск смещения данных при любых доработках отчета.