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