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