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

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

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

Очистка настроек текущего пользователя через системное хранилище

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


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

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

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

В данном примере использование ХранилищеСистемныхНастроек позволяет точечно воздействовать на сохраненный интерфейс. Метод Удалить принимает в качестве параметров путь к объекту и имя пользователя. Если вместо имени пользователя передать Неопределено, действие может не возыметь эффекта для конкретного сеанса, поэтому рекомендуется указывать текущего пользователя явно.

Программная очистка пользовательских отборов динамического списка

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


// Очистка всех элементов пользовательских настроек динамического списка
// Обычно пользовательские отборы находятся в первом элементе коллекции
Если ВашСписок.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Количество() > 0 Тогда
    ВашСписок.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[0].Элементы.Очистить();
КонецЕсли;

Важно помнить, что настройки динамических списков также могут сохраняться в ХранилищеПользовательскихНастроекДинамическихСписков. Для полной «стерилизации» настроек списка рекомендуется выполнять удаление и из этого хранилища, используя ключ вида "ПутьКФорме/ИмяРеквизитаСписка/НастройкиПользователя".

Массовый сброс настроек для всех пользователей информационной базы

Если задача стоит глобально — например, после обновления конфигурации нужно всем пользователям вернуть стандартный вид списка — мы можем организовать цикл по всем пользователям системы. Проанализируем, как это сделать программно:


ВсеПользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
КлючОбъекта = "Документ.РеализацияТоваровУслуг.Форма.ФормаСписка/НастройкиФормы";

Для Каждого ТекущийПользователь Из ВсеПользователи Цикл
    ХранилищеСистемныхНастроек.Удалить(КлючОбъекта, Неопределено, ТекущийПользователь.Имя);
КонецЦикла;

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

Тиражирование эталонных настроек (Метод копирования)

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


// Копирование настроек от эталонного пользователя всем остальным
ХранилищеСистемныхНастроек.Копировать(
    "Документ.ЗаказПокупателя.Форма.ФормаСписка/НастройкиФормы", 
    "Администратор", 
    Неопределено // Если Неопределено, настройки копируются всем пользователям
);

Это гарантирует единообразие интерфейса во всем отделе или компании.

Предотвращение изменения настроек пользователями

Чтобы в будущем избежать проблем с «пропавшими» документами, мы можем ограничить возможности пользователей по редактированию формы. Проанализируем доступные инструменты:

  1. Свойство «Использовать всегда»: В конфигураторе для конкретных полей (колонок) динамического списка можно установить признак Использовать всегда. Это предотвратит их случайное исключение из состава запроса, хотя видимость на форме всё еще может регулироваться пользователем.
  2. Запрет сохранения данных: У элементов формы существует свойство АвтоматическоеСохранениеДанныхВНастройках. Если установить его в значение Не использовать, система перестанет запоминать изменения положения и видимости этих элементов.
  3. Управление через роли: В настройках ролей пользователей можно снять право Сохранение данных пользователя. Это радикальный, но действенный метод: пользователь сможет менять форму «под себя» в рамках текущего сеанса, но после перезапуска программы все настройки вернутся к стандартным.
  4. Программное управление при создании: В обработчике ПриСозданииНаСервере мы можем жестко прописать видимость ключевых колонок. Программная установка свойств Элементы.ИмяКолонки.Видимость = Истина перекрывает загруженные пользовательские настройки, если выполняется в конце процедуры.

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

← На главную