830 документов
← К списку

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

страница

Документооборот КОРП
Документооборот государственного учреждения
30.08.2017

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

Уведомление всех сотрудников подразделения о задаче

Для создания уведомления всех сотрудников подразделения о задачи в разделе Настройка и администрирование – Дополнительные обработчики нужно создать дополнительный обработчик «Уведомление всех сотрудников подразделения о задаче». В карточке обработчика в поле Код обработки события добавьте следующий код:

Копировать в буфер обмена

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

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

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

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

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

После выполнения описанных настроек сотрудники подразделения, у которых есть права на задачу, будут получать вот такие уведомления:

Уведомление Администратора обо всех отсутствиях

Для создания уведомления Администратору обо всех отсутствиях в разделе Настройка и администрирование – Дополнительные обработчики создайте дополнительный обработчик «Уведомление Администратора об отсутствиях». В карточке обработчика в поле Код обработки события добавьте следующий код:

Копировать в буфер обмена

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

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

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

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

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

После выполнения описанных настроек Администратор будет получать вот такие уведомления:

Уведомление о выполнении задачи, назначенной одной роли

Для создания уведомления о выполнении задачи, назначенной одной роли, в разделе Настройка и администрирование – Дополнительные обработчики необходимо создать дополнительный обработчик «Уведомления о выполнении задачи, назначенной одной роли». В карточке обработчика в поле Код обработки события добавьте следующий код:

Копировать в буфер обмена

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

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

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

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

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

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

  • Задача была назначена роли Секретарь;
  • На роль Секретарь назначены два пользователя – Е.М. Фролова и М.И. Светлакова;
  • Е.М. Фролова выполнила задачу;
  • Е.М. Фролова не получит уведомление;
  • М.И. Светлакова получит вот такое уведомление:

Уведомления для контроля нового сотрудника

Чтобы создать уведомления для контроля за действиями нового сотрудника (рассмотрим на примере секретаря), в разделе Настройка и администрирование – Дополнительные обработчики создайте дополнительный обработчик «Уведомление секретаря о действиях нового секретаря». В карточке обработчика в поле Код обработки события добавьте следующий код:

Копировать в буфер обмена

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

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

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

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

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

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

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

После выполнения описанных настроек старший секретарь будет получать вот такие уведомления:

Уведомления об отмене мероприятия

Для создания уведомлений об обмене мероприятия в разделе Настройка и администрирование – Дополнительные обработчики создайте дополнительный обработчик «Отмена мероприятий». В карточке обработчика в поле Код обработки события добавьте следующий код:

Копировать в буфер обмена

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

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

КонецЕсли;

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

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

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

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

После выполнения описанных настроек пользователь будет получать вот такие уведомления:

Уведомление о заполнении календаря проектными задачами

В разделе Настройка и администрирование – Дополнительные обработчики необходимо создать дополнительный обработчик «Заполнение календаря по проектной задаче». В карточке обработчика в поле Код обработки события добавьте следующий код:

Копировать в буфер обмена

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

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

// Определяем необходимость отображать проектную задачу в календаря.
ОтображатьПроектнуюЗадачуВКалендаре =
	(РеквизитыПроектнойЗадачи.ПометкаУдаления = Ложь)
	И ЗначениеЗаполнено(ДатаНачала)
	И ЗначениеЗаполнено(ДатаОкончания)
	И (ДатаОкончания > ДатаНачала);

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

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

// Создание записей календаря.
Для Каждого ПользовательКСозданиюЗаписиКалендаря Из ПользователиКСозданиюЗаписейКалендаря Цикл
	НоваяЗаписьКалендаряОбъект = Справочники.ЗаписиРабочегоКалендаря.СоздатьЭлемент();
	НоваяЗаписьКалендаряОбъект.Заполнить(Новый Структура("Предмет", ПроектнаяЗадача));
	НоваяЗаписьКалендаряОбъект.ДатаНачала = ДатаНачала;
	НоваяЗаписьКалендаряОбъект.ДатаОкончания = ДатаОкончания;
	НоваяЗаписьКалендаряОбъект.Автор = Событие.Автор;
	НоваяЗаписьКалендаряОбъект.Пользователь = ПользовательКСозданиюЗаписиКалендаря;
	НоваяЗаписьКалендаряОбъект.Связанная = Истина;
	НоваяЗаписьКалендаряОбъект.ДополнительныеСвойства.Вставить("ИзменениеСвязаннойЗаписи", Истина);
	НоваяЗаписьКалендаряОбъект.Записать();
КонецЦикла;

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

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

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

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

Далее в разделе Настройка и администрирование - Дополнительные обработчики создайте дополнительный обработчик «Заполнение календаря по проекту». В карточке обработчика в поле Код обработки события добавьте следующий код:

Копировать в буфер обмена

Проект = Событие.Источник; ВыборкаПроектныеЗадачи = Справочники.ПроектныеЗадачи.Выбрать(, Проект); Пока ВыборкаПроектныеЗадачи.Следующий() Цикл

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

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

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