В процессе разработки и доработки конфигураций на базе 1С:Предприятие 8 с использованием обычных форм программисты часто сталкиваются с неприятной ситуацией: после внесения изменений в форму табличной части или документа изменения отображаются корректно у одних пользователей, но совершенно «игнорируются» или искажаются у других. При этом стандартная очистка локального кэша платформы и динамическое (или полнотекстовое) обновление базы данных не дают желаемого результата.
Рассмотрим детально, почему возникает подобное поведение платформы, проанализируем механизмы сохранения пользовательских настроек и разберем пошаговые инструкции по исправлению этой проблемы как стандартными методами, так и программным путем.
Проанализируем ситуацию, когда у одного пользователя колонки табличной части сгрупированы горизонтально (как и было задумано разработчиком), а у другого пользователя те же самые колонки выстраиваются вертикально или не отображают внесенных в Конфигураторе изменений.
Разберем две основные причины, почему это происходит:
AppData\Local и AppData\Roaming) сбрасывает только локальные временные файлы, но не затрагивает настройки, сохраненные внутри самой базы данных.Рассмотрим, как вернуть форме первозданный вид, заложенный разработчиком в Конфигураторе, не пересоздавая объект целиком.
Вариант А: Сброс настроек непосредственно из интерфейса
Попросим проблемного пользователя выполнить следующие шаги прямо на форме:
Вариант Б: Очистка настроек через администрирование
В типовых конфигурациях на обычных формах (например, УПП 1.3, Комплексная автоматизация 1.1, Управление торговлей 10.3) предусмотрен специальный инструмент для администратора:
Вариант В: Программное удаление настроек
Если требуется очистить настройки формы программно (например, при отправке обновления или в специальной обработке), используем объект ХранилищеПользовательскихНастроекФорм. Проанализируем пример кода:
// Укажем ключ объекта и имя пользователя
КлючОбъекта = "Справочник.Номенклатура.ФормаСписка";
ИмяПользователя = "ИвановИИ";
// Удаляем сохраненную настройку формы для конкретного пользователя
ХранилищеПользовательскихНастроекФорм.Удалить(КлючОбъекта, , ИмяПользователя);
После выполнения данного кода при следующем открытии формы платформа загрузит стандартное расположение элементов, заданное в Конфигураторе.
Посмотрим, какие свойства элементов формы в Конфигураторе отвечают за корректную горизонтальную группировку колонок табличного поля.
Разберем настройки колонок табличного поля:
Положение должно иметь значение НоваяКолонка.Положение в значение ВТойЖеКолонке.ИзменятьНастройки у табличного поля. Если отключить этот флаг, пользователь не сможет случайно перетащить колонки мышью и нарушить сгруппированное положение.Ширина и МинимальнаяШирина), чтобы платформа не сворачивала их по высоте при нехватке места.Если сброс настроек помогает лишь временно, а при изменении размера окна колонки снова встают вертикально, проанализируем настройки операционной системы у пользователя.
Рассмотрим метод, к которому часто прибегают разработчики на практике. Если быстро найти причину зависших настроек не удается, можно скопировать форму в Конфигураторе и назначить копию основной формой объекта.
Почему этот способ работает? При копировании формы платформа генерирует для нее новый внутренний уникальный идентификатор (GUID). Поскольку для этого нового идентификатора в информационной базе ещё нет сохраненных пользовательских настроек, 1С отобразит форму абсолютно всем пользователям в том виде, который заложен в Конфигураторе по умолчанию.
Однако следует помнить, что данный метод является обходным (дублирует объекты в конфигурации) и приводит к накоплению неиспользуемых элементов, поэтому предпочтительнее использовать очистку настроек пользователя через ХранилищеПользовательскихНастроекФорм или меню настройки списка.