Перейти к основному содержанию
`Ctrl`+`K`

# Асинхронное обновление данных в связанных классах

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

Обновление происходит каждые пять минут.

Внимание

На выполнение операции обновления даётся десять попыток, то есть в течении пятидесяти минут атрибуты обновятся или нет, если документ всё ещё заблокирован.

Что бы добавить обновить данные в связанном классе, необходимо зарегистрировать её в очереди:

    Btk_SyncDataQueueApi().register(
      sOperCode = "UpdateDocVerByDoc",
      sJexl =
        """var ropDocVer = Wf_DocVerApi.load(123L);
          |Wf_DocVerApi.setsCaption(ropDocVer, "new Caption");
          |""".stripMargin,
      gidSrc = parent_Rop.gid,
      gidPurpose = purpose_Rop.gid,
      isOnlyLastExecute = false,
      isExecuteAnotherBySrcOnError = true
    )

Очередь группируется по „Коду операции“ и „Глобальному идентификатору объекта источника“ и образует подгруппу выполняемых скриптов. В свою очередь подгруппа сортируется по дате создания и внутри по идентификатору записи очереди.

Флаг `isOnlyLastExecute` означает, что в подгруппе будет выполнен только последний скрипт, остальные будут помечены как не обязательные. Если признак выставлен только на одной записи в подгруппе, он повлияет на всю группу.

Флаг `isExecuteAnotherBySrcOnError` означает, что если текущий скрипт был выполнен с ошибкой, то последующие скрипты всё равно будут выполняться. Если признак не стоит, то последующие скрипты не будут выполнены, но у них будет увеличен счётчик пропуска.

Журнал очереди обновления данных можно посмотреть в приложении «Настройка системы» -> «Настройки и сервисы» -> «Очередь синхронизации данных классов». В этом же отображении можно внепланово синхронизировать данные.

Все исполненные операции автоматически очищаются через 180 дней после создания. А все не исполненные через 365 дней.