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

27.10.23

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

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

Скачать файл

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

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

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

Решение:
В типовом функционале ЗУП 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

См. также

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

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

3000 руб.

25.11.2020    25604    268    8    

231

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. Даже простые уведомления об оплате счетов способны существенно упростить сбор дебиторской задолженности. Применение всех возможностей прямого маркетинга выводит коммуникацию с клиентами, уровень сервиса и лояльность на новый уровень.

4800 2400 руб.

07.04.2014    86386    52    197    

137

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

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

29400 руб.

29.06.2023    7260    19    13    

28

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3500 руб.

07.02.2023    7967    86    17    

43

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

Решение для массовой рассылки печатных форм (в том числе и дополнительных) любых документов, и произвольных файлов. Рассылка возможна посредством электронной почты, Telegram и файловой системы. Рассылка пакета документов. Добавление факсимильных печати и подписи. Произвольные шаблоны HTML/Simple text с автозаполнением любыми полями документа. Любые форматы файлов. Упаковка вложений в архив. Транслитерация имен файлов. Разбиение рассылки на произвольные порции. Обход спам-фильтров. Журналирование рассылок.

4920 руб.

30.06.2022    11894    77    100    

39

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

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

6000 руб.

13.01.2022    11220    8    13    

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