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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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