Почему не сохраняется сортировка в форме подбора характеристик 1С:УПП и как её зафиксировать?

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

При заполнении табличных частей документов (например, «Поступление товаров и услуг» или «Отчет производства за смену») операторам часто приходится выбирать характеристики номенклатуры. Если список характеристик выводится в произвольном порядке, работать с ним неудобно. Оператор настраивает сортировку вручную по наименованию, но при следующем вызове формы подбора порядок снова сбрасывается.

Проанализируем причину такого поведения обычной формы подбора в «1С:Управление производственным предприятием» (УПП) и разберем способы зафиксировать сортировку.

Причины сброса сортировки в обычных формах

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

  1. Данные заполняются запросом или выгружаются в таблицу значений. Если источником данных табличного поля выступает результат динамического запроса или локальная ТаблицаЗначений, платформа не сохраняет интерактивную сортировку по клику на заголовок колонки между вызовами формы.
  2. Смена контекста владельца. При каждом открытии подбора передается владелец (конкретная номенклатура). Форма полностью переинициализирует источник данных, сбрасывая все временные настройки.
  3. Отсутствие оператора УПОРЯДОЧИТЬ ПО в запросе. Если в тексте запроса, который выбирает характеристики, не задан явный порядок, СУБД возвращает записи в порядке их физического создания в базе данных или по внутреннему идентификатору Ссылка.

Способы решения проблемы

Разберем, как принудительно зафиксировать сортировку характеристик по наименованию при открытии формы подбора.

Способ 1. Программная установка сортировки при открытии формы

Наиболее эффективное решение — добавить принудительную сортировку в модуль формы подбора характеристик в обработчик события ПриОткрытии.

Если источником данных табличного поля является СправочникСписок, порядок устанавливается следующим образом:


Процедура ПриОткрытии()
    // Устанавливаем сортировку по наименованию в порядке возрастания
    ЭлементыФормы.ТабличноеПолеХарактеристики.СправочникСписок.Порядок.Наименование.Установить();
КонецПроцедуры

Если источником данных выступает ТаблицаЗначений, упорядочивание выполняется методом Сортировать():


Процедура ПриОткрытии()
    // Сортировка таблицы значений по колонке Наименование
    ТаблицаХарактеристик.Сортировать("Наименование ВОЗР");
КонецПроцедуры

Способ 2. Добавление сортировки в текст запроса

Если характеристики для формы подбора выбираются с помощью запроса, проанализируем модуль формы или общий модуль подбора и добавим в текст запроса предложение УПОРЯДОЧИТЬ ПО:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |   ХарактеристикиНоменклатуры.Ссылка КАК Характеристика,
    |   ХарактеристикиНоменклатуры.Наименование КАК Наименование
    |ИЗ
    |   Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры
    |ГДЕ
    |   ХарактеристикиНоменклатуры.Владелец = &Номенклатура
    |УПОРЯДОЧИТЬ ПО
    |   Наименование ВОЗР";

Способ 3. Настройка автосохранения значений формы

Для сохранения пользовательских параметров подбора можно также настроить свойства самой формы в Конфигураторе:

  1. Откроем форму подбора характеристик в Конфигураторе.
  2. В палитре свойств формы установим флаг СохранятьЗначения в значение Истина.
  3. В свойстве СохраняемыеЗначения отметим необходимые реквизиты отбора и сортировки.

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

← На главную