Практика ЛДО · Интеграции

Как изменить разрешённый реквизит документа 1С из n8n

Настройка разрешённых полей, чтение ревизии и контролируемая запись. Пример комментария и разбор конфликта параллельных изменений.

Вернуть результат внешней проверки в документ

Внешний сервис проверил данные заказа, и результат нужно записать в комментарий или дополнительный реквизит 1С. Для такой задачи ЛДО Интеграции предоставляют контролируемую операцию изменения разрешённых полей непроведённого документа.

Администратор заранее определяет доступные поля в 1С. Workflow выбирает опубликованный идентификатор и передаёт значение подходящего типа. Нельзя подменить это произвольным запросом, BSL-кодом или именем любого реквизита.

Для первого сценария удобно выбрать одно некритичное строковое поле. Не начинайте с массового обновления документов: сначала подтвердите правильность выбора предмета, правила разрешений и работу при конфликте изменений.

Что разрешает администратор в 1С

Комментарий заказа покупателя в редакторе разрешённых полей
ЛДО 6.0.0.2: подготовка настройки для комментария заказа покупателя. Учебный редактор показан до сохранения; действующие разрешения базы этим снимком не подтверждаются.

Откройте «Настройки согласования → ЛДО Интеграции → Настройка автоматизаций → Добавить документ». Выберите «Заказ покупателя», затем реквизит «Комментарий» и нажмите «Добавить». В редакторе конкретного документа выбираются доступные для записи реквизиты. Дополнительные реквизиты УНФ показаны с соответствующей пометкой. Идентификатор поля создаётся расширением и сохраняется с настройкой — его не нужно угадывать по названию колонки.

Поддерживаются строки, числа, булевы значения, даты, разрешённые значения перечислений и ссылки заданного типа. Дополнительный реквизит должен существовать в базе до настройки. Дополнительные сведения не следует считать тем же самым механизмом.

Операция ограничена непроведёнными документами и явным набором полей. Номер, дата, организация, контрагент, валюта и другие критичные реквизиты, а также табличные части этой операцией не изменяются. Выполнение учитывает права пользователя 1С.

После изменения разрешений сохраните настройку и обновите «Получить возможности базы» в узле «1С через LDO Relay». Workflow должен использовать актуальный список write_fields.

Последовательность чтения и записи

Чтение ревизии, проверка конфликта и запись разрешённого поля
Схема по документации и исходникам ЛДО. Это не скриншот выполненного сценария.
  1. Получить возможности базыУбедиться, что нужный тип документа и поле опубликованы для записи.
  2. Прочитать документЗафиксировать его идентификатор и полученную revision.
  3. Проверить результат внешнего действияОпределить новое значение и убедиться, что оно соответствует разрешённому типу.
  4. Изменить реквизиты документаПередать идентификатор поля, значение и ожидаемую ревизию.
  5. Проверить результатУбедиться в изменении нужного поля и обработать возможный отказ.

Пример тела изменений для поля, опубликованного именно под ключом comment:

{ "comment": "Проверено внешним сервисом" }

Ключ в примере условный: используйте идентификатор из настроек вашей базы. Название «Комментарий» в интерфейсе не гарантирует, что внешним ключом будет comment.

В каталоге продукта есть выключенный шаблон relay.document-fields-update с последовательностью чтения и изменения. До запуска нужно настроить разрешения и выбрать реальный тестовый документ.

Почему старая ревизия должна быть отклонена

Между чтением и записью документ мог изменить сотрудник или другой процесс. Перед записью 1С блокирует документ и сравнивает ожидаемую ревизию с текущей. При расхождении операция возвращает revision_conflict.

Такой ответ означает, что исходное состояние уже изменилось. Нельзя просто повторять старую запись до успеха. Заново прочитайте документ, сравните актуальные данные и решите, остаётся ли предложенное изменение допустимым. При неоднозначности передайте задачу человеку.

В проверке 9 октября 2026 года комментарий отдельного непроведённого заказа изменился на «Учебный пример ЛДО: проверено». Повтор с прежней ревизией вернул revision_conflict, чужое поле — field_not_allowed, число вместо строки — field_value_invalid. Итоговый комментарий сохранился. Это результат серверной операции 1С; прохождение Relay, пользовательских прав и полного workflow проверяйте отдельно.

Если поле содержит ссылку на объект 1С

Для ссылочного поля администратор может разрешить только UUID, UUID с поиском или дополнительно выбор из кэша. По умолчанию нельзя считать, что workflow имеет право искать по всему справочнику.

Если используется поиск при выполнении, автоматический выбор продолжается только при единственном совпадении. Несколько одноимённых сотрудников требуют явного уточнения. Выбирать первый результат небезопасно для корректности данных.

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

Проверка перед подключением к рабочему процессу

  • Разрешённое строковое поле меняется у выбранного непроведённого документа.
  • Неразрешённое поле и значение неправильного типа отклоняются.
  • Проведённый документ не изменяется этой операцией.
  • После параллельного изменения старая ревизия даёт отказ, новое значение не затирает чужую правку.
  • Ошибки отражаются в выполнении workflow и доступны ответственному.
  • Штатное согласование документа после операции продолжает работать ожидаемым образом.

Не путайте эту операцию с изменением полей внешнего процесса: process.fields.update относится к данным экземпляра процесса ЛДО, а document.fields.update — к разрешённым реквизитам документа. Выбор зависит от того, где должен храниться результат.