Skip to content

Instantly share code, notes, and snippets.

@DarkVss
Last active April 13, 2023 14:59
Show Gist options
  • Save DarkVss/17545c6620853aef304eb1bc9497c1bb to your computer and use it in GitHub Desktop.
Save DarkVss/17545c6620853aef304eb1bc9497c1bb to your computer and use it in GitHub Desktop.

Первая версия описания номенклатуры

Описание представленное ниже не является конечным руководством к реализации на базе средств 1С, а описанием возможностей требуемых от конечных данных получаемых внешним источником

Идентификаторы в любом виде и назначении должны соответствовать следующему regexp-выражению

[a-zA-Z0-9_\-]

Параметрическое описание каждого товара разделяется на две части:

  • "Свойства" - параметры строго относящиеся к категории размещения и обособленно хранящиеся в товаре
  • "Параметры" - параметры относящиеся ко всем товар

Типы Свойства

Тип Название в интерфейсе Тип хранимых данных при хранении в товаре Описание
boolean Логическое значение boolean Визуализация состояния Да/Нет
number Число int Может использоваться в фильтрах тип период, от, до
text Строка string
color Цвет string Цвет представленный в HEX(для визуализации пользователю)
multi_text Список строк string[] Массив строк
multi_color Список цветов string[] Массив цветов

Хранение описания свойств в категории

Каждое свойство имеет свой уникальный идентификатор(далее UID) в рамках рассматриваемой категории.
К этому UID привязаны следующие данные

Обязательность Ключ Тип данных Описание
+ label string Название свойства
+ type string Тип свойства
+ values array Допустимые значения свойства (отсутствует у Логическое значение )
- filter_show boolean Флаг отображении в фильтрах
- filter_position integer Позиция отображения в фильтрах
- filter_active boolean Состояние раскрытости при первом показе фильтров (раскрыта фильтрация или свернута)
- card_position integer Позиция отображения в карточке товара
- card_separated boolean Показывается свойство в отдельном блоке в карточке товара, или в общем списке

Реализация необязательных полей позволит централизованно управлять отображениями визуализацией на конечных сайтов, что позволит избежать ситуации, когда на одном сайте поменяли, а на другом - нет.
Нужно четко понимать, будут реализованны необязательные поля или нет, так как от этого зависит конечная обработка свойств при проведении синхронизации номенклатуры

Структура поля "Допустимые значения свойств" (values)

Это массив, где каждый элемент массива представляет собой описание одного из вариантов значений для свойства и содержит два параметра:

  • key - значение, позволяющее однозначно идентифицировать вариант при хранении и передаче внутри системы или между системами (имеет соответствующий тип данных)
  • label - человеко понятное обозначения варианта, которое показывается пользователю

Для типа данных Логическое значение данная структура отсутствует


Пример хранения свойства с типом Строка

{
  "chip" : {
    "label"           : "Чип",
    "type"            : "text",
    "values"          : [
      {
        "key"   : "mifare_1k",
        "label" : "Mifare 1k"
      },
      {
        "key"   : "mifare_1k_p",
        "label" : "Mifare 1k Plus"
      }
    ],
    "filter_show"     : true,
    "filter_position" : 1,
    "filter_active"   : false,
    "card_position"   : 2,
    "card_separated"  : true
  }
}

Хранение выбранных значений свойств в товаре

Свойства в товаре хранятся в виде ассоциативного массива, где каждая пара это "UID свойства => "key" вариант допустимого значения"

Для типа данных Логическое значение в виде значения хранится булевое значение

Пример хранения свойств в товаре

{
  "chip"        : "mifare_1k",
  "is_bad_good" : false,
  "wire_length" : 20,
  "main_color"  : "#000000",
  "protocol"    : [
    "wifi",
    "bluetooth_4.2",
    "nfc"
  ]
}

Виды Параметров

Ключ Название Описание
name string Название товара
sku string SKU - Уникальный складской идентификатор товара
price int Цена товара
weight int Вес товара
dimensions integer[string] Размерность товара (ширина, высота, глубина(длина))

Пример Параметра Размерность товара dimensions

{
  "width"  : 115,
  "height" : 54,
  "depth"  : 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment