Вопрос интеграции современных механизмов платформы 1С, таких как Система взаимодействия, в конфигурации, работающие на обычных формах (ОФ), является актуальным для многих компаний, использующих проверенные временем решения (например, УТ 10.3 или УПП 1.3). В данной статье мы подробно разберем, можно ли внедрить этот функционал, с какими ограничениями придется столкнуться и как обойти интерфейсные барьеры.
Проанализируем техническую документацию платформы «1С:Предприятие 8». Согласно официальным данным, функционал обсуждений и системы взаимодействия доступен в следующих режимах работы:
Из этого перечня следует важный вывод: стандартный интерфейс чата, видеозвонков и панель оповещений в обычном приложении не отображаются. Система взаимодействия глубоко интегрирована во фреймворк интерфейса «Такси», который отсутствует в старой архитектуре обычных форм. Рассмотрим подробнее, что это означает для разработчика.
Несмотря на отсутствие визуальных элементов, программный интерфейс (API) системы взаимодействия доступен в коде. Мы можем использовать встроенный язык для работы с объектами системы. Выясним причину, почему этого недостаточно для полноценной работы:
Технически в конфигурации на ОФ вы можете обращаться к объекту МенеджерСистемыВзаимодействия. Это позволяет выполнять следующие действия:
Однако в обычных формах полностью отсутствует событийная модель реального времени для этого механизма. В управляемом приложении платформа самостоятельно «слушает» сервер взаимодействия и мгновенно обновляет интерфейс при поступлении нового сообщения. В обычном приложении стандартного обработчика оповещений для системы взаимодействия нет, поэтому пользователь не узнает о пришедшем сообщении, пока форма не будет принудительно обновлена программно.
Разберем наиболее жизнеспособный вариант реализации задачи. Платформа 8.3 поддерживает работу управляемых форм внутри обычного приложения. Это позволяет нам интегрировать функционал «Такси» точечно. Рассмотрим алгоритм действий:
ОткрытьФорму) платформа инициализирует контекст управляемого интерфейса.В этом случае внутри конкретного окна чат и уведомления будут работать корректно. Однако системные «toast-уведомления» (всплывающие окна в углу экрана) все равно могут не отображаться, так как в обычном приложении отсутствует глобальная Панель оповещений.
Часто систему взаимодействия пытаются внедрить для связи с IP-телефонией, как это реализовано в современных версиях «1С:Управление нашей фирмой» (УНФ). Проанализируем ситуацию с готовыми расширениями от провайдеров.
Большинство современных интеграций выпускаются в виде расширений конфигурации. Эти расширения изначально рассчитаны на работу с объектами управляемого приложения. При попытке установить такое расширение на базу с ОФ (например, УТ 10.3), оно часто «не взлетает», так как обращается к элементам интерфейса, которых не существует в обычном приложении. Для адаптации придется вручную извлекать логику из расширения и переписывать ее, заменяя вызовы управляемого интерфейса на программную работу с объектами или внешними компонентами.
Разберем важный момент, касающийся лицензионной политики. Если вы планируете использовать систему взаимодействия не через публичный облачный сервер 1С, а развернуть собственный 1С:Collaboration Server, вам потребуется:
Для небольших компаний на обычных формах это может стать существенным финансовым препятствием.
Посмотрим на пример кода, который позволяет проверить, доступна ли система взаимодействия в текущем контексте выполнения, прежде чем вызывать ее методы:
Если СистемаВзаимодействия.Доступна() Тогда
// Выполняем действия с сообщениями
ТекстСообщения = "Новый звонок от Mango Office";
// Программное создание обсуждения или отправка
Иначе
Сообщить("Система взаимодействия не поддерживается данным клиентом или не настроена.");
КонецЕсли;
Проанализировав ситуацию, можно сделать следующие выводы:
ПоказатьОповещениеПользователя, если оно поддерживается в вашем контексте, или через обработку ожидания).Если же стоит задача использовать именно интерфейс системы взаимодействия, единственным надежным путем остается постепенный перевод нужных участков системы (форм операторов) на управляемый интерфейс, запуская их внутри старого приложения.