Где найти и как редактировать форму сообщений Системы взаимодействия в 1С

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

Многие разработчики при работе с механизмом Системы взаимодействия (Collaboration System) в среде «1С:Предприятие» сталкиваются с неожиданной проблемой: попытка найти стандартную форму чата или окна сообщений в дереве метаданных конфигурации не приносит успеха. В этой статье мы подробно разберем, почему это происходит, где на самом деле «спрятана» эта форма и какими методами мы можем повлиять на ее поведение и внешний вид.

Природа интерфейса Системы взаимодействия

Для начала проанализируем, как устроена эта система «под капотом». В отличие от привычных нам справочников, документов или обработок, Система взаимодействия не является объектом метаданных, интерфейсную часть которого можно открыть в редакторе форм. Это платформенный механизм, встроенный непосредственно в ядро системы начиная с версии 8.3.10.

Рассмотрим основные особенности такого подхода:

  1. Программная генерация: Отрисовка всех элементов (окон чатов, списков обсуждений, кнопок видеозвонков) происходит динамически на стороне клиентского приложения. Платформа самостоятельно решает, как будут выглядеть «пузыри» сообщений и элементы управления.
  2. Отсутствие в конфигураторе: Вы не найдете объект «ФормаСообщенияСистемыВзаимодействия» в дереве объектов. Следовательно, привычный метод «перетаскивания кнопок» в визуальном редакторе здесь неприменим.
  3. Закрытость стилей: Поскольку интерфейс генерируется платформой, разработчик не имеет прямого доступа к CSS-стилям или внутренним свойствам оформления элементов управления внутри окна чата.

Альтернативные способы кастомизации интерфейса

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

Использование элемента Поле обсуждения

Самый эффективный способ кастомизации — это создание собственной формы и встраивание в нее специального элемента. Выясним, как это сделать по шагам:

  1. Создадим новую произвольную управляемую форму в любой обработке или документе.
  2. Добавим в реквизиты формы новый элемент.
  3. В качестве типа данных для реквизита выберем ДанныеФормыЭлементСистемыВзаимодействия (в ряде версий это может быть связано с типом CollaborationSystem).
  4. Перетащим этот реквизит на рабочую область формы. Платформа автоматически создаст элемент типа Поле обсуждения.

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

Программное управление через менеджер системы

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


// Пример создания обсуждения для документа "ЗаказКлиента"
Процедура СоздатьОбсуждениеНаОснованииОбъекта(СсылкаНаДокумент)
    
    // Получаем менеджер системы взаимодействия
    Менеджер = СистемаВзаимодействия;
    
    // Пытаемся найти существующее обсуждение по ключу (ссылке на объект)
    Отбор = Новый Структура("Ключ", СсылкаНаДокумент);
    СписокОбсуждений = Менеджер.ПолучитьОбсуждения(Отбор);
    
    Если СписокОбсуждений.Количество() = 0 Тогда
        // Создаем новое обсуждение, если оно не было найдено
        НовоеОбсуждение = Менеджер.СоздатьОбсуждение();
        НовоеОбсуждение.Ключ = СсылкаНаДокумент;
        НовоеОбсуждение.Заголовок = "Обсуждение по заказу: " + Строка(СсылкаНаДокумент);
        
        // Добавляем участников (например, текущего пользователя)
        НовоеОбсуждение.Участники.Добавить(ПользователиИнформационнойБазы.ТекущийПользователь().ИдентификаторПользователяИБ);
        
        НовоеОбсуждение.Записать();
    КонецЕсли;

КонецПроцедуры

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

Обработка событий системы взаимодействия

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

Например, использование метода ПодключитьОбработчикОповещенияОНовыхСообщениях позволяет реагировать на активность в чатах в реальном времени. Рассмотрим, как это помогает решить проблему «редактирования формы»: если вы не можете добавить кнопку в форму, вы можете выводить собственное всплывающее окно или вопрос пользователю, когда в чате появляется ключевое слово.

Интеграция и Webhooks

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

Выясним возможности интеграции:

Основные ограничения

Важно понимать пределы возможностей разработчика, чтобы не тратить время на невыполнимые задачи:

  1. Нельзя изменить цвета: Вы не можете поменять цвет фона сообщений или шрифт в стандартном окне.
  2. Нельзя менять состав команд: Кнопки «Видеозвонок», «Файлы» и другие являются системными. Их нельзя скрыть или переставить местами программно в стандартном интерфейсе.
  3. Контекстное меню: Вы не можете добавить свои пункты в контекстное меню, которое появляется при нажатии правой кнопкой мыши на сообщение в стандартном окне.

Итоги и рекомендации

Подводя итог нашему анализу, зафиксируем: форму сообщений «Системы взаимодействия» нельзя найти в конфигураторе, потому что ее не существует как отдельного объекта метаданных. Она генерируется платформой «на лету».

Для решения прикладных задач используйте следующие стратегии:

  1. Если нужно изменить расположение чата на экране — используйте свои управляемые формы с элементом Поле обсуждения.
  2. Если нужно автоматизировать процессы — используйте методы объекта СистемаВзаимодействия (создание обсуждений, добавление участников).
  3. Если нужно реагировать на контент — внедряйте обработчики событий получения сообщений.

Таким образом, несмотря на отсутствие прямого доступа к форме, платформа предоставляет достаточно инструментов для глубокой интеграции системы общения в бизнес-логику вашего прикладного решения.

← На главную