Экспорт
В программу «Редактор XML-схем почтовых объектов» добавлена возможность формировать описание схемы с функциями в качестве полей таблиц почтового объекта. Функции предназначены для формирования данных почтового объекта для отправки во внешние системы с иными, чем в Торговой системе требованиями к содержанию почтового объекта. Например, функция «MeasurementName» позволяет поместить в поле почтового объекта название единицы измерения, если в составе почтового объекта имеется код единицы измерения.
При использовании функций для формирования структуры почтового объекта необходимо учитывать, что функции применимы только для отсылаемых объектов, но не для принимаемых. При использовании функций необходимо указывать поле объекта, которое является источником аргумента, например, если аргументом функции является артикул, то поле с функцией CardFullName может быть размещено только в той таблице объекта, которая содержит поле артикул, и это поле необходимо указать в качестве аргумента этой функции, например:
Наименование функции | Описание функции | Комментарий |
---|---|---|
BarcodeExternal | возвращает штриховой код артикула. Штриховой код ищется на единицу товара, не весовой, не простой, не начинающийся на 2, с сортировкой по убыванию значения Параметр: article – артикул товара. | |
LocationGLN | возвращает номер GLN (Global Location Number) места хранения для EDI. Параметр: locationId – код места хранения. | |
ClientGLN | возвращает номер GLN контрагента для EDI. Параметр: clientId – код контрагента. | |
CardFullName | Возвращает название товара по артикулу | |
CardMeasurementCode | Возвращает код ОКЕИ для единицы измерения по артикулу | |
CardMeasurementCodeISO | Возвращает код ISO для единицы измерения по артикулу | |
MeasurementName | Возвращает название единицы измерения по коду | |
MeasurementAbbreviation | Возвращает краткое название единицы измерения по коду | |
MeasurementCode | Возвращает Код ОКЕИ для единицы измерения по коду | |
MeasurementCodeISO | Возвращает код ISO для единицы измерения по коду | |
CountryNameByCode | Возвращает название страны по её буквенному коду | |
CountryCodeByName | Возвращает цифровой код страны (ОКСМ) по её названию | |
CurrencyCode | Возвращает цифровой код валюты ОКВ по её идентификатору | |
CurrencyCodeISO | Возвращает код валюты ISO по её идентификатору | |
LocationGLN | Возвращает номер GLN (Global Location Number) места хранения | |
ClientGLN | Возвращает номер GLN (Global Location Number) контрагента | |
SupplierArticle | Возвращает артикул поставщика для конкретного документа | |
SupplierArticleName | Возвращает название артикула поставщика для конкретного документа | |
BaseOrderID, BaseOrderDate, BaseOrderQuantity | В прошлых версиях были реализованы функции экспорта для занесения в XML файл экспортируемого документа данных из заказа поставщику - основания отсылаемого документа. Однако эти функции были недоступны для работы в редакторе XML схем. В текущей версии функции добавлены в перечень функций экспорта интерфейса редактора XML схем. | |
ArticleKeyByVariousUI | Функция ArticleKeyByVariousUI возвращает ключ товара Супермаг+ по артикулу Супермаг+, артикулу контрагента, штриховому коду, КИЗ или ОСУ пришедшего документа. Под ключом артикула понимается значение, например, штриховой код EAN, по которому в будущем можно будет опознать артикул, если при приеме документа артикул идентифицировать не удалось. Например, если в систему в будущем будет добавлен новый штриховой код, то по его совпадению с ключом артикула можно будет принять решение о проставлении артикула с таким штриховым кодом в ранее принятый документ. В текущей версии в функции изменен порядок поиска ключа. В прежней версии порядок поиска по содержанию документа был такой: артикул Супермаг+, артикул контрагента, штриховой код, штриховой код из КИЗ, штриховой код из ОСУ. В текущей версии порядок следующий: штриховой код, штриховой код из КИЗ, штриховой код из ОСУ, артикул Супермаг+, артикул контрагента. | |
ContractVATRate | Ставка НДС из документа «Контракт с поставщиком» - основания документа. Создана новая функция для формирования XML файлов при экспорте документов. Функция позволяет заполнить тэг значением ставки НДС. Ставка НДС для артикула спецификации берется из документа «контракт с поставщиком», который находится в основании отсылаемого документа. Аргументами функции является тип, номер отсылаемого документа и артикул спецификации. | |
FindCSDocDate | Функция экспорта «FindCSDocDate». Дата ближайшего документа «Продажи по кассе». Функция имеет два параметра – идентификатор документа типа «CR» (Возвраты по кассе) и артикул. Функция для артикула и места хранения возврата по кассе возвращает дату ближайшего документа «Продажи по кассе» с датой меньшей или равной дате возврата. Если такой документ не будет найден, то вернется значение «1970-01-01T00:00:00». | |
FindCSDocId | Функция экспорта «FindCSDocId». Идентификатор ближайшего документа «Продажи по кассе» Функция имеет два параметра – идентификатор документа типа «CR» (Возвраты по кассе) и артикул. Функция для артикула и места хранения возврата по кассе возвращает номер ближайшего документа «Продажи по кассе» с датой меньшей или равной дате возврата. | |
LocationGLNCross | В перечень функций, доступных при формировании XML-файла, отсылаемого почтовым модулем добавлена функция «LocationGLNCross» Функция работает для приходных накладных и возвращает номер GLN места хранения документа заказа поставщику из общего основания накладной, если место хранения кросс-докинга заказа совпадает с местом хранения приходной накладной, а при отсутствии места хранения кросс-докинга возвращает GLN места хранения приходной накладной. Функция предназначена для корректного формирования ответа поставщику при приеме поставки товара, когда заказ делается для магазина, а поставка на склад кросс-докинга. | |
CardMeasurementAbbreviation | CardMeasurementAbbreviation - Возвращает краткое название единицы измерения по артикулу Атрибуты функции: Артикул. DocDate - Возвращает дату документа торговой системы Атрибуты функции: Тип документа, Идентификатор документа. Последняя функция может быть использована для получения даты документа, находящегося в общих основаниях пересылаемого документа. | |
DocDate | DocDate - Возвращает дату документа торговой системы Атрибуты функции: Тип документа, Идентификатор документа. Функция может быть использована для получения даты документа, находящегося в общих основаниях пересылаемого документа. | |
VatRate | В редактор XML-схем для экспорта данных добавлены функции: VatRate и VatRateCurrent. Обе функции предназначены для выгрузки значения ставки налога НДС из карточки товара. Функция VatRate имеет четыре аргумента: - Артикул товара - Контрагент - для определения того, следует ли замещать ставку НДС на ноль, если контрагент документа не является плательщиком НДС. - Дата операции - для случая, когда выгружается старый документ, в момент действия которого ставка НДС была иной. - Место хранения - для определения региона действия ставки налога. Функция VatRateCurrent имеет один аргумент - Артикул товара. Для определения ставки НДС артикула в этой функции принимается, что замещать ставку НДС на ноль не следует, дата действия налога – текущая и НДС определяется для региона по умолчанию (код региона = -1). | |
VatRateCurrent | ||
CardAlternativeMeasurementCodeMercury | Возвращает код ГИС Меркурий для альтернативной единицы измерения артикула. Аргументы: Код единицы измерения | |
CardAlternativeMeasureValue | Возвращает значение количества в альтернативной единице измерения товара Аргументы: Артикул, Количество, Значение кода единицы измерения, для которого будет производится расчет | |
CardMeasurementCodeMercury | Возвращает код ГИС Меркурий для единицы измерения артикула Аргументы: Артикул | |
CardUseTimeDaysValue | Возвращает срок годности в днях артикула Аргументы: Артикул | |
CommentClientsStore | Возвращает комментарий склада внешнего контрагента документа Возвращает срок годности в днях артикула Аргументы: Артикул | |
StoreLocPropertyValue | Возвращает значение дополнительной характеристики места хранения Аргументы: Тип и номер документа, Код дополнительной характеристики Функция StoreLocPropertyValue применима только приходных и расходных накладных, поскольку использует данные транспортного раздела накладных. Функция сличает данные адреса погрузки/разгрузки внешнего контрагента с адресами его складов и, если такой склад находится, то возвращает значение комментария для этого склада. | |
CardPropertyValue | В редактор XML-схем для схем, предназначенных для экспорта информации, добавлена функция «CardPropertyValue», которая позволяет указать в XML-схеме почтового объекта поле для выгрузки значения заданной дополнительной характеристики артикула. Аргументом функции является поле схемы, в которое выводится артикул, и идентификатор дополнительной характеристики, который выбирается из выпадающего списка при настройке аргументов функции. Функция может быть использована для выгрузки в спецификации документов значения заданной дополнительной характеристики артикула. | |
CorrectKIZ | Коррекция марки КИЗ формата GS1 |
Почтовый модуль. Экспорт данных в формате XML.
Применение функции экспорта к полю аргументу.
В почтовом модуле при формировании файла в формате XML при экспорте данных разрешается использовать функции, которые на основании информации из тэгов аргументов позволяют заполнять другие тэги. В прошлых версиях это всегда были новые тэги, например, для выгрузки названия артикула надо было создать простое поле, например, «CARDFULLNAME», затем применить к нему функцию, указав в качестве аргумента поле «ARTICLE»:
В текущей версии для сохранения значения функции можно выбирать, в том числе тэг, который является аргументом функции, например:
Пользоваться новой возможностью следует с осторожностью. Поле, изменившее свое значение, не может быть источником информации для других функций. Также надо помнить, что порядок исполнения функций преобразования не определен. И, кроме того, тэг, входящий в первичный ключ таблицы не должен получать значений, нарушающих первичный ключ.
Схема с использованием тэга аргумента в качестве тэга результата не может быть использована в работе почтового модуля предыдущих версий Супермаг+.
Примечание: при отсылке документов по протоколу «УПД фильтр» при применении функции CorrectKIZ к полю markCode одновременно меняется формат тэга с BASE64 на STRING.
Примечание: при отсылке документов «УПД на приход», «УПД на отгрузку» и «Накладная поставщика» по протоколу «УПД фильтр» корректировка кода КИЗ по правилам ЦРПТ осуществляется автоматически.
Контроль заполнения тэгов с признаком обязательности заполнения.
В предыдущих версиях при отсылке XML объектов отсутствовала проверка, заполнено ли поле (тэг) или нет, при наличии в схеме ограничения "minOccurs="1" nillable="false"". То есть, можно было отсылать объект с пустым / отсутствующим значением тэга, когда в схеме указано, что тэг обязан иметь значение.
В текущей версии такая проверка реализована и отсылка объекта, нарушающего XSD схему, не допускается. При отсылке такого документа будет получена ошибка отсылки, например:
Импорт
Наименование функции | Описание функции | Комментарий |
---|---|---|
LocationByAnyGLNKPP | LocationByAnyGLNKPP для обработки XML-файлов при импорте документов. Функция возвращает место хранения Супермаг+ по значению КПП или GLN места хранения, в зависимости от того, что встретится во входном файле. Если при анализе значения КПП обнаруживается несколько мест хранения, то функция выбирает то, у которого есть собственный контрагент с заданным значением ИНН. Атрибуты функции: inn ИНН собственного контрагента. Может быть не задан. kpp КПП места хранения locationGLN GLN (Global Location Number) места хранения Функция создана в дополнение к функциям импорта GenerateDocUIDateAnyGLNINN и ClientByAnyGLNINN, чтобы можно было использовать одну и ту же XSD-схему для приема документов от разных контрагентов, которые могут заполнять либо один, либо другой комплект атрибутов для идентификации документа, контрагента и места хранения. | |
GenerateDocUIDateAnyGLNINN | GenerateDocUIDateAnyGLNINN для обработки XML файлов при импорте документов. Функция генерирует номер документа Супермаг+ с использованием ИНН и КПП или GLN контрагента, в зависимости от того, что встретится во входном файле, а также КПП места хранения или GLN места хранения, в зависимости от того, что встретится во входном файле, и с контролем даты документа. Атрибуты функции: locationKpp КПП места хранения locationGLN GLN (Global Location Number) места хранения clientInn ИНН контрагента clientKpp КПП контрагента (параметр КПП может быть не задан, если в БД есть только один контрагент с указанным ИНН и произвольным КПП) clientGLN GLN (Global Location Number) контрагента supplierDoc Накладная поставщика docDate Дата документа Примечание: контроль даты документа необходим в тех случаях, когда поставщик начинает нумерацию своих документов заново с некоторой даты, например, с начала года. | |
ClientByAnyGLNINN | ClientByAnyGLNINN для обработки XML файлов при импорте документов. Функция возвращает код контрагента по его ИНН и КПП или GLN, в зависимости от того, что встретится во входном файле. | |
ArticleByVariousUI | Функция импорта «ArticleByVariousUI». Артикул товара по информации об артикуле Супермаг+, артикуле контрагента, штриховом коде, КИЗ или ОСУ. Функция позволяет определить артикул по любому набору данных, который будет присутствовать во входном XML-файле и может быть использован для поиска артикула. Функция имеет 7 параметров:
В XSD-схеме должны быть описаны все поля, которые требуются для задания аргументов функции. В XML-файле почтового пакета могут присутствовать только те поля, которых достаточно для определения артикула. Если для определения артикула используются данные контрагента (артикул контрагента, ИНН и КПП), то в XML-файле поле «КПП» может отсутствовать, если для однозначного определения контрагента достаточно только ИНН. | |
ArticleByAnyCodeUI | В перечень функций импорта данных из XML файлов добавлена функция ArticleByAnyCodeUI. Функция аналогична функции ArticleBySupplierCodeUI за исключением того, что в качестве аргументов для определения контрагента используются не данные о его ИНН и КПП, а код клиента Супермаг+. Информация о контрагенте в функции нужна для определения артикула по артикулу контрагента, как одной из возможных альтернатив определения артикула.
Для схемы, фрагмент которой описан выше, содержание XML файла может быть следующим: <SMDOCUMENTS>
| |
ArticleBySupplierCodeUI | В перечень функций для импорта документов из XML файлов добавлена функция ArticleBySupplierCodeUI. Функция определяет артикул товара Супермаг+ по его значению, которое может быть либо артикулом Супермаг+, либо артикулом контрагента, либо штриховым кодом артикула, а в случае, если артикул найден не будет, то также полям с КИЗ или ОСУ кодами товара. cardCode - Произвольный код товара (артикул Супермага, артикул контрагента или штрихкод) Названия полей могут быть произвольными. Например, для задания кода товара (cardCode) можно использовать поля прежних схем, такие как BARCODE, SUPPLIERARTICLE. Разные поставщики могут помещать в это поле те данные, которыми они располагают. Функция будет искать артикул последовательно исследуя данные в разных контекстах. | |
ArticleByBarcodeUI | В почтовый модуль добавлена функция ArticleByBarcodeUI для определения артикула при импорте XML файла по содержанию поля, предназначенного для хранения EAN штрихового кода артикула и/или таблицы с КИЗ. Функция исследует значение поля для хранения штрихового кода. если поле содержит данные, то определяет артикул по штриховому коду, также как функция ArticleByBarcode. В противном случае функция исследует содержание таблицы с КИЗ и определяет артикул по содержанию первого попавшегося кода КИЗ (КИЗ содержит 14 символов GTIN товара после кода применения 01, из которого, в свою очередь, можно получить EAN товара отбрасыванием лидирующего нуля). XSD схема должна содержать, как поле «BARCODE» (название может быть произвольным), так и таблицу с полем «MARCCODE», тогда как XML файл может содержать как оба поля, так и какое либо одно из них. Функция ArticleByBarcodeUI предназначена, в первую очередь для обработки УПД на приход при приеме УПД от разных поставщиков, которые по разному формируют содержание документа. В функцию ArticleByBarcodeUI внесено такое же изменение, как в функцию ArticleByBarcode, а также добавлена возможность распознавать артикул по коду ОСУ. Для этого в перечень параметров функции добавлено поле osuCode | |
GenerateDocNoUI | Для документа «УПД на приход» добавлены следующие функции для генерации номера документа: GenerateDocNoUI, GenerateDocNoUIbyINN , GenerateDocNoUIDate, GenerateDocNoUIDatebyINN. Функции работают аналогично таким же функциям документа «Накладная поставщика» («WE»). При приеме XML-пакета в функциях GenerateDocNoWEbyINN, GenerateDocNoWEDatebyINN, GenerateDocNoWEDatebyINN2, GenerateDocNoUIbyINN, GenerateDocNoUIDatebyINN, GenerateDocNoUIDatebyINN2 и ClientByINN для определения контрагента используется информация об ИНН и КПП. В предыдущих версиях предполагалось, что ИНН и КПП однозначно характеризуют контрагента. Однако выяснилось, что в некоторых случаях в базе данных может существовать множество контрагентов с одним и тем же ИНН, КПП, что порождает неопределенность и ошибку при нахождении контрагента в процессе выполнения функций. В текущей версии в перечисленных выше функциях в случае обнаружения нескольких контрагентов с заданным ИНН и КПП выбирается один с наименьшим значением GLN. | |
GenerateDocNoUIbyINN | ||
GenerateDocNoUIDate | ||
GenerateDocNoUIDatebyINN | ||
GenerateDocNoWEbyINN | GenerateDocNoWEbyINN Генерирует номер документа Супермага при приёме УПД Функция GenerateDocNoWEbyINN генерирует новый номер накладной поставщика при приеме документа, используя номер документа поставщика, ИНН и КПП контрагента поставщика и КПП места хранения поставки. | |
GenerateDocNoWEDatebyINN | GenerateDocNoWEDatebyINN Генерирует номер документа Супермага при приёме УПД с контролем даты документа Функция GenerateDocNoWEDatebyINN дополнительно использует дату документа поставщика для генерации уникального номера документа Супермаг+ в случае повторения нумерации документа поставщика по истечении календарного периода, например, при возобновлении нумерации с Нового года. | |
CurrencyTypeByISO | CurrencyTypeByISO Возвращает идентификатор типа валюты по коду валюты ISO CurrencyTypeByOKV Возвращает идентификатор типа валюты по коду валюты ОКВ Функции определяют код валюты Супермаг+ по коду ISO или ОКБ соответственно. Соответствие устанавливается по справочнику валют. Справочник надо заполнить заблаговременно. | |
CurrencyTypeByOKV | ||
ArticleBySupplierArticle | Возвращает артикул в Супермаге по артикулу поставщика, его ИНН и КПП | |
BarcodeKey | Получение ключевой части штрихкода из любого штрихкода (для извлечения штрихового кода из кода КИЗ) | |
CountryIdByCode | Возвращает идентификатор страны в Супермаге по цифровому коду страны | |
ClientByINN | Возвращает код контрагента по его ИНН и КПП | |
LocationByKPP | Возвращает код места хранения по его КПП | |
GenerateDocNoWEDate | Для документов «Накладная поставщика» (WE) и «Подтверждение заказа поставщику» (OE) в XML-фильтре почтового модуля созданы новые функции для генерации номера документа при приеме его от внешнего контрагента, когда номер документа в Торговой Системе не может быть прописан в почтовом пакете. Новые функции получили название «GenerateDocNoWEDate» и «GenerateDocNoOEDate». От прежних функций «GenerateDocNoWE» и «GenerateDocNoOE» новые функции отличаются тем, что в перечень аргументов функций добавлена дата документа. Новые функции генерируют новый номер для документа, если поступивший документ отличается от уже имеющихся в базе данных номером контрагента, номером документа контрагента или датой документа. Это позволяет принимать документы от контрагентов в тех случаях, когда нумерация документов у контрагента не является уникальной, например, начинается сначала по истечении периода времени. | |
GenerateDocNoOEDate |
Почтовый модуль. Стандартный XML фильтр. Прием файлов с произвольным составом полей.
В протоколе почтового обмена «Стандартный XML фильтр» требуется, чтобы структура данных почтового объекта соответствовала его описанию в соответствующем XSD файле схемы почтового объекта. При приеме почтового объекта, если в файле данных почтового объекта отсутствует какое либо поле, описанное в файле схеме, то считается, что это поле имеет пустое значение и при добавлении или обновлении объекта в базе данных этому полю будет присвоено пустое значение или значение по умолчанию.
В текущей версии для протокола почтового обмена «Стандартный XML фильтр» реализован вариант приема почтового объекта с произвольным содержанием, при котором все поля, отсутствующие в почтовом объекте и имеющиеся в стандартной схеме объекта считаются именно отсутствующими, и их значения при обновлении объекта в базе данных не изменяются.
Для того, чтобы включить режим произвольного состава XML объекта надо в настройках почтового модуля отметить следующий флажок:
Этот режим работы XML протокола имеет следующие ограничения:
- В XML объекте должны быть заполнены обязательные поля, как правило это ключевые поля, которые нужны для идентификации объекта.
- В одном XML файле объекты одного типа должны иметь одну и ту же структуру. Или иначе, два объекта одного типа с разным набором полей должны передаваться в разных файлах. Ограничение связано с тем, что при приеме XML файла фильтр почтового модуля фактически воссоздает схему объекта по содержанию файла и в дальнейшем использует эту схему при обработке именно этого файла.
Такое же требование одинаковости структуры предъявляется к компонентам сложного объекта. То есть, его части должны иметь одинаковую структуру, например, в спецификации документа все строки должны иметь одинаковый набор полей.
Опция позволяет получать обновления объектов в тех случаях, когда сторонняя система не имеет возможности передавать полный набор данных об объекте при его изменении.