Как настроить автоматические отборы и сохранить их состояние в обработке подбора товаров?

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

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

Шаг 1: Программное добавление отборов через расширение

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

Для реализации этой задачи в форме ПодборТоваровПоОтбору создадим расширение и определим метод, который будет срабатывать после инициализации настроек:


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

Важно помнить, что при добавлении отбора через КомпоновкаДанныхКлиентСервер.ДобавитьОтбор мы можем управлять параметром ВПользовательскиеНастройки. Если установить его в Истина, пользователь получит возможность самостоятельно управлять этим отбором в интерфейсе.

Шаг 2: Почему сбрасываются настройки и как это исправить

Многие пользователи сталкиваются с тем, что после закрытия формы все их изменения «вылетают». Это происходит потому, что типовой механизм СКД при каждом открытии формы может принудительно вызывать метод ЗагрузитьНастройки, который затирает текущие изменения настройками по умолчанию из схемы компоновки данных. Чтобы этого избежать, необходимо учитывать следующие правила:

  1. Проверка наличия настроек: Перед тем как применять настройки по умолчанию, всегда проверяйте, не были ли они уже изменены пользователем.
  2. Использование хранилища: Используйте объект ХранилищеОбщихНастроек. Это штатный механизм 1С, который позволяет сохранять настройки пользователя на сервере.
  3. Разделение логики: При создании формы на сервере (в обработчике ПриСозданииНаСервере) сначала попытайтесь загрузить сохраненный вариант настроек из хранилища. Только если хранилище пусто, загружайте стандартные настройки.

Шаг 3: Настройка сохранения реквизитов формы

Если вам нужно сохранять не сложные отборы СКД, а простые поля (например, выбранный Вид цены или флажки), воспользуйтесь стандартным свойством платформы:

Рассмотрим процесс настройки подробнее:

  1. Откройте форму обработки в конфигураторе.
  2. В свойствах формы найдите параметр Автоматическое сохранение данных в настройках и установите значение Использовать.
  3. Перейдите к нужному реквизиту формы, который вы хотите запоминать.
  4. В списке свойств реквизита найдите пункт Сохранение и установите соответствующий флажок.

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

Заключение

Совмещая эти подходы — программное управление составом элементов через КомпоновщикНастроек в расширении и использование механизма Автоматического сохранения данных в настройках для простых реквизитов, — мы добьемся того, что интерфейс подбора товаров станет удобным и предсказуемым для конечного пользователя. Помните, что аккуратная работа с РежимОтображения и БыстрыйДоступ позволит сделать форму чище, скрыв от пользователя лишние технические поля.

← На главную