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

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

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

Шаг 1: Подготовка реквизита на форме

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

  1. Создайте новый реквизит формы с типом СправочникСсылка.Контрагенты.
  2. Перенесите этот реквизит на форму документа.
  3. В палитре свойств элемента управления установите флаг «Режим выбора из списка». Это переключит поведение поля с выбора через стандартную форму на работу с внутренним списком выбора самого элемента.

Шаг 2: Наполнение списка выбора данными

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

Разберем пример кода для заполнения списка выбора:


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

Шаг 3: Реализация фильтрации табличной части

Теперь, когда пользователь может выбрать контрагента из списка, нам нужно заставить таблицу с товарами «реагировать» на это действие. На платформе 1С 8.3 для обычных форм для этих целей существует свойство ОтборСтрок у объекта ТабличноеПоле. Оно позволяет скрыть ненужные записи без фактического удаления данных из табличной части документа.

Для реализации этой логики необходимо использовать событие ПриИзменении для нашего реквизита «Контрагент»:


Процедура КонтрагентПриИзменении(Элемент)
    ВыбранныйКонтрагент = Элемент.Значение;
    
    // Устанавливаем отбор для табличного поля
    Если ЗначениеЗаполнено(ВыбранныйКонтрагент) Тогда
        ЭлементыФормы.ТабличноеПоле.ОтборСтрок.Контрагент.Установить(ВыбранныйКонтрагент);
    Иначе
        // Если выбор очищен, снимаем отбор, чтобы показать все строки
        ЭлементыФормы.ТабличноеПоле.ОтборСтрок.Контрагент.Установить(Null);
    КонецЕсли;
КонецПроцедуры

Полезные советы и нюансы

При работе с планшетными интерфейсами важно учитывать несколько технических особенностей:

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

← На главную