Перейти к основному содержимому

Описание форматов данных

В этом документе описаны различные способы представления данных, которые используются при работе с инструментом. Понимание этих форматов необходимо для корректного написания сценариев автоматизации.

Рекомендуется к прочтению перед написанием сценариев автоматизации.

Примитивные типы

  • Число - указывается без пробелов, разделитель - точка
  • Дата - передается в формате ISO 8601. Например: 2005-08-09T18:31:42, 2005-08-09
  • Булево значение - возможные значения: true, false, yes, no, 1, 0, Истина, Ложь, Да, Нет.

Ссылки

Ссылки используются для указания на конкретные объекты в системе, например, на определенный элемент справочника или документ.

Ссылка состоит из двух частей:

  • Тип объекта: Определяет, к какому "классу" или категории относится объект. Например, это может быть справочник "Пользователи" или документ "ПКО".
    • Справочник.Пользователи или CatalogRef.Пользователи - означает, что мы ссылаемся на элемент справочника "Пользователи".
    • Документ.ПКО или DocumentRef.ПКО - означает, что мы ссылаемся на документ "ПКО".
  • Идентификатор объекта: Уникальный признак, который позволяет отличить один объект от другого внутри его типа. Подробнее об этом читайте в разделе Идентификатор объекта.

В большинстве случаев, когда вы указываете значения для полей объекта или задаете условия поиска, вам не нужно явно указывать тип ссылки. Система автоматически определит его из контекста (например, из типа поля, которое вы заполняете). Однако, есть ситуации, когда тип указывать необходимо:

  • Если поле может содержать ссылки на объекты разных типов (составной тип).
  • При поиске движений по регистратору.
  • В других случаях, когда невозможно точно определить, к какой таблице данных относится объект.

Способы указания ссылок

Существует несколько способов передать ссылку на объект. Выбор способа зависит от ситуации и вашего удобства.

1. Объект (Структура) с полями

Этот формат обычно используется, когда система возвращает данные в ответ на запрос. Ссылка представляется как структура (или объект) с двумя полями: type (тип объекта) и id (идентификатор объекта).

  • type: Имя типа в формате сериализации 1C (например, CatalogRef.Пользователи, DocumentRef.ПКО) или полное имя объекта (например, Справочник.Пользователи, Документ.ПКО).
  • id: Идентификатор объекта.

Пример:

{
   "Автор": {
      "type": "CatalogRef.Пользователи",
      "id": "a772d037-9519-4c2b-8c9b-ad9de187fe90"
   },
   "Ответственный": {
      "type": "Справочник.Пользователи",
      "id": "ИмяПользователя"
   }
}

2. Строка с указанием типа ссылки

Этот способ удобен для написания сценариев автоматизации, особенно когда нужно указать значение для поля составного типа (то есть поля, которое может ссылаться на объекты разных типов). Ссылка передается одной строкой в формате ТипОбъекта.ИдентификаторОбъекта.

Примеры:

{
   "Автор": "CatalogRef.Пользователи.a772d037-9519-4c2b-8c9b-ad9de187fe90",
   "Ответственный": "Справочник.Пользователи.ИмяПользователя"
}

3. Строка идентификатора (без указания типа)

Это самый простой способ, который удобно использовать в сценариях автоматизации для большинства полей, которые могут ссылаться только на объекты одного заранее известного типа. Вы просто указываете идентификатор объекта.

Примеры:

{
   "Автор": "a772d037-9519-4c2b-8c9b-ad9de187fe90",
   "Ответственный": "ИмяПользователя"
}

Идентификатор объекта

Идентификатор однозначно определяет объект информационной таблицы 1С.

В качестве идентификатора может выступать:

  • Уникальный идентификатор (GUID): Специальный 32-значный код, гарантирующий уникальность объекта. Например, a772d037-9519-4c2b-8c9b-ad9de187fe90.
  • Реквизит UID: Если у объекта есть специальное поле (реквизит) с названием UID, его значение также может использоваться как идентификатор.
  • Имя предопределенного элемента: Некоторые объекты в системе (например, стандартные значения или настройки) являются "предопределенными" и имеют уникальные имена, которые можно использовать как идентификаторы.
  • Номер документа: Для документов можно использовать их номер. Поиск по номеру происходит среди документов текущего года.
  • Код или наименование справочника: Для элементов справочников (например, список товаров или контрагентов) можно использовать их код (уникальный в рамках справочника) или наименование.
  • Набор ключевых реквизитов для записи регистра: Для записей в регистрах идентификатором служит комбинация значений нескольких ключевых полей, разделенных точкой с запятой (;).

Чтобы точно узнать, какие поля и в каком порядке используются для поиска конкретного типа объекта, вы можете обратиться к специальной странице с метаданными. Эта информация находится в колонке "Поиск" для каждого объекта. Если у объекта указан признак "Предопределенные", это означает, что для него можно использовать поиск по именам предопределенных элементов. Ссылка на страницу метаданных: [РатМетаданные]([../exts/rat/src/CommonTemplates/РатМетаданные/Template.txt](https://github.com/bia-technologies/rat/blob/master/exts/rat/src/CommonTemplates/РатМетаданные /Template.txt)).

Серверные выражения

В некоторых случаях требуется, чтобы значение какого-либо поля было вычислено не на вашей стороне, а непосредственно во внешней системе 1С. Это может быть полезно в следующих случаях:

  • Тип данных не поддерживается напрямую: Если RAT (инструмент автоматизации) не поддерживает работу с нужным вам типом данных.
  • Нужны вычисляемые значения 1С: Если требуется использовать результат выполнения какой-либо функции или расчета, встроенного в 1С. Например, получить текущую дату и время сервера (ТекущаяДата()) или рассчитать сумму по сложной формуле.
  • Экономия вызовов: Чтобы не делать лишних запросов к серверу для получения промежуточных данных.

Для указания таких выражений используется специальная конструкция: Вычислить(<Выражение>). Все, что находится внутри скобок после слова Вычислить, будет выполнено на сервере 1С, и результат этого выполнения будет использован в качестве значения.

Примеры:

  • Получить текущую дату и время сервера: Вычислить(ТекущаяДата())
  • Рассчитать произведение двух чисел: Вычислить(100 * 20)
  • Использовать значение другой переменной или поля в вычислении:
{
  "Период": "Вычислить(ТекущаяДата())",
  "СуммаСмены": "Вычислить(100 * 20)",
  "КоличествоЧеков": 1,
  "Активность": "Да"
}