Где хранятся настройки формы 1С и как убрать задвоенные дополнительные реквизиты?

Программист 1С v8.3 (Управляемые формы) 1С:Управление торговлей Торговля и дистрибуция
← На главную

При работе с типовыми конфигурациями (например, 1С:Управление торговлей 11) многие специалисты сталкиваются со странным поведением системы. Проанализируем типичную ситуацию: вы открываете форму списка номенклатуры, нажимаете «ЕЩЕ / Изменить форму», пытаетесь добавить новые поля на форму, но в окне выбора видите два абсолютно одинаковых дополнительных реквизита — например, две строки «ШИРИНА». При этом в самой карточке номенклатуры выводится только один.

Первое, что приходит в голову — почистить локальный кэш пользователя. Однако удаление базы из списка или чистка папок в AppData не дают никакого результата. Разберем по шагам, почему так происходит, где система на самом деле хранит настройки отображения и как грамотно устранить дублирование полей.

Где на самом деле хранятся настройки формы (галочки видимости)?

Существует распространенное заблуждение, что пользовательские настройки форм (видимость реквизитов, порядок колонок, ширина элементов, снятые или установленные галочки в меню «Изменить форму») хранятся на локальном компьютере пользователя в файлах кэша.

На самом деле это не так. Платформа 1С:Предприятие 8.3 хранит эти данные непосредственно внутри самой информационной базы. За их хранение отвечает специальный системный объект платформы — ХранилищеСистемныхНастроек. Именно поэтому очистка локального кэша компьютера (удаление временных файлов из папок Roaming\1C\1cv8 или Local\1C\1cv8) не помогает. При следующем входе в базу под тем же пользователем настройки заново считываются из внутренних таблиц базы данных и применяются к форме.

Как правильно сбросить или очистить настройки формы

Посмотрим, какими способами можно действительно очистить настройки формы, если они сломались или вы хотите вернуть стандартный вид. Рассмотрим три основных варианта:

  1. Сброс настроек в самой форме. Зайдите в проблемную форму (например, в список номенклатуры), нажмите кнопку «ЕЩЕ» и выберите пункт «Установить стандартные настройки». Это самое простое и быстрое действие, которое возвращает форму к первоначальному состоянию, заложенному разработчиком в конфигураторе.
  2. Глобальная очистка настроек пользователя. Если необходимо сбросить настройки сразу для множества форм, воспользуйтесь стандартной обработкой из Библиотеки стандартных подсистем (БСП). Перейдите в раздел «Администрирование» -> «Настройки пользователей и прав» -> «Очистка настроек пользователей». Там вы сможете выбрать конкретного пользователя и очистить его настройки форм.
  3. Программная очистка. Если вы разработчик и вам необходимо сбросить настройки программно, можно использовать методы системного хранилища. Разберем на примере кода:

// Пример программной очистки настроек формы списка справочника "Номенклатура"
КлючОбъекта = "Справочник.Номенклатура.Форма.ФормаСписка";
КлючНастроек = ""; // Оставляем пустым для очистки основных настроек
ИмяПользователя = "ИвановИИ"; // Имя пользователя информационной базы

ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, КлючНастроек, ИмяПользователя);

Почему задваивается дополнительный реквизит в окне «Изменить форму»?

Теперь выясним причину появления дублей в окне настройки формы. В конфигурациях, построенных на базе БСП (УТ, ERP, КА и др.), механизм дополнительных реквизитов устроен довольно гибко. В основе этого механизма лежит План видов характеристик ДополнительныеРеквизитыИСведения и справочник НаборыДополнительныхРеквизитовИСведений.

Задвоение свойства «ШИРИНА» при настройке формы происходит по следующим причинам:

  1. Платформа при открытии диалога настройки собирает все доступные реквизиты, привязанные к объекту, на основе существующих наборов характеристик.
  2. В базе данных фактически создано несколько разных элементов Плана видов характеристик, которые имеют одинаковое наименование «ШИРИНА», но разные внутренние идентификаторы (GUID).
  3. Один реквизит может быть назначен как «Общий» (действует для всей номенклатуры), а второй может принадлежать к какому-то конкретному набору характеристик (например, к определенному виду номенклатуры).
  4. Часто дубли остаются после обновления базы. Например, в системе может присутствовать предопределенный или помеченный на удаление элемент справочника наборов (вроде УДАЛИТЬНоменклатура), в табличной части которого все еще числится дублирующийся параметр.

Для платформы это два концептуально разных свойства, даже если они называются одинаково. Поэтому оба поля выводятся в дерево реквизитов для размещения на форме.

Как решить проблему задвоения реквизитов

Проанализируем шаги, которые необходимо предпринять для устранения этой ошибки. Нам нужно навести порядок в справочниках и планах видов характеристик.

  1. Откройте справочник «Наборы дополнительных реквизитов и сведений» и План видов характеристик «Дополнительные реквизиты и сведения». Для удобства можно использовать Универсальный отчет или консоль запросов, чтобы найти все элементы с наименованием «ШИРИНА».
  2. Определите, к каким наборам привязаны найденные дубли. Вы увидите, что один реквизит может быть общим, а другой привязан к старой, возможно, неиспользуемой папке или виду номенклатуры.
  3. Если один из реквизитов действительно лишний, его нужно исключить из состава набора. Если по этому реквизиту уже есть заполненные данные в справочнике Номенклатура, необходимо воспользоваться обработкой «Поиск и замена значений». Замените все ссылки старого (дублирующего) дополнительного реквизита на правильный (основной).
  4. После переноса значений физически удалите старый элемент ПВХ «ШИРИНА» с помощью стандартного механизма удаления помеченных объектов.

Как только физический дубль исчезнет из базы данных, он перестанет выводиться в окне изменения формы, и путаница с одинаковыми полями исчезнет навсегда.

← На главную