В практике доработки конфигураций на базе "1С:Управление торговлей 11" (а также ERP и КА) разработчики часто сталкиваются с необходимостью отобразить скрытые по умолчанию служебные колонки. Одной из таких колонок является Код строки в табличной части "Товары" документа ПриобретениеТоваровУслуг. Эта колонка критически важна для связки строк поступления со строками заказа поставщику.
В этой статье мы подробно разберем ситуацию, когда программная установка видимости не срабатывает, выясним причины этого поведения управляемых форм и найдем правильное решение.
Рассмотрим типичный сценарий. Разработчик создает расширение конфигурации, чтобы принудительно включить видимость колонки. Используется стандартный подход — вмешательство в процедуру создания формы на сервере.
Пример кода, который часто пытаются использовать:
&НаСервере
&После("ПриСозданииНаСервере")
Процедура Расш_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Попытка включить видимость программно
Элементы.ТоварыКодСтроки.Видимость = Истина;
КонецПроцедуры
При отладке можно заметить интересный факт: если поставить точку останова сразу после присвоения, свойство Видимость действительно принимает значение Истина. Однако, запустив предприятие, пользователь по-прежнему не видит эту колонку в табличной части. Почему так происходит?
Чтобы понять, почему код не сработал, нам нужно углубиться в механизм работы управляемых форм в платформе 1С:Предприятие 8.3. Итоговая видимость элемента формы определяется не только тем, что написано в конфигураторе или в коде модуля формы.
Платформа формирует внешний вид формы, проходя через несколько этапов (в упрощенном виде):
В обсуждаемом случае, даже если мы принудительно ставим Видимость = Истина в коде, платформа при загрузке формы видит, что в пользовательских настройках эта колонка отключена (галочка снята), и скрывает её снова.
Поскольку проблема кроется в приоритете пользовательских настроек, наиболее правильным и простым решением является включение колонки через стандартный механизм настройки формы в режиме "1С:Предприятие". Это не требует доработки кода и сохраняется для пользователя. Для расширения состава отображаемых данных и элементов интерфейса без изменения конфигурации можно использовать инструмент для добавления реквизитов и элементов на управляемые формы без кодирования.
Разберем по шагам, как это сделать:
ПриобретениеТоваровУслуг.После этих действий колонка появится в табличной части. Если вам нужно применить эту настройку для всех пользователей, администратор может использовать функцию "Копирование настроек" в разделе "Администрирование".
Еще одним важным фактором является настройка самой программы. Колонка КодСтроки в УТ 11, КА и ERP — это не просто порядковый номер (как НомерСтроки). Это технический идентификатор связи строки накладной со строкой ЗаказаПоставщику.
Поэтому, если в базе данных отключено использование заказов поставщикам, данная колонка может быть скрыта системой на уровне функциональных опций, так как она теряет смысл.
Проверьте настройки:
Если заказы не используются, колонка КодСтроки не будет заполняться и её отображение не имеет практического смысла.
Разберем подробнее назначение этого поля, чтобы понимать, зачем мы вообще боролись за его видимость.
В старых версиях 1С связь между заказом и накладной часто строилась просто на основании номенклатуры или порядка строк. В современных конфигурациях (УТ 11, ERP) механизм более строгий. Когда вы создаете ПриобретениеТоваровУслуг на основании ЗаказаПоставщику, система копирует товары и присваивает каждой строке уникальный КодСтроки из заказа.
Для чего это используется:
КодСтроки потеряется (например, при ручном добавлении строки вместо подбора), заказ может "зависнуть" в статусе "Ожидается поступление", хотя товар фактически пришел.Именно поэтому при отладке проблем с закрытием заказов поставщикам консультанты и программисты первым делом включают видимость поля КодСтроки, чтобы убедиться, что связь между документами не нарушена.
Если ваш программный код Элементы.Имя.Видимость = Истина не работает в управляемых формах:
В 99% случаев проблема решается простой установкой галочки в пользовательских настройках, что является наиболее корректным методом работы с интерфейсом 1С.