Как в СКД отключить вывод ресурсов последними?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке отчетов на базе Системы компоновки данных (СКД) в 1С программисты часто сталкиваются со стандартным поведением платформы: все поля, определенные как ресурсы (например, суммы, количества, средние показатели), автоматически переносятся в самый правый край таблицы. В то же время обычные текстовые реквизиты или даты выводятся левее.

Но что делать, если бизнес-требования диктуют иную структуру? Например, когда поле Дата или Комментарий должно выводиться строго после числового ресурса Сумма? В этой статье мы подробно разберем, как отключить автоматическое позиционирование ресурсов стандартными средствами СКД без ручной прорисовки сложных макетов оформления.

Причина поведения: почему СКД двигает ресурсы вправо?

По умолчанию в СКД для любого нового отчета активирован механизм автоматического размещения числовых данных. Разработчики платформы 1С заложили это свойство, руководствуясь классическими правилами построения бухгалтерских и управленческих таблиц, где все расчетные показатели принято группировать в правой части отчета.

За это поведение отвечает системный параметр Авто позиция ресурсов. В режиме по умолчанию (значение Авто) система игнорирует тот порядок полей, который вы задали на вкладке Выбранные поля, и принудительно выполняет сортировку: сначала выводятся все обычные измерения и реквизиты, и только потом — ресурсы.

Решение проблемы: пошаговая настройка в схеме СКД

Для того чтобы заставить СКД выводить поля ровно в том порядке, в котором они указаны в настройках компоновки, выполним следующую последовательность действий:

  1. Откроем схему компоновки данных (макет СКД) вашего отчета в конфигураторе.
  2. Перейдем на вкладку Настройки (в нижней части окна конструктора СКД).
  3. Выберем нужный вариант отчета или конкретную группировку, для которой требуется изменить порядок вывода колонок. Настройку можно задать как глобально для всего отчета, так и индивидуально для отдельной таблицы или группировки.
  4. В нижней части окна настроек перейдем на вкладку Другие настройки.
  5. Найдем в списке параметров строку Авто позиция ресурсов.
  6. Установим флаг использования этого параметра и выберем значение Не использовать.
  7. Теперь перейдем на вкладку Выбранные поля и с помощью стрелок «Вверх» и «Вниз» настроим требуемый порядок полей. Например, мы можем расположить поля так: сначала Контрагент, затем ресурс СуммаОборота, а в самом конце — реквизит ДатаПоследнейОперации.

После запуска отчета в режиме «1С:Предприятие» система сформирует таблицу в строгом соответствии с настроенной вами последовательностью на вкладке Выбранные поля, не сдвигая числовые ресурсы в конец.

Программное отключение автопозиции ресурсов

Если вы формируете отчет программно или хотите динамически управлять этой настройкой из модуля объекта отчета или формы, вы можете изменить значение параметра через КомпоновщикНастроек. Рассмотрим пример кода:


// Получаем доступ к параметрам вывода отчета
ПараметрыВывода = КомпоновщикНастроек.Настройки.ПараметрыВывода;

// Ищем параметр автопозиции ресурсов
ПараметрАвтоПозиция = ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("АвтоПозицияРесурсов"));

Если ПараметрАвтоПозиция <> Неопределено Тогда
    // Отключаем автоматическое смещение числовых полей вправо
    ПараметрАвтоПозиция.Значение = ИспользованиеАвтоПозицииРесурсов.НеИспользовать;
    ПараметрАвтоПозиция.Использование = Истина;
КонецЕсли;

Подводные камни и особенности применения метода

Хотя отключение автопозиции ресурсов кажется простым и элегантным решением, на практике разработчики могут столкнуться с несколькими неприятными нюансами работы платформы 1С:

Программное восстановление общих итогов

Если после отключения автопозиции ресурсов у вас пропали итоги по вертикали, решим эту проблему программным путем, принудительно включив отображение итогов снизу таблицы:


// Принудительное включение вертикальных итогов в настройках СКД
ПараметрИтогиВертикаль = КомпоновщикНастроек.Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("РасположениеОбщихИтоговПоВертикали"));

Если ПараметрИтогиВертикаль <> Неопределено Тогда
    ПараметрИтогиВертикаль.Значение = РасположениеИтоговКомпоновкиДанных.Конец;
    ПараметрИтогиВертикаль.Использование = Истина;
КонецЕсли;

Альтернативные приемы управления расположением полей

Если стандартное отключение автопозиции по каким-то причинам ломает структуру вашего сложного отчета, можно воспользоваться альтернативными приемами компоновки данных:

1. Группировка выбранных полей

Вы можете визуально объединить ресурсы и реквизиты в логические группы. На вкладке Выбранные поля нажмите правой кнопкой мыши и выберите пункт Новая группа выбранных полей. В свойствах созданной группы укажите тип расположения (например, Вместе или Горизонтально). Перетащите в эту группу нужные ресурсы и обычные реквизиты. СКД скомпонует их внутри одной сложной ячейки или группы колонок, что позволит обойти ограничение автоматического переноса ресурсов.

2. Использование вычисляемых полей

Если вам нужно вывести расчетную величину, но СКД упорно переносит ее в конец как ресурс, вы можете временно отказаться от добавления этого поля на вкладку Ресурсы. Вместо этого настройте формулу расчета на вкладке Вычисляемые поля. Если поле не добавлено в список ресурсов на соответствующей вкладке схемы, СКД будет воспринимать его как обычное текстовое или числовое поле и позволит свободно позиционировать его в таблице. Однако учитывайте, что в этом случае по данному полю не будут рассчитываться автоматические групповые и общие итоги.

← На главную