Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

 

- актуальная версия СуперМаг Плюс начиная с 30.10.2022г., определена как 1.049.1 сп1.


Работа с Честным знаком из Супермаг Плюс построена по принципу «работа из одного окна», т.е. сотрудникам, которые работают в Торговой системе и должны взаимодействовать с государственными системами (ЕГАИС, Честный знак) не нужно заходить в несколько программ. Все необходимые документы загружаются в Супермаг Плюс и появляется возможность создавать учетные документы на основании документов ФГИС. Дополнительная возможность сопоставлять номенклатуру ФГИС и учетную номенклатуру позволяет минимизировать ошибки, связанные с человеческим фактором.

Общие принципы работы с маркированными товарами:
1. Факт перехода прав собственности на товар фиксируется через электронный документ, полученный по ЭДО.
2. Факты выбытия маркированной продукцией из оборота фиксируется на кассовом ПО при продаже конечному покупателю


В решении Супермаг Плюс есть возможность подключить электронный документооборот через сервис ПО СБИС (от компании Тензор).

Внимание!

Идентификатор участника обмена который устанавливается в документе "УПД на приход", и "Накладная поставщика".

Не передается в явном виде от провайдера электронного документооборота.

В настоящее время для его модификации следует изменить схему объекта UI.XSD


Оптимально (но не обязательно!), если его значение будет равно значению переменной в файле UI.XML.

Значение может принимать любое значение (цифра, набор цифр, какой-то код), главное, чтобы он был уникальным. Для случая, если одна БД обслуживает несколько ЮР лиц.

Или используется распределенная БД, работа с УПД в которых подразумевает, что используется более одной БД для обмена

(чаще всего это одна Центральная БД) с документами УПД, и использует для получения свои почтовые каталоги (настроенные УПД фильтры).

Из практики: 
клиент настроил обмен с документами УПД по двум каналам. Первый канал принимал УПД в центральную БД и распространял их по магазинам группы А. Второй канал принимал УПД в починенную БД и распространял их по магазинам группы Б.
Ошибочно идентификатор участника был указан для двух потоков как "1". Т.е. не был уникален в пределах сети магазинов.
В итоге документы УПД, и приходные накладные потока 2, согласно правилам рассылки "поднимались" в старшую БД. Где для этих документов срабатывала процедура сверки. Формировался ответ REPLY, который система отправляла через первый канал.
Т.е. через канал Центральной БД. Таким образом наблюдалась ситуация, при которой документ был получен по каналу 2, а ответ отправлен по каналу 1. Если бы идентификаторы обмена для каналов обмена были бы указаны разные, например 1, и 2.
Такая бы ситуация не произошла. Ответ который бы попыталась сформировать Центральная базы для документов полученных по каналу 2, не нашел бы необходимый почтовый ящик и отправлен бы не был.


<xs:element msdata:Locale="ru" name="SMWAYBILLSEXT">
<xs:complexType>
<xs:sequence>
<xs:element smimport:Function="GenerateDocNoUIDate(SMDOCUMENTS.LOCATIONGLN, SMDOCUMENTS.CLIENTGLN, SUPPLIERDOC, SMDOCUMENTS.CREATEDAT)" name="ID" type="xs:string" />
<xs:element default="UI" name="DOCTYPE" type="xs:string" />
<xs:element minOccurs="0" name="DELIVERYTOTALSUM" type="xs:decimal" />
<xs:element default="0" name="GOODSOWNER" type="xs:decimal" />
<xs:element smimport:Function="ClientByGLN(OURSELFGLN)" minOccurs="0" name="OURSELFCLIENT" type="xs:string" />
<xs:element default="0" name="PAYCASH" type="xs:string" />
<xs:element minOccurs="0" name="SUPPLIERDOC" type="xs:string" />
<xs:element minOccurs="0" name="SUPPLIERINVOICE" type="xs:string" />
<xs:element minOccurs="0" name="EDOID" type="xs:string" />
<xs:element minOccurs="0" name="SUPPLINVOICECREATE" type="xs:dateTime" />
<xs:element minOccurs="0" name="CONSIGNECLIENTINN" type="xs:string" />
<xs:element minOccurs="0" name="UTDDATE" type="xs:dateTime" />
<xs:element minOccurs="0" name="UTDSUPPDOC" type="xs:string" />
<xs:element minOccurs="0" name="CONSIGNECLIENTKPP" type="xs:string" />


<xs:element default="1" name="OURUTDID" type="xs:string" />


<xs:element minOccurs="0" name="OURSELFGLN" type="xs:string" />
<xs:element name="UTDSUPPDOC" type="xs:string" />
<xs:element name="UTDDATE" type="xs:dateTime" />
<xs:element name="UTDFUNCTION" type="xs:string" />
</xs:sequence>
</xs:complexType>
</xs:element>


После того, как изменена схема, установлено значение по умолчанию (или оставили все как есть, т.е. "1").

Проверьте настройку в почтовом модуле, параметр "Собственный идентификатор участника документооборота" - должен быть равен этому значению.


Зачем это сделано?

Сценарий таков:

  1. Приходит документ УПД.
  2. Попадает в один из множества возможных почтовых ящиков. (на моем примере ящик для приема УПД - настроен только один).
  3. Согласно применяемой схеме UI.XSD - присваивается "Идентификатор участника обмена".
  4. Далее проводится приемка товара, статус УПД на приход меняется (пусть на  ......)
  5. Система формирует файл ответа о статусе приемки (принят, отказ, принято с расхождениями).
  6. И ориентируясь на настройку в почтовом модуле ищет ящик у которого "Собственный идентификатор участника документооборота" совпадает с "Идентификатором участника обмена". Если такое совпадение имеется файл будет отправлен в исходящий каталог найденного ящика.
  7. Если идентификатор найден не будет (ошиблись, указали разные, не указали) - файл ответа будет сформирован локально на сервере СМ+, но отправлен никуда не будет.



Здесь и далее, предлагается общая инструкция по настройке обмена электронными документами через провайдера Тензор (решение СБИС).

  1. Схемы объектов используемые в процессе обмена (будут актуализироваться, изменяться, предлагаться варианты).


№ п.п.Название объекта.Тип объекта в СМ+Название файла. схемы

Файл схемы.

(!эти файлы берем себе!)

Дата модификации.

Пример файла XML.

Комментарий.

1.Заказ поставщику.OR

OR.XSD

OR.XSD21.01.2022210625120745_12480_2_1.XML.1624601281.629194.xml
OR_Заказ поставщику.XML
2.Подтверждение заказа поставщику.

OE

OE.XSD25.06.2021
3. Накладная поставщика.WEWE.XSD25.06.2021В обмене с Тензор не участвует. (устарела). Возможно участие при использовании структуры с распределенными БД Супермаг.
4.УПД на приход.UI

UI.XSD

UI.XSD14.10.2022 от 1.049 сп3

Функция ArticleByBarcode заменена функцией ArticleByBarcodeUI

В функцию ArticleByBarcode внесено следующее изменение: если поиск артикула по штриховому коду из спецификации XML-документа не привел к успеху, то из штрихового кода удаляются лидирующие нули и выполняется повторный поиск артикула.
В функцию ArticleByBarcodeUI внесено такое же изменение, как в функцию ArticleByBarcode, а также добавлена возможность распознавать артикул по коду ОСУ. Для этого в перечень параметров функции добавлено поле osuCode.

(теперь задаётся три аргумента - штриховой код, код КИЗ, код ОСУ)


Изменен принцип приема УПД на приход.
Все наши попытки "исказить" документ при приеме, для для случая когда у поставщика 2+2=5 - отменены.
Документ УПД принимается в том виде, в котором его поставщик сформировал.

Добавили функцию ArticleBySupplierCodeUI для определения артикула по артикулу Супермага,

  • артикулу поставщика,
  • штрихкоду,
  • КИЗ или
  • ОСУ.        То есть, по всему, что может быть, разом.


<xs:element smimport:Function="ArticleBySupplierCodeUI(SMSPECWE.BARCODE, SMDOCUMENTS.CLIENTINN, SMDOCUMENTS.CLIENTKPP, SMSPECTOBACCOWE.MARKCODE, SMSPECOSUCODEWE.OSUCODE)" name="ARTICLE" type="xs:string" />


В перечень функций импорта данных из XML файлов добавлена функция ArticleByAnyCodeUI. Функция аналогична функции ArticleBySupplierCodeUI за исключением того, что в качестве аргументов для определения контрагента используются не данные о его ИНН и КПП, а код клиента Супермаг+.

Изменения1050.doc


UI

UI.XSD

UI_1.051.XSD15.08.2023Удален лишний тег  <xs:element name="UTDSUPPDOC" type="xs:string" />
UI

UI.XSD

01.11.2023 от 1.052

В XSD схеме до версии 1.052 УПД на приход (UI.XSD) имеется тег с явным указанием значения по умолчанию, например:
<xs:element default="1" name="OURUTDID" type="xs:string" />

Внесено изменение содержащее значение Собственного идентификатора участника документооборота из настроек почтового модуля:
<xs:element default="$(DOCEXCHID)" name="OURUTDID" type="xs:string" />


Внесено изменение для фиксирования в УПД данных в поле "Ключ товара из УПД"

<xs:element smimport:Function="Decode(BARCODE, BARCODE)" name="CARDKEY" type="xs:string" />

UI

UI.XSD

01.03.2024 от 1.053

При обработке XML-файла входящего УПД на приход имелась, но не была декларирована  возможность заполнять поле документа УПД OURUTDID (собственный идентификатор участника обмена УПД) значением атрибута «Собственный идентификатор участника документооборота» почтового ящика, в который пришел документ.

Для этого необходимо, чтобы во входящем XML-файле значение тэга OURUTDID отсутствовало, а в XSD-схеме строка с описанием тэга выглядела следующим образом:

              <xs:element default="$(DOCEXCHID)" name="OURUTDID" type="xs:string" />

Где параметр $(DOCEXCHID) замещается значением «Собственный идентификатор участника документооборота» почтового ящика. Замещение выполняется внутри алгоритма почтового модуля в ходе импорта содержания XSD-файла для его использования при обработке XML-файла.

5.Требование на отборSWSW.XSD21.01.2022

SW_Требование на отбор.xml - В обмене с Тензор не участвует. Возможно использование для решения локальных задач. Один из способов применения - формирование документа на обмен товара (хлеб).

6.Ответ системы СМ+ на факт приемки.

PACKAGE

UICONFIRM.XSDUICONFIRM.XSD10.10.2022 от 1.049 сп2

УПД фильтр. Формат данных XML. Содержание файла ответа с результатом приемки.
В файл ответа с результатом приемки добавлен тэг CREATEDATWI, который содержит дату приходной накладной. Например:
    <CREATEDATWI>2022-09-27</CREATEDATWI>
Дата приходной накладной соответствует понятию «дата приема товара» и может не совпадать с датой УПД на приход.
В файл ответа  также добавлен тэг SUPPLIERCORRECTINVOICE. Тэг содержит номер коррекции, на которую сформирован ответ. Например:
    <SUPPLIERCORRECTINVOICE>1</SUPPLIERCORRECTINVOICE>

PACKAGE

UICONFIRM.XSD01.11.2023 от 1.052

В документы «УПД на приход» и «УПД на отгрузку» на закладку «Грузораспорядители» добавлены атрибуты «Подписант» и «ИНН». 

Атрибуты заполняются именем и ИНН подписанта ЭДО – сотрудника подтверждающего УПД на приход, или отправляющего УПД на отгрузку.


7.Квитанция провайдера ЭДО. Протокол обмена дополнен получением технической квитанции в ответ на отсылку файла с результатом приемки. Квитанция имеет смысл подтверждения успешности обработки и пересылки провайдером ЭДО файла подтверждения. ---14.03.2022
8. УПД на расход.UDUD.XSDUD_1049_1.xsd01.12.2022 от 1.049.1

Добавлен тег BARCODEEXTERNAL. 

  • На закладке "Штрихкоды", для одного ШК - атрибут "Обмен с EDI", именно этот ШК будет участвовать в отсылке контрагенту. Алгоритм выбора ШК для отправки клиенту работает по следующему правилу: По умолчанию передается ШК контрагента, заранее заявленный в системе СМ+ (раздел контрагенты, закладка артикулы поставщика), если список артикулов и ШК у поставщика пуст. То передается ШК из раздела - карточка товара, который имеет признак - "Использовать при с EDI обмене". Если ни один штриховой код не отмечен, штриховой код будет подобран по правилу "первый попавшийся".
  • .......


В XSD схему почтового объекта УПД на отгрузку добавлен тэг SMDOCTRANSPORT, содержащий информацию транспортного раздела. 

Данные заполняются при создании документа из соответствующих полей расходной накладной.

UDUD.XSD01.11.2023 от 1.052

В структуру файла подтверждения приема УПД и файла УПД на отгрузку добавлены тэги  INNSIGNATORY и NAMESIGNATORY – ИНН подписанта и имя подписанта.

<xs:element name="INNSIGNATORY" type="xs:string" minOccurs="0" />
<xs:element name="NAMESIGNATORY" type="xs:string" minOccurs="0" />

9.

Ответ СБИС на факт приемки покупателем продукции на основании УПД на отгрузку (полученного из СуперМаг Плюс). (от версии 1.049)

<xs:element name="REPLY">UDCONFIRM.xsd10.10.2022 от 1.049

REPLY_1).xml

В рамках версии 1.049 мы ожидаем безоговорочного согласия от клиента ( <RESULT>1</RESULT>). 

Или полного отказа от приемки  <RESULT>2</RESULT>

Варианты связанные с согласованием разногласий пока не реализованы.

<xs:element name="REPLY">

UDCONFIRM.xsdUDCONFIRM_1.051.xsd

21.08.2023 от 1.051

Внимательно прочитать!

Изменения1051 сп2.doc

Изменения1051 сп4.doc

Для отсылки информации о подписанте в УПД на отгрузку, необходимо в файл описания структуры XML пакета (UD.xsd) в тэг ="SMDOCUD" добавить тэги:
<xs:element name="SMDOCUD" msdata:Locale="ru">
<xs:complexType>
<xs:sequence>
….
<xs:element name="INNSIGNATORY" type="xs:string" minOccurs="0" />
<xs:element name="NAMESIGNATORY" type="xs:string" minOccurs="0" />
….












































     2. Устарела.....бедует удалена...Схемы объектов используемые в процессе обмена (будут актуализироваться, изменяться, предлагаться варианты).


№ п.п.Название объекта.Тип объекта в СМ+Название файла. схемы

Файл схемы.

(!эти файлы берем себе!)

Дата модификации.

Пример файла XML.

Комментарий.

1.Заказ поставщику.OR

OR.XSD

25.06.2021


21.01.2022

2.Подтверждение заказа поставщику.

OE

OE.XSD25.06.2021
3. Накладная поставщика.WEWE.XSD25.06.2021В обмене с Тензор не участвует. (устарела). Возможно участие при использовании структуры с распределенными БД Супермаг.
4.УПД на приход.UI

UI.XSD































UI.XSD

25.06.2021


21.01.2022 до 1.048


01.06.2022 от 1.048





01.09.2022 от 1.049






20.09.2022 от 1.049 сп1







11.10.2022 от 1.049 сп3









14.10.2022 от 1.049 сп3



UPD_Natur_Prod.xml Изменено значение в схеме для OURUTDID


UPD_Natur_Prod_SMALL.xmlUPD_Natur_Prod_SMALL2.xml


UPD_Natur_Prod_SMALL5_UKD.XML - УКД

UPD_Natur_Prod_SMALL5.XML - УПД

Представленная схема является универсальной, т.е. предполагает использование и УПД и УКД.



Внимание! для успешной приемки УПД на приход в версии 1.049 - требуется установка патча на сервер.

Readme.txt

Sm.Post.Filters.Utd.1.049x64.7z

Sm.Post.Filters.Utd.1.049.7z

В версию 1.049 сп1 и выше, это изменение уже включено, патч НЕ требуется.


Функция ArticleByBarcode заменена функцией ArticleByBarcodeUI

В функцию ArticleByBarcode внесено следующее изменение: если поиск артикула по штриховому коду из спецификации XML-документа не привел к успеху, то из штрихового кода удаляются лидирующие нули и выполняется повторный поиск артикула.
В функцию ArticleByBarcodeUI внесено такое же изменение, как в функцию ArticleByBarcode, а также добавлена возможность распознавать артикул по коду ОСУ. Для этого в перечень параметров функции добавлено поле osuCode.

(теперь задаётся три аргумента - штриховой код, код КИЗ, код ОСУ)


Изменен принцип приема УПД на приход.
Все наши попытки "исказить" документ при приеме, для для случая когда у поставщика 2+2=5 - отменены.
Документ УПД принимается в том виде, в котором его поставщик сформировал.

Добавили функцию ArticleBySupplierCodeUI для определения артикула по артикулу Супермага,

  • артикулу поставщика,
  • штрихкоду,
  • КИЗ или
  • ОСУ.        То есть, по всему, что может быть, разом.

Для версии 1.49 сп2, можно использовать патч.

Sm.Post.Filters.1.049.7z

Sm.Post.Filters.1.049x64.7z


<xs:element smimport:Function="ArticleBySupplierCodeUI(SMSPECWE.BARCODE, SMDOCUMENTS.CLIENTINN, SMDOCUMENTS.CLIENTKPP, SMSPECTOBACCOWE.MARKCODE, SMSPECOSUCODEWE.OSUCODE)" name="ARTICLE" type="xs:string" />

В перечень функций импорта данных из XML файлов добавлена функция ArticleByAnyCodeUI. Функция аналогична функции ArticleBySupplierCodeUI за исключением того, что в качестве аргументов для определения контрагента используются не данные о его ИНН и КПП, а код клиента Супермаг+.

Изменения1050.doc

5.Требование на отборSWSW.XSD21.01.2022

SW_Требование на отбор.xml - В обмене с Тензор не участвует. Возможно использование для решения локальных задач. Один из способов применения - формирование документа на обмен товара (хлеб).

6.Ответ системы СМ+ на факт приемки. (до версии 1.045)PACKAGEUICONFIRM.XSD

устарела

25.06.2021
7.Ответ системы СМ+ на факт приемки. (от версии 1.046)PACKAGEUICONFIRM.XSD29.09.21нет примера
8.Ответ системы СМ+ на факт приемки. (от версии 1.046)PACKAGEUICONFIRM.XSD29.09.21
9.Ответ системы СМ+ на факт приемки. (от версии 1.046)PACKAGE

UICONFIRM.XSD

29.09.21нет примера
10.Ответ системы СМ+ на факт приемки. (от версии 1.046)

PACKAGE

UICONFIRM.XSD























UICONFIRM.XSD

31.03.2022















01.09.2022


01.09.2022 от 1.049


10.10.2022 от 1.049 сп2

Из схемы исключён элемент <xs:element name="SUPPLIERARTICLE" type="xs:string" />

Поскольку, отсутствие у карточки артикула поставщика, приводило к ошибке: 

----- Причина исключения, уровень вложения 1 -----
сообщение: "Данный ключ отсутствует в словаре."

Для обхода ошибки, есть 2 варианта:

  1. Убрать из схемы упоминание тега SUPPLIERARTICLE
  2. Всем артикулам определить "артикул поставщика".

Необязательные патчи для версии 1.047 сп2-3.

Ошибка формирования файла ответа REPLY description_Результат приемки:

Sm.Post.Filters.Utd.1.047.7z

Sm.Post.Filters.Utd.1.047x64.7z

Неверный статус УПД при приеме немаркированного товара с расхождением:

DocsPkgBody.7z




Схема для версии 1.48.

Схема для версии 1.49 и выше.


Схема для версии 1.49 сп2 и выше.

УПД фильтр. Формат данных XML. Содержание файла ответа с результатом приемки.
В файл ответа с результатом приемки добавлен тэг CREATEDATWI, который содержит дату приходной накладной. Например:
    <CREATEDATWI>2022-09-27</CREATEDATWI>
Дата приходной накладной соответствует понятию «дата приема товара» и может не совпадать с датой УПД на приход.
В файл ответа  также добавлен тэг SUPPLIERCORRECTINVOICE. Тэг содержит номер коррекции, на которую сформирован ответ. Например:
    <SUPPLIERCORRECTINVOICE>1</SUPPLIERCORRECTINVOICE>

11.Квитанция провайдера ЭДО. Протокол обмена дополнен получением технической квитанции в ответ на отсылку файла с результатом приемки. Квитанция имеет смысл подтверждения успешности обработки и пересылки провайдером ЭДО файла подтверждения. ---14.03.2022
12.УПД на расход.UDUD.XSD












UD.xsd


Схема. Для использования переименовать в UD.XSD


UD_1049_1.xsd

01.06.2022 от 1.048


20.06.2022 от 1.048


30.08.2022 от 1.048








01.09.2022 от 1.049



01.12.2022 от 1.049.1

220620143635_17763_1.xml


220829173715_18425_1.XML

Добавлен тег BARCODEEXTERNAL. 

  • На закладке "Штрихкоды", для одного ШК - атрибут "Обмен с EDI", именно этот ШК будет участвовать в отсылке контрагенту. Алгоритм выбора ШК для отправки клиенту работает по следующему правилу: По умолчанию передается ШК контрагента, заранее заявленный в системе СМ+ (раздел контрагенты, закладка артикулы поставщика), если список артикулов и ШК у поставщика пуст. То передается ШК из раздела - карточка товара, который имеет признак - "Использовать при с EDI обмене". Если ни один штриховой код не отмечен, штриховой код будет подобран по правилу "первый попавшийся".
  • .......




В XSD схему почтового объекта УПД на отгрузку добавлен тэг SMDOCTRANSPORT, содержащий информацию транспортного раздела. 

Данные заполняются при создании документа из соответствующих полей расходной накладной.



13.

Ответ СБИС на факт приемки покупателем продукции на основании УПД на отгрузку (полученного из СуперМаг Плюс). (от версии 1.049)

<xs:element name="REPLY">UDCONFIRM.xsd10.10.2022 от 1.049

REPLY_1).xml

В рамках версии 1.049 мы ожидаем безоговорочного согласия от клиента ( <RESULT>1</RESULT>). 

Или полного отказа от приемки  <RESULT>2</RESULT>

Варианты связанные с согласованием разногласий пока не реализованы.

Перечень готовых QR кодов для самопроверки, на основании UPD_Natur_Prod.xml → QR коды.docx


2. Требования для клиентов для подключения Интеграции СМ+


  • 1. Наличие версии Супермаг Плюс 1.49 или выше.
  • Наличие специальной расширенной лицензии для ПО Супермаг плюс. Дополнительный модуль УПД EDI (ОДИН на ВСЁ ) в котором открыты модули их функции (список будет расширяться):
    - №121 УПД на отгрузку (функции - 12001, 12002, 12100, 12104, 12002, 12100, 12104, 12109, 12110, 12111, 12116, 12121, 12150).
    - №56 УПД на приход (функции - 5600, 5603, 5606, 5607, 5609, 5610, 5611, 5616, 5621).
  • Расширенная лицензия выдается по договоренности между клиентом и его курирующим менеджером (со стороны компании Ритейл Софт) на коммерческой основе.
  • Лицензированию подлежит каждый экземпляр БД, в случае если клиентом используется вариант «распределительных баз».
  • В случае, если у клиента имеется одна единая БД которая используется для работы всех пользователей предприятия (склады, магазины, офис) – расширенная лицензия понадобится только одна.
  • Лицензия открывает доступ к необходимым разделам ПО, и выдает разрешение на их использование всем пользователям СМ+ без ограничений.
  • Допускается вариант работы, когда расширенная лицензия приобретается только для центральной базы данных. В этом случае, функционал работы с ЭДО в подчинённых базах сохранятся, но попадает под действие некоторых ограничений. Сократить количество ограничений, которые могут возникнуть у операторов в магазинах, позволит использование мобильного рабочего места СММобайл. Отсутствие лицензии, не даст возможности использовать раздел УПД на приход, УП на отгрузку, но несмотря на это, процессы связанные приемкой товаров \ отгрузкой товаров на основании УПД – будут доступны (доступны с ограничением).
  • Допускаются различные комбинированные варианты, при которых, модули ЭДО приобретаются не на всю сеть. Например, расширенная лицензия не устанавливается в «маленькие» магазины.
  • Для окончательного принятия решения со стороны клиента о необходимости приобретения модуля ЭДО и его количеств. Компания разработчик ПО – предлагает получить временную лицензию на модуль ЭДО для старшей БД. И при наличии, для 1-й (любой) подчиненной сроком на 2 месяца.
  • Для осуществления обмена данными на стороне СМ+ необходимо:
    - Запустить и настроить Почтовый модуль Супермаг Плюс.
    - В параметры настроек добавить две «Доверительные базы», например TENSOR1, TENSOR2 (или как на рисунках - SBIS_IN_УПД, SBIS_OUT).
    - Каждая из БД должна производить обмен по протоколу FTP.
    - Каждая из БД должна иметь свои уникальные каталоги обмена (IN, OUT).
    - БД TENSOR1 – должна использовать фильтр «Стандартный фильтр XML»
    - БД TENSOR2 – должна использовать фильтр «УПД XML»
  • Настройка отмеченная в п.7 обеспечивает обмен разными типами документов по разным каналам связи. (например, База TENSOR1 предназначена для обмена EDI объектами. База TENSOR2 предназначена для обмена УПД и УКД документами (в дальнейшем);
  • Каждая из БД использует свои почтовые схемы объектов (XSD).
  • Схемы объектов будут предоставляться службой Технической поддержки СМ+, но вариант разработки новых (других) схем самостоятельно клиентом– не исключён (если такая необходимость возникнет).

3. Общие принципы и условия обмена.

  • Обмен подразумевает ситуацию при которой справочники (товары и их атрибуты, поставщики, клиенты и т.п.) не имеют полной синхронизации между отправителем и получателем.
  • Поэтому идентификация объектов на принимающей стороне происходит по заранее определенным и назначенным признакам.
  • Например: идентификация карточки, происходит на основании закрепленного за товаром Штрихового кода.
  • Например: идентификация поставщика, происходит на основании GLN (GLN (Global Location Number) – глобальный номер места нахождения – уникальный номер в системе GS1 для идентификации участников цепи поставки и их материальных, функциональных или юридических объектов (подразделений) (филиалы/офисы/склады/рампы и т.д.). Используется главным образом в EDI для эффективной идентификации всех объектов, касающихся поставок).
  • Торговая система Супермаг Плюс при формировании пакета на отправку или при осуществлении приема имеет возможность указания в схеме объекта XSD определенных функций, в задачу которых будет входить предобразование одной сущности в другую. Например: При приеме объекта со ШК, функция ArticleByBarcode* произведет преобразование ШК в артикул карточки товара в Супермаг Плюс. * - описание функций смотрите в бюллетенях изменений - Бюллетень изменений СуперМаг
  • В качестве транспорта для передачи объектов со стороны Супермаг Плюс используется Почтовый модуль СуперМага работающий по протоколу FTP.

4. Необходимая информация для справочников Супермаг Плюс, которая требует обязательного указания и согласования с Тензор.

  • Контрагент (Поставщик, Покупатель, Собственный контрагент). Указывается: ИНН, КПП, GLN.


  • Контрагент (Поставщик). Указывается (опционально): на закладке "Артикулы контрагента" - спецификация поставляемой продукции, Арт. контрагента (внутренний код поставщика), Штриховой код товара (Штриховой код товара который зафиксирован в справочниках поставщика, для идентификации товара).

  • Места хранения. Указывается: КПП, GLN

  • Карточка товара. Указывается: На закладке "Штрихкоды", для одного ШК - атрибут "Обмен с EDI", именно этот ШК будет участвовать в отсылке поставщику. Алгоритм выбора ШК для отправки поставщику работает по следующему правилу: По умолчанию передается ШК поставщика, заранее заявленный в системе СМ+ (раздел контрагенты, закладка артикулы поставщика), если список артикулов и ШК у поставщика пуст. То передается ШК из раздела - карточка товара, который имеет признак - "Использовать при с EDI обмене". Если ни один штриховой код не отмечен, штриховой код будет подобран по правилу "первый попавшийся".



5. Настройки обмена.

  • Для обеспечения полноценного обмена как EDI объектами, так и УПД и УКД объектами. Используются разные точки отправки и приемка.
  • Пример настроек Почтового модуля для обмена EDI объектами:

  • Пример настроек Почтового модуля для обмена УПД и УКД объектами:


Обратите внимание, что в рамках версии 1.49 сп2. 

УПД фильтр. Опция «Сохранять копию (.bak) при отсылке».
В настройки почтового модуля для УПД фильтра добавлена опция «Сохранять копию (.bak) при отсылке». По умолчанию флаг не отмечен.
Если флаг отметить, то при отсылке пакетов по протоколу «УПД фильтр» копии отсылаемых файлов будут сохраняться в подкаталоге LOG каталога исходящих сообщений с расширением .bak.
Опция может быть полезна в тех случаях, когда провайдер забирает файлы пакетов в автоматическом режиме, но требуется знать точное содержание переданных файлов, например, в случаях разногласий с провайдером или контрагентом в интерпретации содержания отосланных пакетов. При использовании опции необходимо следить за размером дискового пространства и периодически удалять ненужные файлы.


5. Правила рассылки почтовых объектов.

  • правила рассылок почтовых объектов указываются пользователями исходя из текущих потребностей, структуры сети и способа работы. Ниже представлены общие моменты.
  • Интерфейс настройки:

  • возможные настройки №1 (централизованная схема БД Супермаг (одна база данных)).
№ п.п.Название объекта.Тип объекта в СМ+Правило рассылки в доверительную базу.
1.Заказ поставщику.OR

1-2

2.Подтверждение заказа поставщику.

OE

нет, или 2-3 опционально по договоренности с провайдером EDI.
3. Накладная поставщика.WEнет
4.УПД на приход.UIнет
5.Ответ системы СМ+ на факт приемки.PACKAGEответ происходит в автоматическом режиме.

Настройка №2 находится на этапе проектирования.

Предполагаемое время готовности февраль 2022г.

  • возможные настройки №2 (распределенная схема БД Супермаг (одна старшая и множество подчиненных БД)).

Обмен с ЭДО и EDI (со всеми провайдерами) настроен в базе ЦО.



ЦО получает Накладную поставщика из магазина и отсылает ответ.



Справка:

Отличия между EDI и ЭДО
Теперь мы располагаем всей полнотой информации, чтобы уверенно ответить: EDI и ЭДО — разные системы. Доступен и ответ на вопрос о том, в чём заключаются отличия между ними. Главное из них — в следующем:

сообщения и документы в системе EDI имеют форму, не утверждённую законодательством — она определяется самими участниками обмена данными;
документация, передаваемая с помощью системы ЭДО, имеет форму, предусмотренную нормативными актами, и заверяется электронной цифровой подписью. Это придаёт ей юридическую силу и позволяет подавать в налоговые инспекции, суды, другие государственные и муниципальные органы.


Примечание:

№1 - В рамках версии 1.045 сп2. Была сделана доработка

Почтовый модуль. Функция импорта артикула XML файла.

В почтовый модуль добавлена функция ArticleByBarcodeUI для определения артикула при импорте XML файла по содержанию поля, предназначенного для хранения EAN штрихового кода артикула и/или таблицы с КИЗ.


Функция исследует значение поля для хранения штрихового кода. если поле содержит данные, то определяет артикул по штриховому коду, также как функция ArticleByBarcode. В противном случае функция исследует содержание таблицы с КИЗ и определяет артикул по содержанию первого попавшегося кода КИЗ (КИЗ содержит 14 символов GTIN товара после кода применения 01, из которого, в свою очередь, можно получить EAN товара отбрасыванием лидирующего нуля).

XSD схема должна содержать, как поле «BARCODE» (название может быть произвольным), так и таблицу с полем «MARCCODE», тогда как XML файл может содержать как оба поля, так и какое либо одно из них.

Функция ArticleByBarcodeUI предназначена, в первую очередь для обработки УПД на приход при приеме УПД от разных поставщиков, которые по разному формируют содержание документа.

--- Задача функции сводится к определению артикула из двух возможных источников.

Но, как показала практика, есть случаи, когда на товаре нет ШК, и еще нет КИЗ (не маркированный), чаще всего такой товар - является весовым.

В этом случае, "добыть" артикул нам не из чего. Конечно, можно исправить схему (убрать функцию: "ArticleByBarcode(BARCODE)" или "ArticleByBarcodeUI"). И передавать Артикул в явном виде в файле УПД (UI). 

Но тогда сломается определение артикула для случаев, когда нужно опираться на ШК или КиЗ (т.е. для штучных товаров и маркированных товаров, а их порядка 90% в общем справочнике).

Предложение следующее (или \ или):

  • Назначить на товар ШК = текущему артикулу.
  • Назначить на товар любой короткий ШК, можно вообще любой.
  • Назначить на товар ШК = артикулу поставщика.

Определить этот код, как "Используется при EDI обмене". Передавать его для поставщика и получать его обратно. На основании функций "ArticleByBarcode(BARCODE)" или "ArticleByBarcodeUI" - определять артикул товарной карточки. (т.е. не менять установленную логику работы).

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

№2 - Провайдер присылает документ с заполненной "меткой", необходимо было видеть значение этой же метки, но в другом документе.

Во вложении скрипт, который нужно пропустить по базе oracle от имени supermag.
Если по почте приходит документ «Подтверждение заказа поставщику» с изменившимся значением метки «EDIReceivedStatus»,
то это значение будет проставлено в ту же метку для заказа поставщику, находящегося в общих основаниях подтверждения заказа.
Ограничение: если после получения метки ее удалить из заказа поставщику и получить повторно документ
«Подтверждение заказа поставщику» с прежним значением метки, она в заказ поставщику не проставится,
т.к. в подтверждении заказа ее значение не изменится.

CentrTorg_DocPropsOE_Trigger.sql


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

№3 - В рамках версии 1.048. Была сделана доработка, касающаяся работы с УКД на приход.

.... 

- Почтовый модуль принимает УКД в документ «УПД на приход» с операцией «Коррекция при приемке». При приеме УКД создается новый документ УПД на приход, спецификация которого формируется, как спецификация первичного УПД с коррекцией по данным УКД.

- Содержание вновь созданного документа УПД на приход сверяется с содержанием приходной накладной. В случае расхождения, УКД на приход блокируется "Заблокирован", в случае совпадения - получает статус «Закрыт».

- Поставщику отсылается уведомление о подтверждении приема.

- Если приходная накладная имела статус «Принят на складе», то ее статус автоматически меняется на «Принят полностью».

....В случае расхождения, УКД на приход блокируется...

Не стоит воспринимать блокировку УКД, как отказ от приемки. В данном случае, система СуперМаг отказывает в обработке именно УКД. И ввиду того, что уже ранее сообщала поставщику о возникших расхождениях, и даже указывала на них - будет новый УКД. Обращаю внимание, не исправленный УКД (такого понятия нет), а именно новый УКД с новым номером. По факту его приемки в систему, СуперМаг выполнит всю необходимую серию проверок, чтобы подтвердить поставку или снова отклонить УКД.


---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

№4 - Почему УПД блокируется?

Нужно более детально смотреть состав документов, проверяется совпадение.
- МХ поставки.
- поставщик
- собственный контрагент
- вхождение в спецификацию
- количество
- цена полная (допускается расхождение в пределах не более +- копейка)
- цена без НДС (допускается расхождение в пределах не более +- копейка)
- сумма НДС (допускается расхождение в пределах не более +- копейка)
- ставка НДС
- полная сумма (допускается расхождение в пределах не более +- копейка)
- сумма без НДС (допускается расхождение в пределах не более +- копейка)
- сумма документа (допускается расхождение в пределах не более +- копейка)
- марки (при наличии)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

№5 - Почему УПД блокируется?

Исследовав накладную поставщика (УПД на приход) с внутренним документом Приходная накладная. Допустим, Вы сделали вывод, что СуперМаг Плюс неверно формирует документ.

Отбросив все негативные эмоции в сторону, предлагаю еще раз разобраться в случившимся. Основной момент про который нужно не забывать, это "Спасение утопающих  дело рук самих утопающих."

Никто, еще раз никто - не услышит ваши призывы, обвинения - пока не будет доказательной базы. И тут, в дело в ступает наше школьное образование, которое я надеюсь (те кто дочитал до сюда) имеют.

Рассмотрим пример формирования УПД от поставщика А.

ТоварКол-воЦена без налогаПолная ценаСумма НДССумма без налоговСтавка НДССумма
ТЕСТОВАЯ ТЕСТОВАЯ КАРТОЧКА №1ТЕСТОВА1310.831328.17140.8320169

На первый взгляд. вполне корректная накладная.

Но.....

13*10.83= 140.79 (Количество * Цена без налога = Сумма без налога )

13*13=169 (Количество * Цена  = Сумма)


Можно и другой вариант рассмотреть:

ТоварКол-воЦена без налогаПолная ценаСумма НДССумма без налоговСтавка НДССумма
ТЕСТОВАЯ ТЕСТОВАЯ КАРТОЧКА №1ТЕСТОВА1310.831328.16140.7920168.95

13*10.83= 140.79 (Количество * Цена без налога = Сумма без налога )

13*13=169 (Количество * Цена  = Сумма)


Можно ли считать, что какой-то из документов оформлен не верно? Да. Но попробуйте это объявить поставщику, т.е. указать ему на нарушение существующих правил формирования докментов, регламенты и пр.


Поставщик и вы, все время работали по бумажкам. Не уделяя должного внимания -  свободно распоряжались копейками в документах, округляли их или отбрасывали.

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

ВСЁ, халява закончилась.

Теперь, такой документ проверку в Супермаг Плюс - не пройдет. Не сможем мы согласиться с документом поставщика, который пренебрёг элементарными правилами математики.


Наверное, уже большинство поняли в чем проблема (если не поняли, дальше можете не читать (до свидания! (wink)).


Большинство думают, что формат электронной накладной такой, что "циферки" в ней помещаются не полностью, приходится "бедному" поставщику все округлять.

Но, как бы не так:

https://www.consultant.ru/document/cons_doc_LAW_388349/

Формат, например, поля, ЦенаТов = N(26.11)

Формат числового значения указывается в виде N(m.k), где: m - максимальное количество знаков в числе, включая знак (для отрицательного числа), целую и дробную часть числа без разделяющей десятичной точки, k - максимальное число знаков дробной части числа. Если число знаков дробной части числа равно 0 (то есть число целое), то формат числового значения имеет вид N(m).

Т.е. 11! знаков после запятой. 

Спросите у поставщика-  зачем его "программист", наокруглял значения цен и сумм и из "кареты сделал тыкву"?


Вот так выглядят эти документы в Торговой системе Супермаг Плюс.

И кто теперь, по вашему мнению, слабое звено?

Выдохнули.... и поняли, поставщика "переделать" не выйдет, придется искать решение у себя в системе.

  1. В документе Приходная накладная, есть закладка "Финансовые атрибуты" - там параметр "Округление". Меняем пробуем подгоняем. Помним, что погрешность в +- 1 копейка, для строки спецификации - СуперМаг Плюс умеет игнорировать. 
  2. В документе Приходная накладная, есть функция "Заполнить ценами из УПД". Заполняем, пробуем в разных режимах округления.

Кто-то спросит, а нельзя ли заполнять Приходную накладную с теми же ошибками, что допустил поставщик? - НЕТ НЕЛЬЗЯ.

Что делать, если не удается ни проставить подходящие цены, ни выбрать правило? -> оформить Приходную накладную максимально близко по ценам и суммам. После чего подтвердить УПД вручную на сайте.

Сколько таких "кривых документов" можно получить в течении дня? - все зависит от поставщика. Обычно такие документы составляют малую часть.  Обычно их создает один и тот же поставщик, мы очень надеемся, что рано или поздно проверяющие органы его "найдут".  Заплатив штраф, за некорректную уплату налогов, он поменяет своего "программиста", на адекватного специалиста. И всем станет - счастье.

--------------------------------------------------------------------------

№6 - Почему при приеме УПД не находится товарная карточка?

Ошибка возникает из-за невозможности определить артикул по данным входящего пакета. Во входном пакете есть значение кода ОСУ: <OSUCODE>020481022303313837120</OSUCODE>. Этот код является штрихкодом формата GS1 в котором зашита информация о коде EAN13 – «4810223033138» и количестве «120». По коду EAN можно получить артикул. Но Супермаг не распознал последовательность символов 020481022303313837120 как корректный штрихкод и не получил из него код EAN13. Дело в том, что форматы штрихкодов очень разнообразны и по внешнему виду штрихкода не всегда можно определить его тип и, соответственно, выделить данные из штрихкода. Возможно неоднозначное определение типа. Поэтому в Супермаге имеется справочник «Штрихкоды» в котором должны быть описаны типы штрихкодов, используемых данным клиентом.


UI.XSD

UPD_c4a6a73a-c3e1-4e68-9e36-94084c53120d.BAK

В данной БД не был разрешен штрихкод типа GS1. Я добавил в справочник «Штрихкоды» такой штрихкод (ид. 41, «секционный GS1»). После этого приём УПД в БД BELPROD заработал.


Ошибка:


--------------------------------------------------------
2023.02.07 (вторник) 10:56:59 1.49.1.0 sp3 Sm.Post.Server
----- Прерывание работы программы -----
сообщение: "Ошибка приёма объекта «UI 0000000037», виртуальный пакет «UPD_c4a6a73a-c3e1-4e68-9e36-94084c53120d.SVP»"
исключение: Sm.Core.BaseException
источник: Sm.Post.DbLoader
----- Причина исключения, уровень вложения 1 -----
сообщение: "Невозможно записать в БД объект «UI, 0000000037», таблица «SMSPECWE»"
исключение: Sm.Core.BaseException
источник: Sm.Post.DbLoader
метод: Void WriteNewObject(Sm.Server.Database.OracleTransConn)
в Sm.Post.PostObjectAdapter.WriteNewObject(OracleTransConn transaction)
в Sm.Post.PostObjectDocumentAdapter.WriteNewObject(OracleTransConn transaction)
в Sm.Post.PostObjectAdapter.WriteObject(OracleTransConn connection, PostObject originalByType)
в Sm.Post.PostUploader.UploadObject(IVirtualPackageReader reader, PostObjectInfo postData, PostObject originalByType)
в Sm.Post.PostUploader.UploadObjects(IVirtualPackageReader reader, ICollection objs, LockMultiObjects locker, Dictionary`2 original, IUploadExceptionHandler xHandler, IPostReplyClient postReply, Progress progress, Boolean postReplySuccess)
----- Причина исключения, уровень вложения 2 -----
сообщение: "ORA-01400: невозможно вставить NULL в ("SUPERMAG"."SMSPECWE"."ARTICLE")"
исключение: Oracle.ManagedDataAccess.Client.OracleException
источник: Oracle Data Provider for .NET, Managed Driver
данные:
соединено с: База данных=BELPROD; Пользователь=Supermag
текст команды: Insert into Supermag.SMSPECWE(DOCID,DOCTYPE,SPECITEM,ARTICLE,COUNTRY,DISPLAYITEM,DISPLAYITEMUI,ITEMPRICE,ITEMPRICECUR,ITEMPRICENOTAX,QUANTITY,QUANTITYUI,SPECITEMUI,TOTALPRICE,TOTALPRICECUR,TOTALPRICENOTAX,VATRATE,VATSUM) values(:pDOCID,:pDOCTYPE,:pSPECITEM,:pARTICLE,:pCOUNTRY,:pDISPLAYITEM,:pDISPLAYITEMUI,:pITEMPRICE,:pITEMPRICECUR,:pITEMPRICENOTAX,:pQUANTITY,:pQUANTITYUI,:pSPECITEMUI,:pTOTALPRICE,:pTOTALPRICECUR,:pTOTALPRICENOTAX,:pVATRATE,:pVATSUM)
тип команды: Text
параметры: pDOCID=«0000000037»; pDOCTYPE=«UI»; pSPECITEM=«1»; pARTICLE=«»; pCOUNTRY=«Россия»; pDISPLAYITEM=«1»; pDISPLAYITEMUI=«»; pITEMPRICE=«501,00»; pITEMPRICECUR=«0»; pITEMPRICENOTAX=«455,45»; pQUANTITY=«736,710»; pQUANTITYUI=«»; pSPECITEMUI=«»; pTOTALPRICE=«369091,71»; pTOTALPRICECUR=«0»; pTOTALPRICENOTAX=«335537,92»; pVATRATE=«10»; pVATSUM=«33553,79»
метод: Int32 UpdatedRowStatusErrors(System.Data.Common.RowUpdatedEventArgs, BatchCommandInfo[], Int32)
в System.Data.Common.DbDataAdapter.UpdatedRowStatusErrors(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
в System.Data.Common.DbDataAdapter.UpdatedRowStatus(RowUpdatedEventArgs rowUpdatedEvent, BatchCommandInfo[] batchCommands, Int32 commandCount)
в System.Data.Common.DbDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
в Oracle.ManagedDataAccess.Client.OracleDataAdapter.Update(DataRow[] dataRows, DataTableMapping tableMapping)
в System.Data.Common.DbDataAdapter.UpdateFromDataTable(DataTable dataTable, DataTableMapping tableMapping)
в System.Data.Common.DbDataAdapter.Update(DataTable dataTable)
в Sm.Server.Database.OracleRunner.Update(OracleSafeAdapter dataAdapter, DataTable dataTable)
в Sm.Post.PostObjectAdapter.WriteNewObject(OracleTransConn transaction)












  • Нет меток