В процессе разработки на платформе 1С:Предприятие 8 (особенно при работе с обычными формами) разработчики часто сталкиваются с парадоксальной ситуацией: в конфигураторе у колонки табличной части сняты флажки Видимость и Доступность, но при запуске приложения в режиме «Предприятие» колонка всё равно отображается на форме. Эта проблема может вызвать замешательство, так как прямое редактирование метаданных не дает ожидаемого результата.
Разберем подробно причины этого поведения и методы исправления ситуации, опираясь на практику решения подобных задач и особенности работы платформы.
Проанализируем самый частый сценарий. Платформа 1С обладает механизмом запоминания пользовательских настроек формы. Если пользователь хотя бы один раз изменил ширину колонки, поменял их местами или воспользовался пунктом меню «Настройка списка», система сохраняет текущее состояние колонок в системном хранилище. Эти настройки имеют более высокий приоритет, чем настройки, заданные разработчиком в конфигураторе.
Выясним, как это исправить в пользовательском режиме:
После выполнения этих действий система сбросит кэшированные настройки видимости и расположения, и форма примет вид, заданный в конфигураторе.
Если сброс настроек не помог, рассмотрим программную часть. В обычных формах управление элементами часто происходит в процедурах инициализации. Нам необходимо проверить, не переопределяется ли свойство Видимость в коде модулей.
Проанализируем ситуацию с помощью отладчика. Для этого пройдемся по шагам по следующим событиям формы:
ПередОткрытиемПриОткрытииДля поиска проблемного участка кода используем глобальный поиск (Ctrl+Shift+F) по имени колонки или программному имени элемента формы. Ищем конструкции вида:
// Пример программного включения видимости
ЭлементыФормы.ИмяТабличнойЧасти.Колонки.ИмяКолонки.Видимость = Истина;
Особое внимание уделим вызовам из общих модулей. Иногда форма передается в качестве параметра в универсальные механизмы заполнения или печати, где логика может принудительно включать отображение служебных колонок.
Разберем механизм автоматического сохранения. В свойствах самой формы (в корне дерева свойств в конфигураторе) существуют флажки «Сохранять значения» и «Восстанавливать значения». Если они установлены, 1С сохраняет состояние элементов управления в системных таблицах.
Чтобы принудительно очистить такие настройки программно, можно использовать методы работы с настройками, однако чаще всего помогает временное отключение этих флажков в конфигураторе, обновление базы данных и повторное включение (если сохранение других параметров формы критично для пользователя).
Посмотрим на ситуацию со стороны прав доступа. В 1С существует иерархия настроек. Если у пользователя в метаданных отсутствует право Просмотр на реквизит, из которого извлекаются данные для колонки, колонка будет скрыта независимо от настроек формы. Однако обратный эффект — когда колонка «вылезает» вопреки настройкам — может быть связан с тем, что реквизит помечен как обязательный или системный в определенных функциональных опциях.
Проверим функциональные опции: если колонка привязана к реквизиту, который управляется функциональной опцией, включение этой опции может принудительно инициализировать отображение связанных элементов интерфейса, игнорируя статические настройки видимости в дизайнере формы.
Выясним причину возможного перестроения таблицы в динамике. В обычных формах часто используются события ПриВыводеСтроки или ПриПолученииДанных. Рассмотрим пример:
Процедура ТабличнаяЧастьПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
// Ошибочная логика управления колонкой
ОформлениеСтроки.Ячейки.ИмяКолонки.Видимость = Истина;
КонецПроцедуры
Хотя свойство Видимость у отдельной ячейки в ОформлениеСтроки напрямую не влияет на видимость всей колонки (для этого используется объект Колонки), некорректная манипуляция свойствами отображения в этих высокочастотных событиях может приводить к визуальным артефактам или конфликтам отрисовки.
Проанализируем структуру размещения. В обычных формах колонки могут быть объединены в группы (горизонтальные или вертикальные). Если колонка находится внутри группы, ее видимость может зависеть от свойства Видимость самой группы. Если для группы программно или в настройках установлен признак отображения, она может «вытягивать» за собой вложенные колонки, даже если у них самих флажок снят.
В редких случаях проблема кроется в локальном кэше конфигурации на компьютере пользователя. Система может хранить старый «образ» формы. Если все вышеперечисленные методы не помогли, выполним следующие шаги:
%AppData%\1C\1cv8)./ClearCache.Для обычных форм полная очистка каталогов кэша часто оказывается эффективнее, чем использование ключа запуска, так как она принудительно обновляет структуру всех форм.
Подводя итог, можно сказать, что в 90% случаев проблема решается простым сбросом к стандартным настройкам в режиме «Предприятие». Если же это не помогает, следует последовательно проверить программный код в событиях открытия формы и исключить влияние функциональных опций. Совместное использование отладчика и анализа сохраненных настроек пользователя позволит быстро найти и устранить причину некорректного отображения данных.