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