В процессе разработки или модификации типовых конфигураций 1С, таких как Управление торговлей, часто возникает необходимость изменить состав отборов в форме подбора товаров. Пользователи хотят, чтобы при открытии формы сразу были доступны нужные поля (например, Вид цены) и чтобы однажды настроенные фильтры не сбрасывались при повторном обращении к обработке. Давайте разберем, как реализовать эту задачу с помощью механизмов платформы 1С и расширений.
Если стандартный функционал обработки не позволяет вывести нужный отбор, лучшим решением будет использование расширения конфигурации. Это позволит не снимать основную конфигурацию с поддержки. Мы можем перехватить процедуру загрузки настроек и внедрить в КомпоновщикНастроек нужные нам элементы.
Для реализации этой задачи в форме ПодборТоваровПоОтбору создадим расширение и определим метод, который будет срабатывать после инициализации настроек:
&НаСервере
&После("ЗагрузитьНастройкиОтбораПоУмолчанию")
Процедура Расш1_ЗагрузитьНастройкиОтбораПоУмолчанию()
// Добавляем отбор по производителю как пример
ЭлементОтбора = КомпоновкаДанныхКлиентСервер.ДобавитьОтбор(
КомпоновщикНастроек,
"Номенклатура.Производитель",
,
ВидСравненияКомпоновкиДанных.ВСписке,
Ложь,
Новый Структура("ВПользовательскиеНастройки", Ложь)
);
// Устанавливаем режим отображения, чтобы пользователь видел поле
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.БыстрыйДоступ;
// Перемещаем элемент в начало списка для удобства
ЭлементыОтбора = КомпоновщикНастроек.Настройки.Отбор.Элементы;
ИндексЭлементаОтбора = ЭлементыОтбора.Индекс(ЭлементОтбора);
ЭлементыОтбора.Сдвинуть(ЭлементОтбора, - ИндексЭлементаОтбора + 1);
КонецПроцедуры
Важно помнить, что при добавлении отбора через КомпоновкаДанныхКлиентСервер.ДобавитьОтбор мы можем управлять параметром ВПользовательскиеНастройки. Если установить его в Истина, пользователь получит возможность самостоятельно управлять этим отбором в интерфейсе.
Многие пользователи сталкиваются с тем, что после закрытия формы все их изменения «вылетают». Это происходит потому, что типовой механизм СКД при каждом открытии формы может принудительно вызывать метод ЗагрузитьНастройки, который затирает текущие изменения настройками по умолчанию из схемы компоновки данных. Чтобы этого избежать, необходимо учитывать следующие правила:
ХранилищеОбщихНастроек. Это штатный механизм 1С, который позволяет сохранять настройки пользователя на сервере.ПриСозданииНаСервере) сначала попытайтесь загрузить сохраненный вариант настроек из хранилища. Только если хранилище пусто, загружайте стандартные настройки.Если вам нужно сохранять не сложные отборы СКД, а простые поля (например, выбранный Вид цены или флажки), воспользуйтесь стандартным свойством платформы:
Рассмотрим процесс настройки подробнее:
Автоматическое сохранение данных в настройках и установите значение Использовать.Сохранение и установите соответствующий флажок.После выполнения этих действий платформа 1С автоматически будет записывать значение выбранного пользователем Вида цены при закрытии формы и восстанавливать его при следующем открытии. Данный метод является наиболее простым и надежным для простых управляемых форм, не требуя написания кода.
Совмещая эти подходы — программное управление составом элементов через КомпоновщикНастроек в расширении и использование механизма Автоматического сохранения данных в настройках для простых реквизитов, — мы добьемся того, что интерфейс подбора товаров станет удобным и предсказуемым для конечного пользователя. Помните, что аккуратная работа с РежимОтображения и БыстрыйДоступ позволит сделать форму чище, скрыв от пользователя лишние технические поля.