НАЧАЛО >> Collaboration >> Руководство программиста Collaboration📄 Скачать в DOCX
Прикладной модуль не должен хранить собственную историю переписки, если сообщение относится к рабочей записи и должно участвовать в общих списках, публичных ответах или миграции VirtualRef. Вместо этого нужно открыть поток Collaboration и добавлять сообщения через API модуля.
Минимальный пример:
$thread = UseModule('Collaboration')->OpenThread(array(
'title' => 'Обсуждение задачи',
'visibility' => 'internal',
'object' => array(
'module' => 'Tasks',
'dbn' => 'I128F',
'recordType' => 'TASK',
'recordKey' => 'TASK-1'
)
), array('idempotencyKey' => 'task-thread-TASK-1'));
UseModule('Collaboration')->AddMessage($thread['thread']['threadKey'], array(
'text' => 'Комментарий исполнителя',
'visibility' => 'internal'
), array('idempotencyKey' => 'message-unique-key'));
Отдельные действия над сообщением выполняются через ChangeMessageVisibility, AddMention, AddReference, AddReaction и LinkAttachment. Все эти методы возвращают массив с ok, пишут audit и готовят EventBus-событие, если соответствующий runtime-модуль установлен. Типы событий collaboration.* принадлежат Collaboration и регистрируются в EventBus из system JSON модуля перед публикацией.
Универсальные карточки WorkflowView могут выводить секцию comments. Для этого в настройке секций представления используется тип comments, а рендеринг выполняется через Collaboration/RenderRecordComments. Функция строит детерминированный поток для записи, показывает видимые сообщения и сохраняет новый комментарий через штатные OpenThread и AddMessage.
Сообщения workflow-переходов сохраняются в Collaboration, а стандартное поле 907 должно получать только короткую человекочитаемую запись действия. Вложения передаются как ссылки на FT или staging-token TemporaryFiles. Уведомления создаются через EventBus и соответствующие подписчики, а не напрямую из Collaboration.