В программу «Редактор 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» (Возвраты по кассе) и артикул. Функция для артикула и места хранения возврата по кассе возвращает номер ближайшего документа «Продажи по кассе» с датой меньшей или равной дате возврата. | |
В почтовом модуле при формировании файла в формате 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-файле поле «КПП» может отсутствовать, если для однозначного определения контрагента достаточно только ИНН. | |