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