Файловый обмен
Определения
JSON (JavaScript Object Notation) – формат обмена данными.
Особенности:
- данные организованы в виде пары "ключ-значение"
- ключ всегда является строкой и записывается в двойные кавычки (
") - значение может иметь любой тип данных:
- строковые значения записываются в двойные кавычки (
") - объекты описываются фигурными скобками (
{}) - массивы описываются квадратными скобками (
[]) - логические (булевы) значения записываются без кавычек (
true,false) - числовые значения записываются без кавычек (
12,0.5,-2)
- строковые значения записываются в двойные кавычки (
Объект – структура, содержащая неупорядоченный набор пар "ключ-значение".
Массив – структура, содержащая упорядоченный набор значений (объекты, строки, числовые значения).
Корневым элементом пакета JSON может быть либо объект, либо массив. В большинстве случаев корневым элементом является объект.
Примеры.
- Объект, содержащий ключ
document, значение которого является объект с ключамиversion,document_typeсо строковыми значениями:
- Объект, содержащий ключ
codes, значение которого является массив объектов, содержащие ключиcodeсо значением строкового типа,agregation_levelсо значением числового типа:
{
"codes": [
{
"code": "code_1_dsvpkdsvm",
"agregation_level": 0
},
{
"code": "code_2_dsvsacoip",
"agregation_level": 0
}
]
}
Пакеты обмена
Обмен данными между текущим ПО и ПО уровня L3 происходит через пакеты обмена в формате "JSON".
Основные пакеты обмена
Пакеты данных которые формируются на уровне ПО L3 и L2.
- Задание на маркировку – Входящий пакет данных для ПО уровня L2 сформированный в ПО уровня L3. Содержит данные о параметрах задания, продукции и списки кодов. В заголовке пакета данных присутствует
IN_MARK_ - Ответ обработки входящего пакета данных – Исходящий пакет данных от ПО уровня L2 для ПО уровня L3. Содержит данные о состоянии обработки входящего пакета "Задание на маркировку". В заголовке пакета данных присутствует
REPORT_IN_MARK_ - Отчет линии – Исходящий пакет данных от ПО уровня L2 для ПО уровня L3. Содержит данные о результатах маркировки в рамках "Задание на маркировку". В заголовке пакета данных присутствует
OUT_MARK_
Задание на маркировку
Структура пакета
Название файла:
- префикс
IN_MARK_– тип пакета обмена - идентификатор
- расширение
.json
Пакет IN_MARK – объект, имеющий 4 поля (ключа):
document– тип значения – объектparameters_document– тип значения – массив объектовparameters_product– тип значения – массив объектовcodes– тип значения – массив объектов
document
Информация о версии и типе пакета данных.
Тип значения – объект.
Основные поля объекта:
version– версия пакета данных, тип значения – строка, значение1.0document_type– тип пакета данных, тип значения – строка, значениеIN_MARK
parameters_document
Список параметров пакета задания.
Тип значения – массив объектов.
Поля объектов (структура всех объектов в массиве одна и та же):
parameter_document_id– порядковый номер параметра задания, повторение номеров не допускается, тип значения – целое числоparamName– название параметра, название должно быть уникальным в списке, тип значения – строкаtype_value– тип данных параметра, тип значение – строка, допустимые значения:N– числоD– дата и времяV– строкаB– логическое значение
paramCaption– заголовок параметра задания для вывода в списке параметров в форме задания, тип значения – строкаparamDescription– описание параметра задания для вывода в списке параметров в форме задания, тип значения – строкаparamValue– значение параметра задания, для этого параметра указывается тип данных в параметреtype_value, тип значения – строкаcategory– категория параметра задания, тип значения – строкаsubcategory– подкатегория параметра задания, тип значения – строка
Пример:
...
"parameters_document": [
{
"parameter_document_id": 1,
"paramName": "document_id",
"type_value": "V",
"paramCaption": "Идентификатор",
"paramDescription": "Идентификатор задания",
"paramValue": "task_id_l;sdkfmv",
"category": "Основное",
"subcategory": "Основное"
},
{
"parameter_document_id": 2,
"paramName": "organization_name",
"type_value": "V",
"paramCaption": "Организация",
"paramDescription": "Организация",
"paramValue": "Название организации",
"category": "Основное",
"subcategory": "Организация"
},
...
],
...
Обязательные параметры
- Номер GTIN продукции:
- Дата производства (в формате даты и времени
ДД.ММ.ГГГГ ЧЧ:мм:сс):
- Номер задания в учетной системе L3:
- Количество кодов в задании потребительских кодов DataMatrix (0-й уровень агрегации):
- Количество кодов в задании групповых кодов DataMatrix/GS-128 (1-й уровень агрегации):
- Количество кодов в задании паллетных кодов GS-128 (2-й уровень агрегации):
- Количество потребительских кодов в агрегате первого уровня агрегации. Требуется для автоматического закрытия агрегата первого уровня:
- Количество кодов первого уровня агрегации в агрегате второго уровня агрегации. Требуется для автоматического закрытия агрегата второго уровня:
- Признак типографского задания:
Да/Нет,Yes/No,TRUE/FALSE:
parameters_product
Список дополнительной информации о продукции. Не является обязательным в пакете задания, но может потребоваться для создания этикеток.
Тип значения – массив объектов.
Поля объектов (структура всех объектов в массиве одна и та же):
parameter_product_id– порядковый номер свойства продукции, повторение номеров не допускается, тип значения – целое числоparamName– название свойства, название должно быть уникальным в списке, тип значения – строкаparamValue– значение свойства продукции, тип значения – строкаcategory– категория свойства продукции, используется для формирования группы в дереве свойств конструктора этикеток, тип значения – строкаsubcategory– подкатегория свойства продукции используется для формирования подгруппы в дереве свойств конструктора этикеток, тип значения – строка
Пример:
...
"parameters_product": [
{
"parameter_product_id": 1,
"paramName": "Вариант_изделия_Артрибут16087gr103",
"paramValue": "МЫЛЬНЫЕ ПУЗЫРИ",
"category": "Потребительские свойства",
"subcategory": "Вариант изделия"
},
{
"parameter_product_id": 2,
"paramName": "Вид_товара_Артрибут12gr103",
"paramValue": "Игрушка- Мыльные пузыри \"Крокодил\" 100 мл",
"category": "Потребительские свойства",
"subcategory": "Вид товара"
},
...
],
...
codes
Список кодов продукции для печати.
Тип значения – массив объектов.
Поля объектов (структура всех объектов в массиве одна и та же):
code_item_id– порядковый номер кода, повторение номеров не допускается, тип значения – целое числоagregation_level– уровень кода агрегации, тип значения – числоformatPrint– формат печати кода, тип значения – строка, допустимые значения:DataMatrixGS1-128DataBar Expanded Stacked
codeExpirationDate– срок годности кода, тип значения – строкаcodeLabel– код маркировки без спецсимволов FNC и GS1, код сопоставления с учетом в ПО уровня L3, тип данных – строкаcodeCaption– код маркировки c идентификаторами применения(01),(21),(91),(92),(93), параметр является обязательным, если полеcodeLabelне указано, то при загрузкеcodeLabelбудет заполнено изcodeCaption
Пример:
...
"codes": [
{
"code_item_id": 1,
"agregation_level": 0,
"formatPrint": "DataMatrix",
"codeExpirationDate": "26.05.2024 00:10:34",
"codeLabel": "codeLabel1",
"codeCaption": "codeCaption1"
},
{
"code_item_id": 2,
"agregation_level": 0,
"formatPrint": "DataMatrix",
"codeExpirationDate": "26.05.2024 00:10:34",
"codeLabel": "codeLabel2",
"codeCaption": "codeCaption2"
},
...
],
...
Пример
Название файла
IN_MARK_c8f3a3b8-81cb-11ed-9781-508492c79c54.json
- Тип пакета:
IN_MARK_ - Идентификатор пакета:
c8f3a3b8-81cb-11ed-9781-508492c79c54 - Формат пакета:
.json
{
"document": {
"version": "1.0",
"document_type": "IN_MARK"
},
"parameters_document": [
{
"category": "Основное",
"paramName": "document_id",
"paramValue": "c8f3a3b8-81cb-11ed-9781-508492c79c54",
"type_value": "V",
"subcategory": "Основное",
"paramCaption": "Идентификатор",
"paramDescription": "Идентификаторзадания",
"parameter_document_id": 1
},
{
"category": "Основное",
"paramName": "organization_name",
"paramValue": "ОООДИДЖИТОРИЯ",
"type_value": "V",
"subcategory": "Организация",
"paramCaption": "Организация",
"paramDescription": "Организация",
"parameter_document_id": 2
},
{
"category": "Основное",
"paramName": "organization_inn",
"paramValue": "7714463230",
"type_value": "V",
"subcategory": "Организация",
"paramCaption": "Организация(ИНН)",
"paramDescription": "ИННорганизации",
"parameter_document_id": 3
},
{
"category": "Основное",
"paramName": "product_name",
"paramValue": "ПИВО-ЭКОНДТЕХНО",
"type_value": "V",
"subcategory": "Продукция",
"paramCaption": "Продукция",
"paramDescription": "Продукция",
"parameter_document_id": 4
},
{
"category": "Основное",
"paramName": "product_gtin",
"paramValue": "04620131970087",
"type_value": "V",
"subcategory": "Продукция",
"paramCaption": "GTIN",
"paramDescription": "GTINпродукции",
"parameter_document_id": 5
},
{
"category": "Основное",
"paramName": "product_expiration_date",
"paramValue": "21.01.20230:00:00",
"type_value": "D",
"subcategory": "Продукция",
"paramCaption": "Срокгодности",
"paramDescription": "Срокгодностипродукции",
"parameter_document_id": 7
},
{
"category": "Основное",
"paramName": "product_production_date",
"paramValue": "22.12.20220:00:00",
"type_value": "D",
"subcategory": "Основное",
"paramCaption": "Датапроизводства",
"paramDescription": "Датапроизводствапродукции",
"parameter_document_id": 6
},
{
"category": "Основное",
"paramName": "batch",
"paramValue": "269",
"type_value": "N",
"subcategory": "Основное",
"paramCaption": "Номерзадания",
"paramDescription": "Номерзадания",
"parameter_document_id": 8
},
{
"category": "Основное",
"paramName": "lot",
"paramValue": "",
"type_value": "V",
"subcategory": "Основное",
"paramCaption": "Партия",
"paramDescription": "Номерпартии",
"parameter_document_id": 9
},
{
"category": "Основное",
"paramName": "count_level_0",
"paramValue": "100",
"type_value": "N",
"subcategory": "Коды",
"paramCaption": "Потребительскиеупаковки",
"paramDescription": "Количествопотребительскихупаковок",
"parameter_document_id": 10
},
{
"category": "Основное",
"paramName": "count_level_1",
"paramValue": "3",
"type_value": "N",
"subcategory": "Коды",
"paramCaption": "Групповыеупаковки",
"paramDescription": "Количествогрупповыхупаковок",
"parameter_document_id": 11
},
{
"category": "Основное",
"paramName": "count_level_2",
"paramValue": "1",
"type_value": "N",
"subcategory": "Коды",
"paramCaption": "Паллеты",
"paramDescription": "КоличествоПаллет",
"parameter_document_id": 12
},
{
"category": "Основное",
"paramName": "in_count_level_1",
"paramValue": "40",
"type_value": "N",
"subcategory": "Агрегация",
"paramCaption": "Вгрупповойупаковке",
"paramDescription": "Количествопотребительскихкодоввгрупповойупаковке",
"parameter_document_id": 13
},
{
"category": "Основное",
"paramName": "in_count_level_2",
"paramValue": "20",
"type_value": "N",
"subcategory": "Агрегация",
"paramCaption": "Впаллете",
"paramDescription": "Количествогрупповыхкодоввпалете",
"parameter_document_id": 14
},
{
"category": "Основное",
"paramName": "printing_house",
"paramValue": "Нет",
"type_value": "B",
"subcategory": "Типография",
"paramCaption": "Типография",
"paramDescription": "Используетсятипографскиекодыпотребительскихупаковок",
"parameter_document_id": 15
},
{
"parameter_document_id": 16,
"paramName": "Set_contents",
"type_value": "M",
"paramCaption": "Составнабора",
"paramDescription": "Составнабора",
"paramValue": [],
"category": "Основное",
"subcategory": "Составнабора"
},
{
"parameter_document_id": 17,
"paramName": "product_predstv",
"type_value": "V",
"paramCaption": "predstv",
"paramDescription": "predstvпродукции",
"paramValue": "Маслорастительное",
"category": "Основное",
"subcategory": "Продукция"
}
],
"parameters_product": [
{
"category": "Потребительскиесвойства",
"paramName": "Тип_продукта_Артрибут15281gr103",
"paramValue": "ПИВО",
"subcategory": "Типпродукта",
"parameter_product_id": 1
},
{
"category": "Идентификациятовара",
"paramName": "Объём_продукции_в_единице_упаковки_Артрибут15784gr24",
"paramValue": "1.5",
"subcategory": "Объёмпродукциивединицеупаковки(л)",
"parameter_product_id": 2
},
{
"category": "Потребительскиесвойства",
"paramName": "Объемная_доля_этилового_спирта_Артрибут31gr103",
"paramValue": "1.5",
"subcategory": "Объемнаядоляэтиловогоспирта(%об.)",
"parameter_product_id": 3
},
{
"category": "Типиматериалупаковки",
"paramName": "Тип_упаковки_Артрибут2710gr14",
"paramValue": "БЛОК",
"subcategory": "Типупаковки",
"parameter_product_id": 4
},
{
"category": "Идентификациятовара",
"paramName": "Полное_наименование_товара_Артрибут2478gr24",
"paramValue": "ПИВО-ЭКОНДТЕХНО",
"subcategory": "Полноенаименованиетовара",
"parameter_product_id": 5
},
{
"category": "Типиматериалупаковки",
"paramName": "Материал_упаковки_Артрибут2713gr14",
"paramValue": "ГОФРОКАРТОНДВУХСЛОЙНЫЙ",
"subcategory": "Материалупаковки",
"parameter_product_id": 6
},
{
"category": "Нормативно-сопроводительнаядокументация",
"paramName": "Код_ОКПД2_Артрибут3961gr22",
"paramValue": "11.05.10.110",
"subcategory": "КодОКПД2",
"parameter_product_id": 7
},
{
"category": "Идентификациятовара",
"paramName": "Наименование_упаковки_товара_Артрибут4424gr24",
"paramValue": "ПИВО-ЭКОНДТЕХНО10X",
"subcategory": "Наименованиеупаковкитовара",
"parameter_product_id": 8
},
{
"category": "Нормативно-сопроводительнаядокументация",
"paramName": "Код_ТНВЭД_Артрибут13933gr22",
"paramValue": "2202910000",
"subcategory": "КодТНВЭД",
"parameter_product_id": 9
},
{
"category": "Идентификациятовара",
"paramName": "Товарный_знак_Артрибут2504gr24",
"paramValue": "1094702",
"subcategory": "Товарныйзнак",
"parameter_product_id": 10
},
{
"category": "Нормативно-сопроводительнаядокументация",
"paramName": "Группа_ТНВЭД_Артрибут3959gr22",
"paramValue": "2202",
"subcategory": "ГруппаТНВЭД",
"parameter_product_id": 11
},
{
"category": "Потребительскиесвойства",
"paramName": "Тип_фильтрации_Артрибут4542gr103",
"paramValue": "НЕФИЛЬТРОВАННОЕ",
"subcategory": "Типфильтрации",
"parameter_product_id": 12
},
{
"category": "Потребительскиесвойства",
"paramName": "Является_ли_пастеризованным_Артрибут4478gr103",
"paramValue": "ДА",
"subcategory": "Являетсялипастеризованным",
"parameter_product_id": 13
},
{
"category": "Состав",
"paramName": "Состав_Артрибут2483gr26",
"paramValue": "Солод",
"subcategory": "Состав",
"parameter_product_id": 14
},
{
"category": "Нормативно-сопроводительнаядокументация",
"paramName": "Код_вида_алкогольной_продукции_Артрибут14231gr22",
"paramValue": "500",
"subcategory": "Кодвидаалкогольнойпродукции",
"parameter_product_id": 15
}
],
"codes": [
{
"codeLabel": "0104620131970087215_X\"6+A93dGVz",
"codeCaption": "(01)04620131970087(21)5_X\"6+A(93)dGVz",
"formatPrint": "DataMatrix",
"code_item_id": 1,
"agregation_level": 0
},
{
"codeLabel": "0104620131970087215_VEs6o93dGVz",
"codeCaption": "(01)04620131970087(21)5_VEs6o(93)dGVz",
"formatPrint": "DataMatrix",
"code_item_id": 2,
"agregation_level": 0
},
{
"codeLabel": "177144632301544611",
"codeCaption": "(00)177144632301544611",
"formatPrint": "GS1-128",
"code_item_id": 1,
"agregation_level": 1
},
{
"codeLabel": "177144632301544635",
"codeCaption": "(00)177144632301544635",
"formatPrint": "GS1-128",
"code_item_id": 2,
"agregation_level": 1
},
{
"codeLabel": "177144632301544628",
"codeCaption": "(00)177144632301544628",
"formatPrint": "GS1-128",
"code_item_id": 3,
"agregation_level": 1
},
{
"codeLabel": "0104620131970087240277144632300000000000001544649",
"codeCaption": "(01)04620131970087(240)277144632300000000000001544649",
"formatPrint": "GS1-128",
"code_item_id": 4,
"agregation_level": 2
}
]
}
Ответ обработки входящего пакета данных
Структура пакета
Название файла:
- префикс
REPORT_IN_MARK_– тип пакета обмена - идентификатор
- расширение
.json
Пакет REPORT_IN_MARK – объект, имеющий 1 поле (ключ):
document– тип значения – объект
document
Содержит основную информацию об ответе обработки входящего пакета данных.
Тип значения – объект.
Основные поля объекта:
document_id– идентификатор пакета данных или идентификатор задания на маркировку, по которому формируется ответ, тип значения – строкаdata– дата формирования пакета данных, тип значения – строка в форматеДД.ММ.ГГГГ ЧЧ:мм:ссreport– статус отработки пакета данных, тип значения – строка, допустимые значения:OKERROR
report_comment– комментарий обработки пакета данных, тип значения – строка
Пример
REPORT_IN_MARK_c8f3a3b8-81cb-11ed-9781-508492c79c54.json
- Тип пакета:
REPORT_IN_MARK_ - Идентификатор пакета:
c8f3a3b8-81cb-11ed-9781-508492c79c54 - Формат пакета:
.json
{
"document": {
"data": "15.11.2022 04:19:58",
"report": "OK",
"document_id": "c8f3a3b8-81cb-11ed-9781-508492c79c54",
"report_comment": "Пакет данных обработан"
}
}
Отчёт линии
Структура пакета
Название файла:
- префикс
OUT_MARK_– тип пакета обмена - идентификатор
- расширение
.json
Пакет OUT_MARK – объект, имеющий 1 поле (ключ):
document– тип значения – объект
document
Содержит основную информацию об отчёте линии.
Тип значения – объект.
Основные поля объекта:
document_id– идентификатор задания, по которому сформирован отчёт с линии, тип значения – строкаcodes– список использованных кодов и их вложений, тип значения – массив объектов, структура объектов:code_item– код маркировки, тип значения – строкаcode– код маркировки с разделителями, тип значения – строкаcodeWeight– вес кода, если он не был установлен, то по умолчаниюnullcode_item_to– список входящих в код вложений (если это агрегат), тип значения – массив объектов, структура объектов:codeLabel– код маркировки, тип значения – строкаcodeWeight– вес кода, если он не был установлен, то по умолчаниюnull
agregation_level– уровень агрегации кода, тип значения – число
Пример
OUT_MARK_c8f3a3b8-81cb-11ed-9781-508492c79c54.json
- Тип пакета:
OUT_MARK_ - Идентификатор пакета:
c8f3a3b8-81cb-11ed-9781-508492c79c54 - Формат пакета:
.json
{
"document": {
"document_id": "89412f99-e1f7-11ef-a423-5254002bc26b",
"codes": [
{
"code_item": "0104620131970698215B11q)Q3km+\"e(91)FFD0(92)dGVzdD7rNC8Rimx6Xd5ZMV8tW9FIKJicDJwT4iUnExA=",
"code": "0104620131970698215B11q)Q3km+\"e\u001d91FFD0\u001d92dGVzdD7rNC8Rimx6Xd5ZMV8tW9FIKJicDJwT4iUnExA=",
"codeWeight": null,
"agregation_level": 1
}
]
}
}