Как понимать свойство «Оповещение» при программном создании сообщения в Системе взаимодействия 1С?

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

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

Анализ терминологической путаницы: «Оповещение» или «Обсуждение»?

Первым делом проанализируем синтакс-помощник и документацию на ИТС. Если мы попытаемся найти свойство Оповещение у объекта СообщениеСистемыВзаимодействия, то потерпим неудачу. Такого свойства в объектной модели платформы 1С попросту не существует. Исходя из логики работы платформы и разборов экспертов, мы можем сделать вывод, что в формулировке экзаменационного вопроса допущена техническая опечатка.

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

Программная модель создания сообщения

Разберем по шагам процесс генерации нового сообщения в Системе взаимодействия. Для этого используется менеджер системы взаимодействия и метод фабрики объектов. Посмотрим на типовой пример кода:


// Получаем идентификатор обсуждения (например, по уникальному ключу или контексту)
ИдентификаторОбсуждения = СистемаВзаимодействия.ПолучитьИдентификаторОбсуждения("УникальныйКлючОбсуждения");

// Создаем объект сообщения
НовоеСообщение = СистемаВзаимодействия.СоздатьСообщение(ИдентификаторОбсуждения);
НовоеСообщение.Текст = "Приветственное сообщение в системе";
НовоеСообщение.Записать();

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

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

Обязательность заполнения для разных типов сообщений

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

  1. Неконтекстные обсуждения: Создаются пользователями произвольно (групповые чаты или личная переписка). Для программного создания сообщения в таком чате нам необходимо передать идентификатор этого обсуждения.
  2. Контекстные обсуждения: Привязаны к ссылке объекта (например, ДокументСсылка.РеализацияТоваровУслуг). Чтобы отправить сообщение в такое обсуждение, разработчик сначала вызывает метод ПолучитьИдентификаторОбсуждения(), передавая туда ссылку на объект, а затем полученный идентификатор обязательно передает в метод создания сообщения.

Таким образом, свойство (идентификатор обсуждения, ошибочно названный «Оповещением») обязательно должно быть заполнено в любом случае, вне зависимости от того, является ли сообщение контекстным или нет. Это подтверждает правильность первого варианта ответа в аттестационной базе.

Механизм оповещений в Системе взаимодействия

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

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

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

Практические рекомендации для разработчиков

Рассмотрим ситуацию, когда идентификатор обсуждения еще не существует (например, при первом обращении к контекстному обсуждению нового документа). Разберем правильную последовательность действий:


// 1. Пытаемся получить идентификатор для конкретного документа
КлючОбсуждения = СистемаВзаимодействия.ПолучитьИдентификаторОбсуждения(СсылкаНаДокумент);

// 2. Если обсуждение еще не создано, система может вернуть Неопределено 
// (в зависимости от параметров метода), тогда его нужно инициировать.
// Но в методе СоздатьСообщение параметр ДОЛЖЕН БЫТЬ заполнен.

Если КлючОбсуждения <> Неопределено Тогда
    Сообщение = СистемаВзаимодействия.СоздатьСообщение(КлючОбсуждения);
    Сообщение.Текст = "Проверьте правильность заполнения реквизитов!";
    Сообщение.Записать();
КонецЕсли;

Если попытаться передать в СоздатьСообщение() пустую ссылку или Неопределено, платформа сгенерирует исключение (Run-time error), что еще раз доказывает техническую необходимость и обязательность заполнения данного параметра.

Итоги для подготовки к тестированию

Подводя итог нашему анализу, зафиксируем ключевые моменты, которые помогут при сдаче экзамена и в реальной практике:

Рассмотренная ситуация — классический пример того, как неточности в формулировках могут запутать специалиста. Однако знание базовых принципов объектной модели 1С и понимание работы менеджеров системы позволяет быстро найти верное решение, даже если терминология в вопросе кажется некорректной.

← На главную