Почему не подтягивается измененная обычная форма у одного пользователя в 1С и как это исправить

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

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

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

Выясним причины возникновения проблемы

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

Разберем две основные причины, почему это происходит:

  1. Хранение настроек формы в информационной базе. В отличие от управляемого интерфейса, где настройки форм хранятся по определенным правилам системных хранилищ, в обычных формах персональные настройки табличных частей (порядок и видимость колонок, ширина, положение группировок) также записываются непосредственно в системную таблицу информационной базы — хранилище пользовательских настроек. Когда пользователь хотя бы раз меняет ширину колонки или перетаскивает элементы мышью, платформа фиксирует персональную схему. Локальная очистка кэша на диске пользователя (удаление папок из AppData\Local и AppData\Roaming) сбрасывает только локальные временные файлы, но не затрагивает настройки, сохраненные внутри самой базы данных.
  2. Влияние масштабирования экрана Windows (DPI). В обычных формах механизмы расчета ширины элементов и привязок очень чувствительны к настройкам системного масштаба (96 DPI / 100%, 125%, 150%). Если у одного пользователя установлен масштаб 100%, а у другого 125%, платформа при отрисовке формы может посчитать, что сгруппированным горизонтально колонкам не хватает пикселей по ширине, и автоматически перестроит их в вертикальную цепочку (одна под другой).

Способ 1. Сброс пользовательских настроек формы из информационной базы

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

Вариант А: Сброс настроек непосредственно из интерфейса

Попросим проблемного пользователя выполнить следующие шаги прямо на форме:

  1. Нажать правой кнопкой мыши по табличной части или зайти в меню Действия.
  2. Выбрать пункт Настройка списка....
  3. В появившемся диалоговом окне нажать кнопку Стандартная установка (или Восстановить положение).
  4. Нажать ОК и перезапустить форму.

Вариант Б: Очистка настроек через администрирование

В типовых конфигурациях на обычных формах (например, УПП 1.3, Комплексная автоматизация 1.1, Управление торговлей 10.3) предусмотрен специальный инструмент для администратора:

  1. Перейдем в меню Сервис → Настройки пользователей (или Очистка настроек пользователей).
  2. В списке пользователей найдем учетную запись проблемного сотрудника.
  3. В дереве сохраненных настроек найдем нужную форму или документ и удалим сохраненную схему отображения.

Вариант В: Программное удаление настроек

Если требуется очистить настройки формы программно (например, при отправке обновления или в специальной обработке), используем объект ХранилищеПользовательскихНастроекФорм. Проанализируем пример кода:


// Укажем ключ объекта и имя пользователя
КлючОбъекта = "Справочник.Номенклатура.ФормаСписка";
ИмяПользователя = "ИвановИИ";

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

После выполнения данного кода при следующем открытии формы платформа загрузит стандартное расположение элементов, заданное в Конфигураторе.

Способ 2. Проверка и коррекция свойств колонок в Конфигураторе

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

Разберем настройки колонок табличного поля:

  1. Выделим первую колонку из группы и откроем её палитру свойств. Свойство Положение должно иметь значение НоваяКолонка.
  2. Выделим вторую (и последующие) колонку, которая должна располагаться рядом под единым или соседним заголовком, и установим свойство Положение в значение ВТойЖеКолонке.
  3. Проверим флаг ИзменятьНастройки у табличного поля. Если отключить этот флаг, пользователь не сможет случайно перетащить колонки мышью и нарушить сгруппированное положение.
  4. Убедимся, что у табличного поля и самих колонок задана достаточная ширина (свойства Ширина и МинимальнаяШирина), чтобы платформа не сворачивала их по высоте при нехватке места.

Способ 3. Настройка масштабирования экранов (DPI)

Если сброс настроек помогает лишь временно, а при изменении размера окна колонки снова встают вертикально, проанализируем настройки операционной системы у пользователя.

  1. Проверим масштаб экрана в параметрах Windows на рабочем месте пользователя. Если установлено значение 125% или 150%, рекомендуем установить 100% (96 DPI).
  2. Если изменить масштаб Windows невозможно (например, на высокого разрешения мониторах), следует в Конфигураторе увеличить ширину самой формы и табличного поля, а также подкорректировать автопривязки элементов.

Обходное решение: пересоздание (копирование) формы

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

Почему этот способ работает? При копировании формы платформа генерирует для нее новый внутренний уникальный идентификатор (GUID). Поскольку для этого нового идентификатора в информационной базе ещё нет сохраненных пользовательских настроек, 1С отобразит форму абсолютно всем пользователям в том виде, который заложен в Конфигураторе по умолчанию.

Однако следует помнить, что данный метод является обходным (дублирует объекты в конфигурации) и приводит к накоплению неиспользуемых элементов, поэтому предпочтительнее использовать очистку настроек пользователя через ХранилищеПользовательскихНастроекФорм или меню настройки списка.

← На главную