Перейти к содержанию
+7 (495) 991 35 10 info@encode.one
Скачать в PDF

Файловый обмен

Определения

JSON (JavaScript Object Notation) – формат обмена данными.

Особенности:

  • данные организованы в виде пары "ключ-значение"
  • ключ всегда является строкой и записывается в двойные кавычки (")
  • значение может иметь любой тип данных:
    • строковые значения записываются в двойные кавычки (")
    • объекты описываются фигурными скобками ({})
    • массивы описываются квадратными скобками ([])
    • логические (булевы) значения записываются без кавычек (true, false)
    • числовые значения записываются без кавычек (12, 0.5, -2)

Объект – структура, содержащая неупорядоченный набор пар "ключ-значение".

Массив – структура, содержащая упорядоченный набор значений (объекты, строки, числовые значения).

Корневым элементом пакета JSON может быть либо объект, либо массив. В большинстве случаев корневым элементом является объект.

Примеры.

  • Объект, содержащий ключ document, значение которого является объект с ключами version, document_type со строковыми значениями:
{
    "document": {
        "version": "1.0",
        "document_type": "SPEC_TYPE"
    }
}
  • Объект, содержащий ключ codes, значение которого является массив объектов, содержащие ключи code со значением строкового типа, agregation_level со значением числового типа:
{
    "codes": [
        {
            "code": "code_1_dsvpkdsvm",
            "agregation_level": 0
        },
        {
            "code": "code_2_dsvsacoip",
            "agregation_level": 0
        }
    ]
}

Пакеты обмена

Обмен данными между текущим ПО и ПО уровня L3 происходит через пакеты обмена в формате "JSON".

Основные пакеты обмена

Пакеты данных которые формируются на уровне ПО L3 и L2.

  1. Задание на маркировку – Входящий пакет данных для ПО уровня L2 сформированный в ПО уровня L3. Содержит данные о параметрах задания, продукции и списки кодов. В заголовке пакета данных присутствует IN_MARK_
  2. Ответ обработки входящего пакета данных – Исходящий пакет данных от ПО уровня L2 для ПО уровня L3. Содержит данные о состоянии обработки входящего пакета "Задание на маркировку". В заголовке пакета данных присутствует REPORT_IN_MARK_
  3. Отчет линии – Исходящий пакет данных от ПО уровня L2 для ПО уровня L3. Содержит данные о результатах маркировки в рамках "Задание на маркировку". В заголовке пакета данных присутствует OUT_MARK_

Задание на маркировку

Структура пакета

Название файла:

  • префикс IN_MARK_ – тип пакета обмена
  • идентификатор
  • расширение .json

Пакет IN_MARK – объект, имеющий 4 поля (ключа):

  • document – тип значения – объект
  • parameters_document – тип значения – массив объектов
  • parameters_product – тип значения – массив объектов
  • codes – тип значения – массив объектов
{
    "document": {...},
    "parameters_document": [...],
    "parameters_product": [...],
    "codes": [...]
}

document

Информация о версии и типе пакета данных.

Тип значения – объект.

Основные поля объекта:

  • version – версия пакета данных, тип значения – строка, значение 1.0
  • document_type – тип пакета данных, тип значения – строка, значение IN_MARK
...
"document": {
    "version": "1.0",
    "document_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 продукции:
"paramName": "product_gtin",
"paramValue": "04620131970087",
"type_value": "V",
  • Дата производства (в формате даты и времени ДД.ММ.ГГГГ ЧЧ:мм:сс):
"paramName": "product_production_date",
"paramValue": "22.12.2022 0:00:00",
"type_value": "D",
  • Номер задания в учетной системе L3:
"paramName": "batch",
"paramValue": "269",
"type_value": "N",
  • Количество кодов в задании потребительских кодов DataMatrix (0-й уровень агрегации):
"paramName": "count_level_0",
"paramValue": "100",
"type_value": "N",
  • Количество кодов в задании групповых кодов DataMatrix/GS-128 (1-й уровень агрегации):
"paramName": "count_level_1",
"paramValue": "3",
"type_value": "N",
  • Количество кодов в задании паллетных кодов GS-128 (2-й уровень агрегации):
"paramName": "count_level_2",
"paramValue": "1",
"type_value": "N",
  • Количество потребительских кодов в агрегате первого уровня агрегации. Требуется для автоматического закрытия агрегата первого уровня:
"paramName": "in_count_level_1",
"paramValue": "40",
"type_value": "N",
  • Количество кодов первого уровня агрегации в агрегате второго уровня агрегации. Требуется для автоматического закрытия агрегата второго уровня:
"paramName": "in_count_level_2",
"paramValue": "20",
"type_value": "N",
  • Признак типографского задания: Да/Нет, Yes/No, TRUE/FALSE:
"paramName": "printing_house",
"paramValue": "Нет",
"type_value": "B",

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 – формат печати кода, тип значения – строка, допустимые значения:
    • DataMatrix
    • GS1-128
    • DataBar 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

Содержит основную информацию об ответе обработки входящего пакета данных.

Тип значения – объект.

Основные поля объекта:

  • document_id – идентификатор пакета данных или идентификатор задания на маркировку, по которому формируется ответ, тип значения – строка
  • data – дата формирования пакета данных, тип значения – строка в формате ДД.ММ.ГГГГ ЧЧ:мм:сс
  • report – статус отработки пакета данных, тип значения – строка, допустимые значения:
    • OK
    • ERROR
  • 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

Содержит основную информацию об отчёте линии.

Тип значения – объект.

Основные поля объекта:

  • document_id – идентификатор задания, по которому сформирован отчёт с линии, тип значения – строка
  • codes – список использованных кодов и их вложений, тип значения – массив объектов, структура объектов:
    • code_item – код маркировки, тип значения – строка
    • code – код маркировки с разделителями, тип значения – строка
    • codeWeight – вес кода, если он не был установлен, то по умолчанию null
    • code_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
      }
    ]
  }
}