При разработке отчетов на базе Системы компоновки данных (СКД) в 1С программисты часто сталкиваются со стандартным поведением платформы: все поля, определенные как ресурсы (например, суммы, количества, средние показатели), автоматически переносятся в самый правый край таблицы. В то же время обычные текстовые реквизиты или даты выводятся левее.
Но что делать, если бизнес-требования диктуют иную структуру? Например, когда поле Дата или Комментарий должно выводиться строго после числового ресурса Сумма? В этой статье мы подробно разберем, как отключить автоматическое позиционирование ресурсов стандартными средствами СКД без ручной прорисовки сложных макетов оформления.
По умолчанию в СКД для любого нового отчета активирован механизм автоматического размещения числовых данных. Разработчики платформы 1С заложили это свойство, руководствуясь классическими правилами построения бухгалтерских и управленческих таблиц, где все расчетные показатели принято группировать в правой части отчета.
За это поведение отвечает системный параметр Авто позиция ресурсов. В режиме по умолчанию (значение Авто) система игнорирует тот порядок полей, который вы задали на вкладке Выбранные поля, и принудительно выполняет сортировку: сначала выводятся все обычные измерения и реквизиты, и только потом — ресурсы.
Для того чтобы заставить СКД выводить поля ровно в том порядке, в котором они указаны в настройках компоновки, выполним следующую последовательность действий:
Авто позиция ресурсов.Контрагент, затем ресурс СуммаОборота, а в самом конце — реквизит ДатаПоследнейОперации.После запуска отчета в режиме «1С:Предприятие» система сформирует таблицу в строгом соответствии с настроенной вами последовательностью на вкладке Выбранные поля, не сдвигая числовые ресурсы в конец.
Если вы формируете отчет программно или хотите динамически управлять этой настройкой из модуля объекта отчета или формы, вы можете изменить значение параметра через КомпоновщикНастроек. Рассмотрим пример кода:
// Получаем доступ к параметрам вывода отчета
ПараметрыВывода = КомпоновщикНастроек.Настройки.ПараметрыВывода;
// Ищем параметр автопозиции ресурсов
ПараметрАвтоПозиция = ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("АвтоПозицияРесурсов"));
Если ПараметрАвтоПозиция <> Неопределено Тогда
// Отключаем автоматическое смещение числовых полей вправо
ПараметрАвтоПозиция.Значение = ИспользованиеАвтоПозицииРесурсов.НеИспользовать;
ПараметрАвтоПозиция.Использование = Истина;
КонецЕсли;
Хотя отключение автопозиции ресурсов кажется простым и элегантным решением, на практике разработчики могут столкнуться с несколькими неприятными нюансами работы платформы 1С:
Авто позиция ресурсов в значение Не использовать из финальной таблицы отчета могут исчезнуть строки общих итогов (итоговые суммы по колонкам внизу страницы). Если вы столкнулись с этим поведением, рекомендуется принудительно настроить параметр Расположение общих итогов по вертикали, задав ему значение Начало или Конец вместо значения Авто.Если после отключения автопозиции ресурсов у вас пропали итоги по вертикали, решим эту проблему программным путем, принудительно включив отображение итогов снизу таблицы:
// Принудительное включение вертикальных итогов в настройках СКД
ПараметрИтогиВертикаль = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("РасположениеОбщихИтоговПоВертикали"));
Если ПараметрИтогиВертикаль <> Неопределено Тогда
ПараметрИтогиВертикаль.Значение = РасположениеИтоговКомпоновкиДанных.Конец;
ПараметрИтогиВертикаль.Использование = Истина;
КонецЕсли;
Если стандартное отключение автопозиции по каким-то причинам ломает структуру вашего сложного отчета, можно воспользоваться альтернативными приемами компоновки данных:
Вы можете визуально объединить ресурсы и реквизиты в логические группы. На вкладке Выбранные поля нажмите правой кнопкой мыши и выберите пункт Новая группа выбранных полей. В свойствах созданной группы укажите тип расположения (например, Вместе или Горизонтально). Перетащите в эту группу нужные ресурсы и обычные реквизиты. СКД скомпонует их внутри одной сложной ячейки или группы колонок, что позволит обойти ограничение автоматического переноса ресурсов.
Если вам нужно вывести расчетную величину, но СКД упорно переносит ее в конец как ресурс, вы можете временно отказаться от добавления этого поля на вкладку Ресурсы. Вместо этого настройте формулу расчета на вкладке Вычисляемые поля. Если поле не добавлено в список ресурсов на соответствующей вкладке схемы, СКД будет воспринимать его как обычное текстовое или числовое поле и позволит свободно позиционировать его в таблице. Однако учитывайте, что в этом случае по данному полю не будут рассчитываться автоматические групповые и общие итоги.