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