Top.Mail.Ru
Заказать консультацию
специалиста 1С
Отправить заявку

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

Как отправлять уведомления в чат в 1С

Соловиченко Вячеслав Посмотреть все статьи >> Программист 1С франчайзинговой сети "ИнфоСофт".
19.03.2024
337
Время прочтения - 7 мин.
Заказать консультацию

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

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

1.png

2.png


Для работы процедуры система взаимодействия должна быть подключена к базе. Отправитель и получатель сообщений должны быть зарегистрированы в ней. Эти вещи затронуты не будут, так как это тема для отдельной статьи.

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

3.png

4.png


Далее будет более детальное рассмотрение кода процедуры.

5.png


Первым делом в процедуру передается ссылка на объект, в контексте которого нужно будет написать сообщение в обсуждении. Это может быть документ или справочник. Комментарий – это текст сообщения.

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

6.png

Подпишитесь на дайджест!
Подпишитесь на дайджест, и получайте ежемесячно подборку полезных статей.

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

Далее нужно получить или создать обсуждение для объекта. Для этого создается отбор обсуждений системы взаимодействия, как показано на рисунке выше. Отбор будет вестись по контекстным обсуждениям. Чтобы участником обсуждения был не только текущий пользователь системы, устанавливается признак – Ложь. Далее в параметр отбора по контексту обсуждения передается контекст обсуждения, который был определен с помощью навигационной ссылки (вторая строка процедуры).

Обратившись к менеджеру взаимодействия и используя метод ПолучитьОбсуждения, в который передается сформированный отбор, должен быть получен массив обсуждений (если они были созданы ранее для данного объекта). Данный фрагмент кода тоже является обязательным и универсальным.

7.png


После того, как был получен массив обсуждений, производится проверка, есть ли в нем обсуждения или нет. Если количество элементов в массиве равно 0, тогда нужно создать новое обсуждение, обратившись к менеджеру взаимодействия с помощью метода СоздатьОбсуждение. Далее для свойства созданного обсуждения задается контекст, который был получен во второй строке процедуры с помощью навигационной ссылки.

После этого следует задать ключ для обсуждения, чтобы связать обсуждение и объект, в контексте которого ведется обсуждение. Для этого задается уникальный идентификатор и приводится к строковому значению.

После этого можно записать обсуждение.

В случае, если массив обсуждений заполнен, то просто берется нулевой элемент этого массива.

Данная часть кода тоже универсальна.

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

8.png


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

9.png


Через менеджер взаимодействия с помощью метода СоздатьСообщение создается новое сообщение. В данный метод необходимо передать идентификатор ранее полученного обсуждения. Для сообщения устанавливается текущая дата.

10.png


После создания сообщения идет часть определения участников сообщения. Первым делом нужно определить автора сообщения. Его можно определить, обратившись к одноименному свойству сообщения. В метод менеджера взаимодействия ПолучитьИдентификаторПользователя передается ранее полученный уникальный идентификатор пользователя ИБ для автора, и получается идентификатор пользователя системы взаимодействия.

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

Важно!

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

11.png


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

Мы рассмотрели процесс отправки сообщения в обсуждение объекта программно и нюансы при формировании сообщения. Часть с получением и проверкой идентификаторов автора и получателей сообщения будет уникальна для каждой задачи, но при этом в ней должны соблюдаться основные принципы, правила и алгоритм, которые рассмотрены в статье. Весь остальной код является более универсальным и может быть использован для решения большинства задач.


Заказать консультацию специалиста 1С
Оставьте заявку и наши эксперты проконсультируют вас по данной статье.
Отправить заявку

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

Рассказать друзьям
Для разработчиков 1С
Вам может быть интересно: