Как настроить расширенный поиск номенклатуры в 1С:УНФ по данным поставщиков

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

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

Использование штатного механизма «Номенклатура поставщиков»

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

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

Использование этого механизма позволяет вам видеть «свое» название товара, даже если в прайс-листе или накладной поставщика указано совсем другое наименование. Это наиболее надежный путь, так как он не требует внесения изменений в конфигурацию и сохраняет работоспособность системы при будущих обновлениях.

Реализация расширенного поиска через программный код

Если штатного функционала недостаточно и требуется вмешательство в работу стандартных полей выбора, мы можем использовать событие ОбработкаПолученияДанныхВыбора. Это событие позволяет нам самостоятельно сформировать список того, что видит пользователь при вводе текста в строке поиска.

Рассмотрим по шагам, как перехватить стандартный поиск и расширить его:

Шаг 1. Отключение стандартного поведения

Чтобы система не выполняла поиск по стандартным алгоритмам, необходимо установить параметр СтандартнаяОбработка в значение Ложь. Это даст нам полную свободу действий.

Шаг 2. Формирование запроса

Для корректного поиска нам потребуется составить Запрос, который будет обращаться одновременно к таблице Справочник.Номенклатура и к данным регистра (или справочника) Номенклатура поставщиков. Мы объединяем результаты этих выборок с помощью оператора ОБЪЕДИНИТЬ ВСЕ.

Пример структуры запроса для объединения данных:


ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка,
    Номенклатура.Наименование КАК Представление
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Наименование ПОДОБНО &СтрокаПоиска

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    НоменклатурыПоставщиков.Номенклатура,
    НоменклатурыПоставщиков.НаименованиеНоменклатурыПоставщика
ИЗ
    Справочник.НоменклатураПоставщиков КАК НоменклатурыПоставщиков
ГДЕ
    НоменклатурыПоставщиков.НаименованиеНоменклатурыПоставщика ПОДОБНО &СтрокаПоиска

Шаг 3. Заполнение данных выбора

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

Рекомендации по внедрению

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

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

← На главную