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