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