Доступ к текущему объекту Liquid

Последние изменения: 01.09.2023

Массив "entity"

Используя Liquid вы можете получить доступ к текущему объекту (например, к заказу покупателя, если вы делаете кнопку в "Заказах покупателей"), используя массив {{ entity }}.

С английского entity переводится как "объект" или "сущность".

В МоёмСкладе entity - это какой-то объект в целом. Например, на скриншоте выше объектом является документ "Заказ покупателя". Объект всегда состоит из каких-то отдельных частей. Например, в документе "Заказ покупателя" есть его название/номер, дата, организация, контрагент и др. поля. И Liquid хранит это всё в одноименном массиве {{ entity }}


Работа с данными из полей

Но мало получить данные из какого-то поля, как правило с ними требуется сделать какие-то действия, и потом показать в МоёмСкладе. Для этого используются переменные. Например запишем название документа в var1


{% capture var1 %}{{ entity.name }}{% endcapture %}


Для передачи данных требуется использовать переменные, описанные в разделе Работа с переменными.


И просто выведем его как сообщение сотруднику


В интерфейсе это будет выглядеть так:



Обратите внимание, что пример ниже не сработает! Поскольку к{{ entity.name }} можно обратиться только в окне для ввода Liquid кода! Поэтому требуется использовать переменные, как описано в примере выше.

Состав массива "entity"


Выше мы рассматривали только один объект - заказ покупателя, и только одно его значение - name. Но таких объектов в МоёмСкладе много, и у каждого из них свой набор значений. Какие-то могут повторяться (значение name, например, есть у всех объектов), а какие-то могут быть только лишь у одного объекта.


Примеры значений:
name - наименование
description - описание/комментарий
code - код (товара/контрагента)
sum - сумма
created - момент создания сущности
updated - момент последнего обновления сущности
article - артикул
email - адрес электронной почты
phone - номер телефона
attributes - массив доп. полей
firstName - имя
middleName - отчество
lastName - фамилия
Полную структуру объектов и их значений можно узнать по ссылке.


Дополнительные поля


В МоёмСкладе есть встроенные поля (как на первом скриншоте, например, "организация", "контрагент" и т.д.), а так же есть возможность добавить собственные. Например, в заказах покупателей создадим доп. поле "накладная СДЭК", куда будем писать трек-номер. Как же к нему теперь обратиться через Liquid?
Все доп. поля в МоёмСкладе называются attribute, и хранятся в соответствующем массиве attributes (который, в свою очередь, хранится в массиве entity). И у каждого доп. поля есть 2 свойства: name (название) и value (значение). Вот именно по ним и происходит идентификация. Код будет выглядеть вот так: 


{% for attribute in entity.attributes %}<br data-identifyelement="758"> {% if attribute.name == "накладная СДЭК" %}<br data-identifyelement="759">   {% capture var1 %}{{ attribute.value }}{% endcapture %}<br data-identifyelement="760"> {% endif %}<br data-identifyelement="761">{% endfor %}


Да, чтобы просто узнать значение из доп. поля, требуется написать такую большую конструкцию. Рассмотрим как всё работает:


  • Перебираем все доп. поля в объекте


{% for attribute in entity.attributes %}<br data-identifyelement="775">    ...<br data-identifyelement="776">{% endfor %}


  • Если при переборе доп. полей встречаем такое, название которого совпадает с "накладная СДЭК"

 ...<br data-identifyelement="784">   {% if attribute.name == "накладная СДЭК" %}<br data-identifyelement="785">     ...<br data-identifyelement="786">   {% endif %}<br data-identifyelement="787"> ... 


  • То значение этого доп. поля помещаем в переменную var1


...<br data-identifyelement="797">  ...<br data-identifyelement="798">    {% capture var1 %}{{ attribute.value }}{% endcapture %}<br data-identifyelement="799">  ...<br data-identifyelement="800">...


Если требуется получить не только значение доп. поля, но и его название, то просто воспользуемся уже 2-мя переменными


...<br data-identifyelement="809">    {% capture var1 %}{{ attribute.name }}{% endcapture %}<br data-identifyelement="810">    {% capture var2 %}{{ attribute.value }}{% endcapture %}<br data-identifyelement="811">...


Далее просто выведем их сотруднику


{{ entity }}. С английского entity переводится как "объект" или "сущность"

Иллюстрация того, чем является entity в МоёмСкладе

В МоёмСкладе entity - это какой-то объект в целом. Например, на скриншоте выше объектом является документ "Заказ покупателя". Объект всегда состоит из каких-то отдельных частей. Например, в документе "Заказ покупателя" есть его название/номер, дата, организация, контрагент и др. поля. И Liquid хранит это всё в одноименном массиве {{ entity }}

Доступ к определенным полям

Как было сказано выше, entity - это объект в целом. Но для рабочих процессов нужны значения из определенных полей. И чтобы получить к ним доступ в Liquid используется специальная форма записи: {{ массив.значение }}. Например, чтобы получить название документа, требуется написать:

{{ entity.name }}

Помогла ли вам статья?