Создание новой рассылки уведомлений в ЗУП 3.1

27.10.23

Учетные задачи - Кадровый учет

Добавление новой рассылки уведомлений на примере уведомления об окончании трудового договора в ЗУП 3.1.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Создание новой рассылки уведомлений в ЗУП 3.1:
.cfe 9,90Kb
18 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Задача:
Уведомлять руководителей сотрудников об окончании трудового договора.

Решение:
В типовом функционале ЗУП 3.1 (3.1.27.23) нет уведомления об окончании договора, но есть об окончании испытательного срока.  Было решено взять его за основу и создать свой вид уведомления. 
Виды уведомлений создаются программно. Создание прописано в соответствующих модулях подсистем. А вызов создания/обновления происходит по команде в форме списка справочника Виды уведомлений - Еще - Обновить Виды уведомлений.

Описание вида уведомления Окончание испытательного срока находится в модуле АдаптацияУвольнение в процедуре ПриЗаполненииСпискаВидовУведомлений. С помощью расширения в эту процедуру добавим новое описание для Окончания трудового договора.

 

&После("ПриЗаполненииСпискаВидовУведомлений")
Процедура Рассылка_ПриЗаполненииСпискаВидовУведомлений(СтруктураДоступныхВидовУведомлений)
	
	//ТФ
	// Окончание трудового договора
	СтруктураОкончаниеТД = УведомленияСервер.ПустоеОписаниеВидаУведомления();
	СтруктураОкончаниеТД.ВидУведомления = НСтр("ru = 'Окончание ТД'");
	СтруктураОкончаниеТД.GUID = "b21166e9-7a14-11ec-83fa-bd5234e4af50";     //тут любой ГУИД
	СтруктураОкончаниеТД.Описание = НСтр("ru = 'Привязано к дате окончания ТД.'");
	СтруктураОкончаниеТД.Инициализация = "АдаптацияУвольнение.ИнициализацияОкончаниеТД";
	СтруктураОкончаниеТД.ПолучениеДанных = "АдаптацияУвольнение.ПолучениеДанныхОкончаниеТД";

	СтруктураДоступныхВидовУведомлений.Вставить("ОкончаниеТД", СтруктураОкончаниеТД);	
	
КонецПроцедуры 

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

Процедура ПолучениеДанныхОкончаниеТД(СтруктураПериода, Отборы, ТаблицаРезультата) Экспорт
	
	УстановитьПривилегированныйРежим(Истина);
	
	ПараметрыПолучения = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц();
	ПараметрыПолучения.НачалоПериода = СтруктураПериода.НачалоПериода;
	ПараметрыПолучения.ОкончаниеПериода = СтруктураПериода.ОкончаниеПериода;
	ПараметрыПолучения.КадровыеДанные =
		"ФизическоеЛицо, Сотрудник, Организация, Подразделение, Должность, ДолжностьПоШтатномуРасписанию, МестоВСтруктуреПредприятия";
	
	Запрос = Новый Запрос();
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	КадровыйУчет.СоздатьВТСотрудникиОрганизации(Запрос.МенеджерВременныхТаблиц, Ложь, ПараметрыПолучения);
	
	Запрос.УстановитьПараметр("НачалоПериода", СтруктураПериода.НачалоПериода);
	Запрос.УстановитьПараметр("ОкончаниеПериода", СтруктураПериода.ОкончаниеПериода);
	
	СхемаЗапроса = Новый СхемаЗапроса;
	СхемаЗапроса.УстановитьТекстЗапроса(
	    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
	    |	КадровыеДанныеСотрудников.Организация КАК Организация,
	    |	КадровыеДанныеСотрудников.Сотрудник КАК Сотрудник,
	    |	КадровыеДанныеСотрудников.ФизическоеЛицо КАК ФизическоеЛицо,
	    |	СведенияКонтрактаДоговораСотрудника.ДатаОкончания КАК ДатаЗавершения,
	    |	ЕСТЬNULL(КадровыеДанныеСотрудников.ДолжностьПоШтатномуРасписанию, ЗНАЧЕНИЕ(Справочник.ШтатноеРасписание.ПустаяСсылка)) КАК Позиция,
	    |	ЕСТЬNULL(КадровыеДанныеСотрудников.МестоВСтруктуреПредприятия, ЗНАЧЕНИЕ(Справочник.СтруктураПредприятия.ПустаяСсылка)) КАК МестоВСтруктуреПредприятия
	    |ПОМЕСТИТЬ ВТОкончаниеДоговора
	    |{ВЫБРАТЬ
	    |	Организация КАК ОрганизацияПриПриеме}
	    |ИЗ
	    |	РегистрСведений.СведенияКонтрактаДоговораСотрудника.СрезПоследних(
	    |			,
	    |			(Сотрудник, ФизическоеЛицо, Организация) В
	    |				(ВЫБРАТЬ
	    |					ВТСотрудникиОрганизации.Сотрудник,
	    |					ВТСотрудникиОрганизации.ФизическоеЛицо,
	    |					ВТСотрудникиОрганизации.Организация
	    |				ИЗ
	    |					ВТСотрудникиОрганизации КАК ВТСотрудникиОрганизации)) КАК СведенияКонтрактаДоговораСотрудника
	    |		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТСотрудникиОрганизации КАК КадровыеДанныеСотрудников
	    |		ПО СведенияКонтрактаДоговораСотрудника.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
	    |			И СведенияКонтрактаДоговораСотрудника.ФизическоеЛицо = КадровыеДанныеСотрудников.ФизическоеЛицо
	    |			И СведенияКонтрактаДоговораСотрудника.Организация = КадровыеДанныеСотрудников.Организация
	    |;
	    |
	    |////////////////////////////////////////////////////////////////////////////////
	    |ВЫБРАТЬ
	    |	ВТОкончаниеДоговора.Сотрудник КАК Сотрудник,
	    |	ВТОкончаниеДоговора.ФизическоеЛицо КАК ФизическоеЛицо,
	    |	ВТОкончаниеДоговора.ДатаЗавершения КАК ДатаЗавершения,
	    |	ВТОкончаниеДоговора.Организация КАК Организация,
	    |	ВТОкончаниеДоговора.Позиция КАК Позиция,
	    |	ВТОкончаниеДоговора.МестоВСтруктуреПредприятия КАК МестоВСтруктуреПредприятия
	    |ИЗ
	    |	ВТОкончаниеДоговора КАК ВТОкончаниеДоговора
	    |ГДЕ
	    |	ВТОкончаниеДоговора.ДатаЗавершения <> ДАТАВРЕМЯ(1, 1, 1)");
	
	Если Отборы.Количество() > 0 Тогда
		ОтборЗапроса = СхемаЗапроса.ПакетЗапросов[1].Операторы[0].Отбор;
		Для Каждого СтрокаОтбора Из Отборы Цикл
			Если СтрокаОтбора.Использование Тогда
				ТекстУсловия = УведомленияСервер.ПредставлениеУсловияДляЗапроса(
					СтрокаОтбора.ВидСравнения,
					СтрокаОтбора.ЛевоеЗначение,
					"ВТОкончаниеДоговора." + СтрокаОтбора.ЛевоеЗначение);
				ОтборЗапроса.Добавить(ТекстУсловия);
				Запрос.УстановитьПараметр(СтрокаОтбора.ЛевоеЗначение, СтрокаОтбора.ПравоеЗначение);
			КонецЕсли;
		КонецЦикла;
	КонецЕсли;
	
	Запрос.Текст = СхемаЗапроса.ПолучитьТекстЗапроса();
	РезультатЗапроса = Запрос.Выполнить();
	Если РезультатЗапроса.Пустой() Тогда
		Возврат;
	КонецЕсли;
	
	ТаблицаДанных = РезультатЗапроса.Выгрузить();
		
	КандидатыПоСотрудникам = ПодборПерсонала.КандидатыПоСотрудникам(ТаблицаДанных.ВыгрузитьКолонку("Сотрудник"));
	Для Каждого СтрокаРезультатаЗапроса Из ТаблицаДанных Цикл
		ПараметрыСобытия = Новый Структура();
		
		Для Каждого КолонкаРезультата Из РезультатЗапроса.Колонки Цикл
			ПараметрыСобытия.Вставить(КолонкаРезультата.Имя);
		КонецЦикла;
		ПараметрыСобытия.Вставить("ДатаЗавершенияПредставление");
		
		ПараметрыСобытия.Вставить("Ответственный", Справочники.ФизическиеЛица.ПустаяСсылка());
		ПараметрыСобытия.Вставить("Заявитель", Справочники.ФизическиеЛица.ПустаяСсылка());
		ПараметрыСобытия.Вставить("Руководитель", Справочники.ФизическиеЛица.ПустаяСсылка());
		
		КандидатСотрудника = КандидатыПоСотрудникам.Найти(СтрокаРезультатаЗапроса.Сотрудник, "Сотрудник");
		Если КандидатСотрудника <> Неопределено Тогда
			Кандидат = КандидатСотрудника.Кандидат;
			ДанныеКандидата = Справочники.Кандидаты.ДанныеКандидата(Кандидат);
			Если ЗначениеЗаполнено(ДанныеКандидата.Вакансия) Тогда
				ДанныеВакансии = ДанныеКандидата.Вакансия;
				ПараметрыСобытия.Вставить("Ответственный", ДанныеВакансии.Ответственный);
				ПараметрыСобытия.Вставить("Заявитель", ДанныеВакансии.Заявитель);
			КонецЕсли;
		КонецЕсли;
		
		ПараметрыСобытия.Вставить("Руководитель",
			ФизическоеЛицоРуководитель(СтрокаРезультатаЗапроса.МестоВСтруктуреПредприятия, СтрокаРезультатаЗапроса.Позиция));
		
		СтрокаТаблицы = ТаблицаРезультата.Добавить();
		СтрокаТаблицы.Предмет = СтрокаРезультатаЗапроса.ФизическоеЛицо;
		СтрокаТаблицы.ДатаСобытия = СтрокаРезультатаЗапроса.ДатаЗавершения;
		ЗаполнитьЗначенияСвойств(ПараметрыСобытия, СтрокаРезультатаЗапроса);
		ПараметрыСобытия.ДатаЗавершенияПредставление = Формат(СтрокаРезультатаЗапроса.ДатаЗавершения, "ДЛФ=D");
		СтрокаТаблицы.ПараметрыСобытия = ПараметрыСобытия;
	КонецЦикла;
	
КонецПроцедуры

&После("ПриПодготовкеШаблонаСообщенияПоУведомлению")
Процедура Рассылка_ПриПодготовкеШаблонаСообщенияПоУведомлению(ВидУведомления, Реквизиты, Вложения, НазначениеШаблона, ДополнительныеПараметры)

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

КонецПроцедуры


В процедуре ПриПодготовкеШаблонаСообщенияПоУведомлению можно задать параметры, которые будут использоваться в шаблоне сообщения. 

Вступайте в нашу телеграмм-группу Инфостарт

Уведомление Окончание договора Расширение ЗУП 3.1

См. также

Адаптация типовых решений 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

31800 руб.

29.06.2023    9204    27    15    

35

Взаиморасчеты Email рассылки Акт сверки Бухгалтер Пользователь 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Платные (руб)

Внешняя обработка для Бухгалтерии 3.0 - позволяет автоматически формировать документы «Акт сверки расчетов» с контрагентами за выбранный период с последующей фоновой отправкой на почту контрагента.

4800 руб.

25.11.2020    27460    296    9    

255

SALE! 50%

Мессенджеры и боты SMS рассылки Email рассылки Пользователь 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Управленческий учет Платные (руб)

Расширение 1С с полным набором инструментов для качественных транзакционных, триггерных и маркетинговых рассылок Email, SMS, WhatsApp, Telegram. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.

6000 3000 руб.

07.04.2014    90181    67    200    

147

SALE! 50%

Взаиморасчеты SMS рассылки Email рассылки Создание на основании Бухгалтер 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение Директ Маркетинг для 1С:Бухгалтерия с триггерами и роботами для автоматического создания документов, полным набором инструментов для качественных транзакционных, триггерных и маркетинговых рассылок Email, SMS, WhatsApp, Telegram.

6000 3000 руб.

15.04.2025    1898    9    9    

10

Загрузка и выгрузка в Excel Зарплата Кадровый учет Бухгалтер 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Обработка позволяет загрузить из структурированного файла данные по физическим лицам, сотрудникам. Предусмотрено создание документов "Прием на работу". Данные загружаются не только в справочники и документы, но и в регистры сведений. Обработка разработана для конфигураций "Зарплата и Управление Персоналом, редакция 3.1"/"Зарплата и кадры государственного учреждения, редакция 3.1" на платформе 8.3.

6000 руб.

15.07.2015    67528    110    51    

114

Банковские операции Адаптация типовых решений Бухгалтер Пользователь 1С v8.3 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

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

9600 руб.

17.06.2025    1243    3    0    

3

Взаиморасчеты Email рассылки Акт сверки Бухгалтер Пользователь 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Создать и отправить 1000 Актов серки контрагентам за 5 мин?! Легко! Разработано для конфигурации 1C:УНФ. Массовое создание и рассылка Актов сверки в три клика.

6000 руб.

13.01.2022    12191    14    13    

20
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ubnkfl 27.10.23 23:50 Сейчас в теме
2. gouranga 3 28.10.23 00:10 Сейчас в теме
(1) Процедуры УведомленияПереопределяемый.ПриЗаполненииСпискаВидовУведомлений и УведомленияПереопределяемый.ПриПодготовкеШаблонаСообщенияПоУведомлению не вызываются. Так что пришлось расширением делать.
Прикрепленные файлы:
Для отправки сообщения требуется регистрация/авторизация