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