Как добавить код номенклатуры в таблицу товаров и настроить сопоставление по артикулу в обработке ЭДО СБИС

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

При работе с обработкой "Обмен электронными документами СБИС" (Sbis1C_UF.epf) пользователи часто сталкиваются с необходимостью видеть дополнительные данные в табличной части перед загрузкой. Одной из популярных задач является вывод "Кода поставщика" и настройка автоматического поиска номенклатуры в базе 1С не по наименованию или штрихкоду, а по Артикулу. Рассмотрим подробно, как реализовать эти требования, сохранив при этом возможность беспрепятственного обновления обработки в будущем.

Почему не стоит менять код основной обработки Sbis1C_UF.epf

Проанализируем архитектуру решения от компании Тензор. Обработка ЭДО СБИС является крайне сложным программным продуктом, который обновляется очень часто (иногда несколько раз в месяц) в связи с изменениями в законодательстве и форматах электронных документов. Если внести изменения напрямую в код формы Sbis1C_UF.epf, то при следующем автоматическом обновлении все ваши доработки будут затерты. Разберем правильные способы модификации функционала через внешние механизмы.

Способ 1: Настройка визуализации через конфигурационные файлы (XML)

Вся логика отображения колонок в реестрах и формах загрузки СБИС вынесена во внешние XML-файлы. Эти файлы обычно располагаются в каталоге C:\Sbis1C\ на локальном компьютере или на сервере в профиле пользователя. Чтобы добавить отображение кода поставщика в табличную часть "Товары" на этапе загрузки, выполним следующие шаги:

  1. Перейдем в папку с настройками обработки (путь можно уточнить в настройках самой обработки СБИС в разделе "Параметры системы").
  2. Найдем файл настроек реестра, обычно он имеет префикс Registry_.
  3. В блоке описания колонок (тег <Columns>) необходимо добавить описание для нового поля, ссылающегося на тег КодТовара из входящего XML-документа.
  4. В файле настроек загрузки для конкретного типа документа (например, "Поступление товаров и услуг") проверим наличие связи между данными файла и реквизитами формы.

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

Способ 2: Настройка сопоставления по Артикулу через интерфейс

Если наша задача — чтобы СБИС автоматически находил номенклатуру в нашей базе по совпадению кода поставщика и нашего Артикула, сначала проверим стандартные настройки. В современных версиях обработки предусмотрен механизм приоритетов поиска.

Проанализируем раздел "Настройки" -> "Параметры системы". Здесь часто доступна опция "Хранить сопоставление в справочнике номенклатуры поставщиков". Если включить этот режим, система будет в первую очередь искать связи в типовом регистре сведений 1С (для конфигураций УТ 11, ERP, КА 2). Если же мы хотим принудительно искать по полю Артикул, нам потребуется отредактировать конфигурационный файл загрузки в секции <ПоискНоменклатуры>, указав приоритет для реквизита Nomenclature.Article. Для ускорения ручной и автоматической привязки позиций можно использовать расширение для быстрого сопоставления номенклатуры при работе с ЭДО.

Способ 3: Использование механизма "ВнешниеФункции_Клиент.epf"

Это самый профессиональный и надежный способ доработки обработки СБИС. Разработчики предусмотрели специальную "точку входа" для программистов 1С — файл ВнешниеФункции_Клиент.epf. Если этот файл положить в папку с основной обработкой, СБИС будет вызывать функции из него вместо стандартных.

Рассмотрим пример кода, который можно разместить в этой внешней обработке для переопределения алгоритма поиска номенклатуры по коду поставщика:


Функция НайтиНоменклатуруПоАртикулу(ДанныеПозиции) Экспорт
    
    АртикулДляПоиска = ДанныеПозиции.КодПоставщика;
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |	Номенклатура.Ссылка КАК Ссылка
        |ИЗ
        |	Справочник.Номенклатура КАК Номенклатура
        |ГДЕ
        |	Номенклатура.Артикул = &Артикул";
    
    Запрос.УстановитьПараметр("Артикул", АртикулДляПоиска);
    
    РезультатЗапроса = Запрос.Выполнить();
    Если Не РезультатЗапроса.Пустой() Тогда
        Выборка = РезультатЗапроса.Выбрать();
        Выборка.Следующий();
        Возврат Выборка.Ссылка;
    КонецЕсли;
    
    Возврат Справочники.Номенклатура.ПустаяСсылка();
    
КонецФункции

Преимущество этого метода в том, что при обновлении файла Sbis1C_UF.epf ваш файл ВнешниеФункции_Клиент.epf останется нетронутым, и логика поиска сохранится.

Редактирование настроек через встроенный XML-редактор

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

  1. Зайдем в раздел "Настройки".
  2. Перейдем в подраздел "Настройки файлов" (или аналогичный, в зависимости от версии).
  3. Выберем нужный тип документа (например, ON_NSCHFDOPPR — УПД) и нажмем кнопку "Изменить".
  4. Откроется встроенный редактор XML. Здесь в блоке поиска номенклатуры можно вручную изменить порядок следования реквизитов, по которым идет сопоставление.

Рассмотрим пример структуры XML для поиска:


<ПоискНоменклатуры>
    <Вариант Приоритет="1" Тип="ПоАртикулу" Реквизит1С="Артикул" ТегXML="КодТовара" />
    <Вариант Приоритет="2" Тип="ПоШтрихкоду" />
    <Вариант Приоритет="3" Тип="ПоНаименованию" />
</ПоискНоменклатуры>

Как применить изменения

После того как мы отредактировали XML-файлы или добавили ВнешниеФункции_Клиент.epf, необходимо выполнить одно из следующих действий, чтобы 1С "увидела" изменения:

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

← На главную