Как настроить быстрый поиск по табличной части документа в 1С без перехода в режим редактирования ячейки?

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

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

Разберем подробнее, почему возникает такое поведение платформы и какие существует решения для настройки быстрого поиска по таблице формы.

Выясним причину поведения платформы

В управляемых формах 1С для колонок с ссылочным типом данных (например, СправочникСсылка.Номенклатура) при наборе символов с клавиатуры платформа по умолчанию активирует редактирование ячейки. Из-за этого стандартный ввод с клавиатуры не выполняет быструю навигацию по добавленным строкам.

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

Способ 1. Настройка свойств «РежимРедактирования» и «Поиск при вводе»

Проанализируем базовые свойства элементов формы в Конфигураторе, которые отвечают за реакцию на ввод с клавиатуры:

  1. Для колонки таблицы, в которой находится номенклатура, выберем свойство РежимРедактирования и установим значение «Вход» (вместо значения по умолчанию). Это предотвратит моментальный запуск редактирования ячейки при наборе первых букв.
  2. Для самой таблицы формы установим свойство Поиск при вводе в значение «Использовать».

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

Способ 2. Вывод реквизита «Номенклатура.Наименование» в таблицу

Посмотрим на вариант, который можно реализовать прямо в пользовательском режиме без изменения конфигурации:

  1. Через командный интерфейс формы выберем пункт «Еще» — «Изменить форму».
  2. Развернем элемент номенклатуры и добавим в состав колонок таблицы текстовое поле Номенклатура.Наименование.
  3. Поскольку данное поле имеет строковый тип данных, стандартный механизм «Поиск при вводе» работает по нему корректно и позволяет быстро перемещаться к нужным позициям.

Способ 3. Программный поиск через отдельное поле ввода

Если требуется искать позицию по частичному совпадению в любой части наименования (а не только по началу строки), рассмотрим программную реализацию:

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

ИдентификаторСтроки = НайденнаяСтрока.ПолучитьИдентификатор();
Элементы.ТаблицаДокумента.ТекущаяСтрока = ИдентификаторСтроки;

Способ 4. Использование формы подбора и сканирования

Разберем альтернативные подходы для сценариев с большим объемом данных:

  1. Форма подбора: Для заполнения документа выгоднее использовать отдельную форму подбора. Она строится на базе ДинамическийСписок, что позволяет быстро искать товар по любому вхождению строки, артикулу и остаткам с последующим переносом в документ.
  2. Ввод по штрихкоду или артикулу: В розничной торговле быстрый поиск настраивается через обработку внешнего события сканера штрихкодов или поле ввода артикула, с мгновенной активацией строки на сервере.
← На главную