При работе с обработкой "Обмен электронными документами СБИС" (Sbis1C_UF.epf) пользователи часто сталкиваются с необходимостью видеть дополнительные данные в табличной части перед загрузкой. Одной из популярных задач является вывод "Кода поставщика" и настройка автоматического поиска номенклатуры в базе 1С не по наименованию или штрихкоду, а по Артикулу. Рассмотрим подробно, как реализовать эти требования, сохранив при этом возможность беспрепятственного обновления обработки в будущем.
Проанализируем архитектуру решения от компании Тензор. Обработка ЭДО СБИС является крайне сложным программным продуктом, который обновляется очень часто (иногда несколько раз в месяц) в связи с изменениями в законодательстве и форматах электронных документов. Если внести изменения напрямую в код формы Sbis1C_UF.epf, то при следующем автоматическом обновлении все ваши доработки будут затерты. Разберем правильные способы модификации функционала через внешние механизмы.
Вся логика отображения колонок в реестрах и формах загрузки СБИС вынесена во внешние XML-файлы. Эти файлы обычно располагаются в каталоге C:\Sbis1C\ на локальном компьютере или на сервере в профиле пользователя. Чтобы добавить отображение кода поставщика в табличную часть "Товары" на этапе загрузки, выполним следующие шаги:
Registry_.<Columns>) необходимо добавить описание для нового поля, ссылающегося на тег КодТовара из входящего XML-документа.Важный момент: Чтобы колонка появилась в интерфейсе, в параметрах визуализации тега в XML-конфигурации должен быть установлен признак видимости. Это позволит вывести данные напрямую из входящего электронного сообщения в форму сопоставления.
Если наша задача — чтобы СБИС автоматически находил номенклатуру в нашей базе по совпадению кода поставщика и нашего Артикула, сначала проверим стандартные настройки. В современных версиях обработки предусмотрен механизм приоритетов поиска.
Проанализируем раздел "Настройки" -> "Параметры системы". Здесь часто доступна опция "Хранить сопоставление в справочнике номенклатуры поставщиков". Если включить этот режим, система будет в первую очередь искать связи в типовом регистре сведений 1С (для конфигураций УТ 11, ERP, КА 2). Если же мы хотим принудительно искать по полю Артикул, нам потребуется отредактировать конфигурационный файл загрузки в секции <ПоискНоменклатуры>, указав приоритет для реквизита Nomenclature.Article. Для ускорения ручной и автоматической привязки позиций можно использовать расширение для быстрого сопоставления номенклатуры при работе с ЭДО.
Это самый профессиональный и надежный способ доработки обработки СБИС. Разработчики предусмотрели специальную "точку входа" для программистов 1С — файл ВнешниеФункции_Клиент.epf. Если этот файл положить в папку с основной обработкой, СБИС будет вызывать функции из него вместо стандартных.
Рассмотрим пример кода, который можно разместить в этой внешней обработке для переопределения алгоритма поиска номенклатуры по коду поставщика:
Функция НайтиНоменклатуруПоАртикулу(ДанныеПозиции) Экспорт
АртикулДляПоиска = ДанныеПозиции.КодПоставщика;
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Артикул = &Артикул";
Запрос.УстановитьПараметр("Артикул", АртикулДляПоиска);
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецЕсли;
Возврат Справочники.Номенклатура.ПустаяСсылка();
КонецФункции
Преимущество этого метода в том, что при обновлении файла Sbis1C_UF.epf ваш файл ВнешниеФункции_Клиент.epf останется нетронутым, и логика поиска сохранится.
Выясним, как быстро внести изменения в конфигурацию, не копаясь в файловой системе. В последних версиях обработки СБИС есть скрытая возможность:
ON_NSCHFDOPPR — УПД) и нажмем кнопку "Изменить".Рассмотрим пример структуры XML для поиска:
<ПоискНоменклатуры>
<Вариант Приоритет="1" Тип="ПоАртикулу" Реквизит1С="Артикул" ТегXML="КодТовара" />
<Вариант Приоритет="2" Тип="ПоШтрихкоду" />
<Вариант Приоритет="3" Тип="ПоНаименованию" />
</ПоискНоменклатуры>
После того как мы отредактировали XML-файлы или добавили ВнешниеФункции_Клиент.epf, необходимо выполнить одно из следующих действий, чтобы 1С "увидела" изменения:
%AppData%\Local\Temp\Sbis1C, так как обработка часто кэширует настройки для ускорения работы.Таким образом, комбинируя визуализацию колонок в конфигурационных файлах и переопределение функций поиска во внешнем файле, мы решаем задачу пользователя без риска "сломать" обновления системы ЭДО. Если требуется альтернативный способ создания документов поступления без модуля оператора, можно применить обработку для загрузки данных из XML-файлов ЭДО.