Пример создания уведомлений с помощью дополнительных обработчиков
страницаДокументооборот КОРП
Документооборот государственного учреждения
30.08.2017
Пример создания уведомлений с помощью дополнительных обработчиков
- Уведомление всех сотрудников подразделения о задаче
- Уведомление Администратора обо всех отсутствиях
- Уведомление о выполнении задачи, назначенной одной роли
- Уведомления для контроля нового сотрудника
- Уведомления об отмене мероприятия
- Уведомление о заполнении календаря проектными задачами
Уведомление всех сотрудников подразделения о задаче
Для создания уведомления всех сотрудников подразделения о задачи в разделе Настройка и администрирование – Дополнительные обработчики нужно создать дополнительный обработчик «Уведомление всех сотрудников подразделения о задаче». В карточке обработчика в поле Код обработки события добавьте следующий код:
Задача = Событие.Источник; Если ЗначениеЗаполнено(Задача) И Не ЗначениеЗаполнено(Задача.РольИсполнителя) И ЗначениеЗаполнено(Задача.Исполнитель) Тогда Подразделение = РаботаСПользователями.ПолучитьПодразделение( Задача.Исполнитель); Если ЗначениеЗаполнено(Подразделение) Тогда ПользователиПодразделения = РаботаСПользователями.ПолучитьПользователейПодразделения( Подразделение); ОбщегоНазначенияКлиентСервер.УдалитьВсеВхожденияЗначенияИзМассива( ПользователиПодразделения, Задача.Исполнитель); Для Каждого ПользовательПодразделения Из ПользователиПодразделения Цикл РегистрыСведений.ОчередьУведомлений.ДобавитьУведомлениеПоСобытию( ПользовательПодразделения, Событие.ВидСобытия, Задача, Задача); КонецЦикла; КонецЕсли; КонецЕсли;
В результате будет настроен следующий обработчик события:

Далее выполните команду Подписки и создайте подписку "Создание задачи" и "Перенаправление задачи":

После этого в разделе Настройка и администрирование - Персональные настройки – Уведомления для пользователей проверьте настройку Поступление новой задачи. Настройка определяет, каким образом пользователь будет получать уведомление.

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

Уведомление Администратора обо всех отсутствиях
Для создания уведомления Администратору обо всех отсутствиях в разделе Настройка и администрирование – Дополнительные обработчики создайте дополнительный обработчик «Уведомление Администратора об отсутствиях». В карточке обработчика в поле Код обработки события добавьте следующий код:
Отсутствие = Событие.Источник; Если ЗначениеЗаполнено(Отсутствие) Тогда КогоУведомить = Справочники.Пользователи.НайтиПоНаименованию("Администратор", Истина); КтоОтсутствует = Отсутствие.Сотрудник; РегистрыСведений.ОчередьУведомлений.ДобавитьУведомлениеПоСобытию( КогоУведомить, Событие.ВидСобытия, Отсутствие, КтоОтсутствует); КонецЕсли;
В результате будет настроен следующий обработчик события:

Далее выполните команду Подписки и создайте подписку "Создание отсутствия" и "Изменение отсутствия":

После этого в разделе Настройка и администрирование - Персональные настройки – Уведомления для Администратора проверьте настройки Создание отсутствия и Изменение отсутствия. Настройка определяет, каким образом Администратор будет получать уведомления.

Обратите внимание: для рассылки уведомлений должны выполняться регламентные задания Обработка произошедших бизнес-событий и Уведомление пользователей о произошедших событиях.
После выполнения описанных настроек Администратор будет получать вот такие уведомления:

Уведомление о выполнении задачи, назначенной одной роли
Для создания уведомления о выполнении задачи, назначенной одной роли, в разделе Настройка и администрирование – Дополнительные обработчики необходимо создать дополнительный обработчик «Уведомления о выполнении задачи, назначенной одной роли». В карточке обработчика в поле Код обработки события добавьте следующий код:
Задача = Событие.Источник; Если ЗначениеЗаполнено(Задача) И ЗначениеЗаполнено(Задача.РольИсполнителя) Тогда ИсполнителиРоли = РегистрыСведений.ИсполнителиЗадач.ИсполнителиРоли( Задача.РольИсполнителя); ОбщегоНазначенияКлиентСервер.УдалитьВсеВхожденияЗначенияИзМассива( ИсполнителиРоли, Задача.Исполнитель); Для Каждого ИсполнительРоли Из ИсполнителиРоли Цикл РегистрыСведений.ОчередьУведомлений.ДобавитьУведомлениеПоСобытию( ИсполнительРоли, Событие.ВидСобытия, Задача, Задача); КонецЦикла; КонецЕсли;
В результате будет настроен следующий обработчик события:

Далее выполните команду Подписки и создайте подписку "Выполнение задачи":

После этого в разделе Настройка и администрирование - Персональные настройки – Уведомления для пользователей проверьте настройку Ход выполнения процесса. Настройка определяет, каким образом пользователь будет получать уведомление.

Обратите внимание: для рассылки уведомлений должны выполняться регламентные задания Обработка произошедших бизнес-событий и Уведомление пользователей о произошедших событиях.
После выполнения описанных настроек все исполнители роли, которой была назначена задача, будут получать уведомление, если кто-либо выполнит задачу.
Например:
- Задача была назначена роли Секретарь;
- На роль Секретарь назначены два пользователя – Е.М. Фролова и М.И. Светлакова;
- Е.М. Фролова выполнила задачу;
- Е.М. Фролова не получит уведомление;
- М.И. Светлакова получит вот такое уведомление:

Уведомления для контроля нового сотрудника
Чтобы создать уведомления для контроля за действиями нового сотрудника (рассмотрим на примере секретаря), в разделе Настройка и администрирование – Дополнительные обработчики создайте дополнительный обработчик «Уведомление секретаря о действиях нового секретаря». В карточке обработчика в поле Код обработки события добавьте следующий код:
ИмяСтаршегоСекретаря = "Светлакова М.И."; ИмяНовогоСекретаря = "Фролова Е.М."; НовыйСекретарь = Справочники.Пользователи.НайтиПоНаименованию(ИмяНовогоСекретаря); Если НовыйСекретарь = Неопределено Тогда ВызватьИсключение "Новый секретарь не найден!"; КонецЕсли; Если Событие.Автор = НовыйСекретарь Тогда СтаршийСекретарь = Справочники.Пользователи.НайтиПоНаименованию(ИмяСтаршегоСекретаря); Если СтаршийСекретарь = Неопределено Тогда ВызватьИсключение "Старший секретарь не найден!"; КонецЕсли; ТекстУведомления = СтрШаблон("%1 ""%2"" пользователем %3 в %4", Событие.ВидСобытия, Событие.Источник, Событие.Автор, Событие.Дата); СсылкаНаОбъект = "Ссылка: " + РаботаСУведомлениями.ПолучитьНавигационнуюСсылкуУведомления(Событие.Источник); МассивТекстУведомления = Новый Массив; МассивТекстУведомления.Добавить(ТекстУведомления); МассивТекстУведомления.Добавить(СсылкаНаОбъект); ТекстУведомления = СтрСоединить(МассивТекстУведомления, Символы.ПС); ПользователяУведомления = СтаршийСекретарь; ОбъектУведомления = Событие.Источник; РаботаСУведомлениями.ОбработатьУведомлениеПрограммы(ТекстУведомления, ПользователяУведомления, ОбъектУведомления); КонецЕсли;
В коде обработки текст Фролова Е.М. замените на имя нового секретаря (как указано в карточке пользователя):

В коде обработки текст Светлакова М.И. замените на имя старшего секретаря (как указано в карточке пользователя).

В результате будет настроен следующий обработчик события:

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

После этого в разделе Настройка и администрирование - Персональные настройки – Уведомления выберите старшего секретаря и проверьте его настройку Уведомления программы. Настройка определяет, каким образом пользователь будет получать уведомления.

Обратите внимание: для рассылки уведомлений должны выполняться регламентные задания Обработка произошедших бизнес-событий и Уведомление пользователей о произошедших событиях.
После выполнения описанных настроек старший секретарь будет получать вот такие уведомления:

Уведомления об отмене мероприятия
Для создания уведомлений об обмене мероприятия в разделе Настройка и администрирование – Дополнительные обработчики создайте дополнительный обработчик «Отмена мероприятий». В карточке обработчика в поле Код обработки события добавьте следующий код:
Мероприятие = Событие.Источник; РеквизитыМероприятия = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(Мероприятие, "Наименование, ДатаНачала"); СостояниеМероприятия = УправлениеМероприятиями.ПолучитьСостояниеМероприятия(Мероприятие, "СостояниеМероприятия"); МероприятиеОтменено = СостояниеМероприятия = Перечисления.СостоянияМероприятий.МероприятиеОтменено; Если МероприятиеОтменено Тогда ПредставлениеДата = Формат(РеквизитыМероприятия.ДатаНачала, "ДФ='dd.MM.yyyy HH:mm'"); ТекстУведомления = СтрШаблон("Отменено мероприятие ""%1 (%2)""", РеквизитыМероприятия.Наименование, ПредставлениеДата); УчастникиМероприятия = УправлениеМероприятиями.ПолучитьУчастниковМероприятия(Мероприятие); Для Каждого СтрокаУчастник Из УчастникиМероприятия Цикл Если ТипЗнч(СтрокаУчастник.Исполнитель) <> Тип("СправочникСсылка.Пользователи") Тогда Продолжить; КонецЕсли; ПользователяУведомления = СтрокаУчастник.Исполнитель; ОбъектУведомления = Мероприятие;
Запись = РегистрыСведений.ОбработанныеУведомления.СоздатьМенеджерЗаписи();
Запись.ВидСобытия = Справочники.ВидыБизнесСобытий.ИзменениеМероприятия;
Запись.ОбъектУведомления = Мероприятие;
Запись.Пользователь = ПользователяУведомления;
Запись.Прочитать();
УведомлениеУжеРазослано = Запись.Выбран();
Если УведомлениеУжеРазослано Тогда
Продолжить;
КонецЕсли;
РаботаСУведомлениями.ОбработатьУведомлениеПрограммы(ТекстУведомления, ПользователяУведомления, ОбъектУведомления);
РегистрыСведений.ОбработанныеУведомления.ДобавитьОбработанноеУведомление(
Справочники.ВидыБизнесСобытий.ИзменениеМероприятия,
ОбъектУведомления,
ПользователяУведомления);
КонецЦикла;
КонецЕсли;
В результате будет настроен следующий обработчик события:

Далее выполните команду Подписки и создайте подписку "Изменение мероприятия".

После этого в разделе Настройка и администрирование - Персональные настройки – Уведомления для пользователя проверьте настройку Уведомления программы. Настройка определяет, каким образом пользователь будет получать уведомление.

Обратите внимание: для рассылки уведомлений должны выполняться регламентные задания Обработка произошедших бизнес-событий и Уведомление пользователей о произошедших событиях.
После выполнения описанных настроек пользователь будет получать вот такие уведомления:

Уведомление о заполнении календаря проектными задачами
В разделе Настройка и администрирование – Дополнительные обработчики необходимо создать дополнительный обработчик «Заполнение календаря по проектной задаче». В карточке обработчика в поле Код обработки события добавьте следующий код:
ПроектнаяЗадача = Событие.Источник; РеквизитыПроектнойЗадачи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ПроектнаяЗадача, "ПометкаУдаления, Исполнители"); СрокиПроектнойЗадачи = РаботаСПроектами.ПолучитьСрокиПроектнойЗадачи(ПроектнаяЗадача); ДатаНачала = СрокиПроектнойЗадачи.ТекущийПланНачало; ДатаОкончания = СрокиПроектнойЗадачи.ТекущийПланОкончание; Если ДатаНачала = ДатаОкончания Или (ЗначениеЗаполнено(ДатаНачала) И Не ЗначениеЗаполнено(ДатаОкончания)) Тогда ДатаОкончания = ДатаНачала + 3600; КонецЕсли;
// Определяем пользователей проектной задачи.
ИсполнителиПроектнойЗадачи = РеквизитыПроектнойЗадачи.Исполнители.Выгрузить().ВыгрузитьКолонку("Исполнитель");
ПользователиПроектнойЗадачи = Новый Массив;
Для Каждого ИсполнительПроектнойЗадачи Из ИсполнителиПроектнойЗадачи Цикл
Если ТипЗнч(ИсполнительПроектнойЗадачи) <> Тип("СправочникСсылка.Пользователи") Тогда
Продолжить;
КонецЕсли;
ПользователиПроектнойЗадачи.Добавить(ИсполнительПроектнойЗадачи);
КонецЦикла;
// Определяем необходимость отображать проектную задачу в календаря.
ОтображатьПроектнуюЗадачуВКалендаре =
(РеквизитыПроектнойЗадачи.ПометкаУдаления = Ложь)
И ЗначениеЗаполнено(ДатаНачала)
И ЗначениеЗаполнено(ДатаОкончания)
И (ДатаОкончания > ДатаНачала);
// Определяем уже отображаемые проектные задачи в календаре.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗаписиРабочегоКалендаря.Ссылка КАК Ссылка,
| ЗаписиРабочегоКалендаря.Пользователь КАК Пользователь,
| ЗаписиРабочегоКалендаря.ДатаНачала КАК ДатаНачала,
| ЗаписиРабочегоКалендаря.ДатаОкончания КАК ДатаОкончания
|ИЗ
| Справочник.ЗаписиРабочегоКалендаря КАК ЗаписиРабочегоКалендаря
|ГДЕ
| ЗаписиРабочегоКалендаря.Предмет = &Предмет
| И ЗаписиРабочегоКалендаря.Связанная = ИСТИНА
| И ЗаписиРабочегоКалендаря.ПометкаУдаления = ЛОЖЬ");
Запрос.УстановитьПараметр("Предмет", ПроектнаяЗадача);
СуществующиеЗаписиКалендаря = Запрос.Выполнить().Выгрузить();
// Определяем необходимые изменения в записи календаря.
ПользователиКСозданиюЗаписейКалендаря = Новый Массив;
ЗаписиКалендаряКИзменению = Новый Массив;
ЗаписиКалендаряКУдалению = Новый Массив;
Если ОтображатьПроектнуюЗадачуВКалендаре Тогда
ПользователиКСозданиюЗаписейКалендаря = ОбщегоНазначенияКлиентСервер.СократитьМассив(
ПользователиПроектнойЗадачи,
СуществующиеЗаписиКалендаря.ВыгрузитьКолонку("Пользователь"));
Для Каждого СуществующаяЗаписьКалендаря Из СуществующиеЗаписиКалендаря Цикл
Если ПользователиПроектнойЗадачи.Найти(СуществующаяЗаписьКалендаря.Пользователь) <> Неопределено Тогда
ЗаписиКалендаряКИзменению.Добавить(СуществующаяЗаписьКалендаря.Ссылка);
Иначе
ЗаписиКалендаряКУдалению.Добавить(СуществующаяЗаписьКалендаря.Ссылка);
КонецЕсли;
КонецЦикла;
Иначе
ЗаписиКалендаряКУдалению = СуществующиеЗаписиКалендаря.ВыгрузитьКолонку("Ссылка");
КонецЕсли;
// Создание записей календаря.
Для Каждого ПользовательКСозданиюЗаписиКалендаря Из ПользователиКСозданиюЗаписейКалендаря Цикл
НоваяЗаписьКалендаряОбъект = Справочники.ЗаписиРабочегоКалендаря.СоздатьЭлемент();
НоваяЗаписьКалендаряОбъект.Заполнить(Новый Структура("Предмет", ПроектнаяЗадача));
НоваяЗаписьКалендаряОбъект.ДатаНачала = ДатаНачала;
НоваяЗаписьКалендаряОбъект.ДатаОкончания = ДатаОкончания;
НоваяЗаписьКалендаряОбъект.Автор = Событие.Автор;
НоваяЗаписьКалендаряОбъект.Пользователь = ПользовательКСозданиюЗаписиКалендаря;
НоваяЗаписьКалендаряОбъект.Связанная = Истина;
НоваяЗаписьКалендаряОбъект.ДополнительныеСвойства.Вставить("ИзменениеСвязаннойЗаписи", Истина);
НоваяЗаписьКалендаряОбъект.Записать();
КонецЦикла;
// Изменение записей календаря.
Для Каждого ЗаписьКалендаряКИзменению Из ЗаписиКалендаряКИзменению Цикл
ЗаписьКалендаряКИзменениюОбъект = ЗаписьКалендаряКИзменению.ПолучитьОбъект();
ЗаписьКалендаряКИзменениюОбъект.ДатаНачала = ДатаНачала;
ЗаписьКалендаряКИзменениюОбъект.ДатаОкончания = ДатаОкончания;
ЗаписьКалендаряКИзменениюОбъект.ДополнительныеСвойства.Вставить("ИзменениеСвязаннойЗаписи", Истина);
ЗаписьКалендаряКИзменениюОбъект.Записать();
КонецЦикла;
// Удаление записей календаря.
Для Каждого ЗаписьКалендаряКУдалению Из ЗаписиКалендаряКУдалению Цикл
ЗаписьКалендаряКУдалениюОбъект = ЗаписьКалендаряКУдалению.ПолучитьОбъект();
ЗаписьКалендаряКУдалениюОбъект.ДополнительныеСвойства.Вставить("ИзменениеСвязаннойЗаписи", Истина);
ЗаписьКалендаряКУдалениюОбъект.УстановитьПометкуУдаления(Истина, Ложь);
КонецЦикла;
В результате будет настроен следующий обработчик события:

Далее выполните команду Подписки и создайте подписку "Изменение проектной задачи", "Создание проектной задачи".

Далее в разделе Настройка и администрирование - Дополнительные обработчики создайте дополнительный обработчик «Заполнение календаря по проекту». В карточке обработчика в поле Код обработки события добавьте следующий код:
Проект = Событие.Источник; ВыборкаПроектныеЗадачи = Справочники.ПроектныеЗадачи.Выбрать(, Проект); Пока ВыборкаПроектныеЗадачи.Следующий() Цикл
ПроектнаяЗадача = ВыборкаПроектныеЗадачи.Ссылка;
РеквизитыПроектнойЗадачи = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ПроектнаяЗадача, "ПометкаУдаления, Исполнители");
СрокиПроектнойЗадачи = РаботаСПроектами.ПолучитьСрокиПроектнойЗадачи(ПроектнаяЗадача);
ДатаНачала = СрокиПроектнойЗадачи.ТекущийПланНачало;
ДатаОкончания = СрокиПроектнойЗадачи.ТекущийПланОкончание;
Если ДатаНачала = ДатаОкончания
Или (ЗначениеЗаполнено(ДатаНачала)
И Не ЗначениеЗаполнено(ДатаОкончания)) Тогда
ДатаОкончания = ДатаНачала + 3600;
КонецЕсли;
// Определяем пользователей проектной задачи.
ИсполнителиПроектнойЗадачи = РеквизитыПроектнойЗадачи.Исполнители.Выгрузить().ВыгрузитьКолонку("Исполнитель");
ПользователиПроектнойЗадачи = Новый Массив;
Для Каждого ИсполнительПроектнойЗадачи Из ИсполнителиПроектнойЗадачи Цикл
Если ТипЗнч(ИсполнительПроектнойЗадачи) <> Тип("СправочникСсылка.Пользователи") Тогда
Продолжить;
КонецЕсли;
ПользователиПроектнойЗадачи.Добавить(ИсполнительПроектнойЗадачи);
КонецЦикла;
// Определяем необходимость отображать проектную задачу в календаря.
ОтображатьПроектнуюЗадачуВКалендаре =
(РеквизитыПроектнойЗадачи.ПометкаУдаления = Ложь)
И ЗначениеЗаполнено(ДатаНачала)
И ЗначениеЗаполнено(ДатаОкончания)
И (ДатаОкончания > ДатаНачала);
// Определяем уже отображаемые проектные задачи в календаре.
Запрос = Новый Запрос(
"ВЫБРАТЬ
| ЗаписиРабочегоКалендаря.Ссылка КАК Ссылка,
| ЗаписиРабочегоКалендаря.Пользователь КАК Пользователь,
| ЗаписиРабочегоКалендаря.ДатаНачала КАК ДатаНачала,
| ЗаписиРабочегоКалендаря.ДатаОкончания КАК ДатаОкончания
|ИЗ
| Справочник.ЗаписиРабочегоКалендаря КАК ЗаписиРабочегоКалендаря
|ГДЕ
| ЗаписиРабочегоКалендаря.Предмет = &Предмет
| И ЗаписиРабочегоКалендаря.Связанная = ИСТИНА
| И ЗаписиРабочегоКалендаря.ПометкаУдаления = ЛОЖЬ");
Запрос.УстановитьПараметр("Предмет", ПроектнаяЗадача);
СуществующиеЗаписиКалендаря = Запрос.Выполнить().Выгрузить();
// Определяем необходимые изменения в записи календаря.
ПользователиКСозданиюЗаписейКалендаря = Новый Массив;
ЗаписиКалендаряКИзменению = Новый Массив;
ЗаписиКалендаряКУдалению = Новый Массив;
Если ОтображатьПроектнуюЗадачуВКалендаре Тогда
ПользователиКСозданиюЗаписейКалендаря = ОбщегоНазначенияКлиентСервер.СократитьМассив(
ПользователиПроектнойЗадачи,
СуществующиеЗаписиКалендаря.ВыгрузитьКолонку("Пользователь"));
Для Каждого СуществующаяЗаписьКалендаря Из СуществующиеЗаписиКалендаря Цикл
Если ПользователиПроектнойЗадачи.Найти(СуществующаяЗаписьКалендаря.Пользователь) <> Неопределено Тогда
ЗаписиКалендаряКИзменению.Добавить(СуществующаяЗаписьКалендаря.Ссылка);
Иначе
ЗаписиКалендаряКУдалению.Добавить(СуществующаяЗаписьКалендаря.Ссылка);
КонецЕсли;
КонецЦикла;
Иначе
ЗаписиКалендаряКУдалению = СуществующиеЗаписиКалендаря.ВыгрузитьКолонку("Ссылка");
КонецЕсли;
// Создание записей календаря.
Для Каждого ПользовательКСозданиюЗаписиКалендаря Из ПользователиКСозданиюЗаписейКалендаря Цикл
НоваяЗаписьКалендаряОбъект = Справочники.ЗаписиРабочегоКалендаря.СоздатьЭлемент();
НоваяЗаписьКалендаряОбъект.Заполнить(Новый Структура("Предмет", ПроектнаяЗадача));
НоваяЗаписьКалендаряОбъект.ДатаНачала = ДатаНачала;
НоваяЗаписьКалендаряОбъект.ДатаОкончания = ДатаОкончания;
НоваяЗаписьКалендаряОбъект.Автор = Событие.Автор;
НоваяЗаписьКалендаряОбъект.Пользователь = ПользовательКСозданиюЗаписиКалендаря;
НоваяЗаписьКалендаряОбъект.Связанная = Истина;
НоваяЗаписьКалендаряОбъект.ДополнительныеСвойства.Вставить("ИзменениеСвязаннойЗаписи", Истина);
НоваяЗаписьКалендаряОбъект.Записать();
КонецЦикла;
// Изменение записей календаря.
Для Каждого ЗаписьКалендаряКИзменению Из ЗаписиКалендаряКИзменению Цикл
ЗаписьКалендаряКИзменениюОбъект = ЗаписьКалендаряКИзменению.ПолучитьОбъект();
ЗаписьКалендаряКИзменениюОбъект.ДатаНачала = ДатаНачала;
ЗаписьКалендаряКИзменениюОбъект.ДатаОкончания = ДатаОкончания;
ЗаписьКалендаряКИзменениюОбъект.ДополнительныеСвойства.Вставить("ИзменениеСвязаннойЗаписи", Истина);
ЗаписьКалендаряКИзменениюОбъект.Записать();
КонецЦикла;
// Удаление записей календаря.
Для Каждого ЗаписьКалендаряКУдалению Из ЗаписиКалендаряКУдалению Цикл
ЗаписьКалендаряКУдалениюОбъект = ЗаписьКалендаряКУдалению.ПолучитьОбъект();
ЗаписьКалендаряКУдалениюОбъект.ДополнительныеСвойства.Вставить("ИзменениеСвязаннойЗаписи", Истина);
ЗаписьКалендаряКУдалениюОбъект.УстановитьПометкуУдаления(Истина, Ложь);
КонецЦикла;
КонецЦикла;
В результате будет настроен следующий обработчик события:

Далее выполните команду Подписки и создайте подписку "Изменение проекта".
