|
как в ЗУПе отслеживать событие увольнения/прием по работнику? | ☑ | ||
---|---|---|---|---|
0
Dobriy
19.12.23
✎
15:10
|
Коллеги, приветствую! Мне нужно по событию прием/увольнение/перемещение в ЗУПе отправлять информацию на почту. Куда лучше подвесить обработчик события? На регистр какой-нибудь или на документы? Заранее спасибо :)
|
|||
1
Волшебник
19.12.23
✎
15:11
|
лучше в подписку на проведение документа
|
|||
2
Dobriy
19.12.23
✎
15:15
|
(1) Спасибо!
|
|||
3
SleepyHead
19.12.23
✎
15:53
|
(0) А кто получатель письма?
|
|||
4
Гений 1С
19.12.23
✎
15:57
|
(1) (0) я бы сделал регистр оповещений, туда кидал бы запись при проведении увольнения. А регл.задание делало бы рассылку и помечало запись регистра как обработанную.
А то провести 100 раз могут документ |
|||
5
Гена
19.12.23
✎
16:13
|
(3) Скорее всего сотрудник, которому фирма доверила отсылку СЗВ-ТД в СФР по данным событиям. ЗамГБ.
|
|||
6
2S
19.12.23
✎
16:23
|
поставить ДО и бесшовную интеграцию
|
|||
7
d4rkmesa
19.12.23
✎
16:45
|
(0) Там есть штатная рассылка отчетов, через которую можно отправлять отчет о кадровых изменениях (типовой либо самописный, где удобнее данные выбираются). Главное, чтобы оперативность была достаточная, а то могут оформить увольнение заранее, а провести только в последний час в пятницу, в итоге рассылка, к примеру, придет в субботу. Достаточно такое? Если нет, ну тогда действительно этот вариант (6) .
|
|||
8
spiller26
19.12.23
✎
17:07
|
(4) Я так и сделал расширением.
|
|||
9
spiller26
19.12.23
✎
17:24
|
(8)
РС + рпу_УведомленияПриемУвольнение Измерения: КадровыйДокумент Реквизиты: ДатаЗаписи Отправлен Подписки на события + рпу_ОповещениеПриПриемеУвольнении Событие: ОбработкаПроведения Процедура абтОповещениеПриПриемеУвольненииОбработкаПроведения(Источник, Отказ, РежимПроведения) Экспорт Если Источник.ПометкаУдаления = Ложь И Отказ = Ложь Тогда Если Источник.абтУведомитьОтделы Тогда Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | рпу_УведомленияПриемУвольнение.КадровыйДокумент КАК КадровыйДокумент |ИЗ | РегистрСведений.рпу_УведомленияПриемУвольнение КАК рпу_УведомленияПриемУвольнение |ГДЕ | рпу_УведомленияПриемУвольнение.КадровыйДокумент = &КадровыйДокумент"; Запрос.УстановитьПараметр("КадровыйДокумент", Источник.Ссылка); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Попытка ЗаписьРС = РегистрыСведений.рпу_УведомленияПриемУвольнение.СоздатьМенеджерЗаписи(); ЗаписьРС.КадровыйДокумент = Источник.Ссылка; ЗаписьРС.ДатаЗаписи = ТекущаяДата(); ЗаписьРС.Отправлен = Ложь; ЗаписьРС.Записать(); Исключение ЗаписьЖурналаРегистрации("ЗаписанныеУведомленияПриемаУвольнения", УровеньЖурналаРегистрации.Информация, , , "Не смог записать в РС.рпу_УведомленияПриемУвольнение"); КонецПопытки; КонецЕсли; КонецЕсли; КонецЕсли; КонецПроцедуры ============================= Сама отправка Процедура рпу_РассылкаУведомленийПриемУвольнение() Экспорт Если ОпределитьЭтаИнформационнаяБазаФайловая() Тогда Возврат; КонецЕсли; ДатаНачалаРассылкиКадровыхДокументов = Константы.рпу_ДатаНачалаРассылкиКадровыхДокументов.Получить(); Если ДатаНачалаРассылкиКадровыхДокументов = Дата("00010101") Тогда Возврат; КонецЕсли; МассивКадровыхДокументов = Новый Массив; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | рпу_УведомленияПриемУвольнение.КадровыйДокумент КАК КадровыйДокумент |ИЗ | РегистрСведений.рпу_УведомленияПриемУвольнение КАК абтУведомленияПриемУвольнение |ГДЕ | рпу_УведомленияПриемУвольнение.ДатаЗаписи >= &ДатаНачалаРассылкиКадровыхДокументов | И абтУведомленияПриемУвольнение.Отправлен = ЛОЖЬ"; Запрос.УстановитьПараметр("ДатаНачалаРассылкиКадровыхДокументов", ДатаНачалаРассылкиКадровыхДокументов); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат; Иначе ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл МассивКадровыхДокументов.Добавить(ВыборкаДетальныеЗаписи.КадровыйДокумент); КонецЦикла; КонецЕсли; ТекстТелаПисьма = ""; ТекстТелаПисьмаДляСкрипта = ""; #Region Запрос_Кадровых_документов Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Организация КАК Организация, | ВложенныйЗапрос.Сотрудник КАК Сотрудник, | ВложенныйЗапрос.ДатаПриема КАК ДатаПриема, | ВложенныйЗапрос.ДатаУвольнения КАК ДатаУвольнения |ИЗ | (ВЫБРАТЬ | ПриемНаРаботу.Организация КАК Организация, | ПриемНаРаботу.Сотрудник КАК Сотрудник, | ПриемНаРаботу.ДатаПриема КАК ДатаПриема, | """" КАК ДатаУвольнения | ИЗ | Документ.ПриемНаРаботу КАК ПриемНаРаботу | ГДЕ | ПриемНаРаботу.Ссылка В(&СписокКадровыхДокументов) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | Увольнение.Организация, | Увольнение.Сотрудник, | """", | Увольнение.ДатаУвольнения | ИЗ | Документ.Увольнение КАК Увольнение | ГДЕ | Увольнение.Ссылка В(&СписокКадровыхДокументов) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ПриемНаРаботуСпискомСотрудники.Ссылка.Организация, | ПриемНаРаботуСпискомСотрудники.Сотрудник, | ПриемНаРаботуСпискомСотрудники.ДатаПриема, | """" | ИЗ | Документ.ПриемНаРаботуСписком.Сотрудники КАК ПриемНаРаботуСпискомСотрудники | ГДЕ | ПриемНаРаботуСпискомСотрудники.Ссылка В(&СписокКадровыхДокументов) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | УвольнениеСпискомСотрудники.Ссылка.Организация, | УвольнениеСпискомСотрудники.Сотрудник, | """", | УвольнениеСпискомСотрудники.ДатаУвольнения | ИЗ | Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники | ГДЕ | УвольнениеСпискомСотрудники.Ссылка В(&СписокКадровыхДокументов)) КАК ВложенныйЗапрос"; #EndRegion Запрос.УстановитьПараметр("СписокКадровыхДокументов", МассивКадровыхДокументов); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат; Иначе //формируем письмо ТекстТелаПисьма = "<p><strong>Рассылка на: "+Формат(ТекущаяДата(), "ДЛФ=DDT")+"</strong></p>"; ТекстТелаПисьмаДляСкрипта = "Рассылка (прием/увольнение): "+Формат(ТекущаяДата(), "ДЛФ=DDT"); //шапка таблицы ТекстТелаПисьма = ТекстТелаПисьма + Символы.ПС + " |<table border=""1"" cellpadding=""1"" cellspacing=""0"" style=""""width: 477px;""""> |<tbody> |<tr> |<td style=""""width: 95px; text-align: center;""""><strong>Организация</strong></td> |<td style=""""width: 169px; text-align: center;""""><strong>Сотрудник</strong></td> |<td style=""""width: 191px; text-align: center;""""><strong>Дата приема</strong></td> |<td style=""""width: 191px; text-align: center;""""><strong>Дата увольнения</strong></td> |</tr>"; // ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ТекстОрганизация = Строка(ВыборкаДетальныеЗаписи.Организация); ТекстСотрудник = Строка(ВыборкаДетальныеЗаписи.Сотрудник); ТекстДатаПриема = ?(ВыборкаДетальныеЗаписи.ДатаПриема = "", "", Формат(ВыборкаДетальныеЗаписи.ДатаПриема, "ДЛФ=DD")); ТекстДатаУвольнения = ?(ВыборкаДетальныеЗаписи.ДатаУвольнения = "", "", Формат(ВыборкаДетальныеЗаписи.ДатаУвольнения, "ДЛФ=DD")); //строки таблицы ТекстТелаПисьма = ТекстТелаПисьма + Символы.ПС + " |<tr> |<td style=""""width: 95px; text-align: center;"""">" + ТекстОрганизация + "</td> |<td style=""""width: 169px; text-align: center;"""">" + ТекстСотрудник + "</td> |<td style=""""width: 191px; text-align: center;""""> " + ТекстДатаПриема + "</td> |<td style=""""width: 191px; text-align: center;""""> " + ТекстДатаУвольнения + "</td> |</tr> |</tbody>"; ТекстСтатусСотрудника = ""; Если НЕ ТекстДатаПриема = "" Тогда ТекстСтатусСотрудника = "прием " + ТекстДатаПриема; КонецЕсли; Если НЕ ТекстДатаУвольнения = "" Тогда ТекстСтатусСотрудника = "увольнение " + ТекстДатаУвольнения; КонецЕсли; //выходящий текст для телеграма ТекстТелаПисьмаДляСкрипта = ТекстТелаПисьмаДляСкрипта + Символы.ПС + ТекстСотрудник + " // " + ТекстСтатусСотрудника + " // " + ТекстОрганизация; КонецЦикла; //закрываем таблицу ТекстТелаПисьма = ТекстТелаПисьма + Символы.ПС + "</table>"; КонецЕсли; ПисьмоОтправлено = Ложь; #Region Отправка Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | рпу_СписокАдресовДляРассылки.АдресЭлектроннойПочты КАК АдресЭП, | рпу_СписокАдресовДляРассылки.Скрипт КАК Скрипт, | рпу_СписокАдресовДляРассылки.СкриптПараметры КАК СкриптПараметры |ИЗ | РегистрСведений.рпу_СписокАдресовДляРассылки КАК рпу_СписокАдресовДляРассылки |ГДЕ | рпу_СписокАдресовДляРассылки.Увольнение = ИСТИНА"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ПараметрыПисьма = Новый Структура; ПараметрыПисьма.Вставить("Кому", СокрЛП(ВыборкаДетальныеЗаписи.АдресЭП)); ПараметрыПисьма.Вставить("Тело", ТекстТелаПисьма); ПараметрыПисьма.Вставить("ТипТекста", ТипТекстаПочтовогоСообщения.HTML); ПараметрыПисьма.Вставить("Тема", "Кадровые документы (прием/увольнение)"); МодульРаботаСПочтовымиСообщениями = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениями"); Попытка МодульРаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(МодульРаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись(), ПараметрыПисьма); ПисьмоОтправлено = Истина; Исключение КонецПопытки; //Скрипт Если СокрЛП(ВыборкаДетальныеЗаписи.Скрипт) <> "" Тогда СтрокаКонсольнойКоманды = СокрЛП(ВыборкаДетальныеЗаписи.Скрипт)+ " " + СокрЛП(ВыборкаДетальныеЗаписи.СкриптПараметры) + " """ + ТекстТелаПисьмаДляСкрипта + """"; ЗапуститьПриложение(СтрокаКонсольнойКоманды); КонецЕсли; КонецЦикла; #EndRegion //Обрабатываем РС Если ПисьмоОтправлено И МассивКадровыхДокументов.Количество() > 0 Тогда Для Каждого СтрКадровыйДокумент Из МассивКадровыхДокументов Цикл ТекЗаписьКД = РегистрыСведений.рпу_УведомленияПриемУвольнение.СоздатьМенеджерЗаписи(); ТекЗаписьКД.КадровыйДокумент = СтрКадровыйДокумент; ТекЗаписьКД.Прочитать(); ТекЗаписьКД.Отправлен = Истина; Попытка ТекЗаписьКД.Записать(); Исключение ЗаписьЖурналаРегистрации("ЗаписанныеУведомленияПриемУвольнение", УровеньЖурналаРегистрации.Информация, , , "Не смог переписать в РС.рпу_УведомленияПриемУвольнение"); КонецПопытки; КонецЦикла; КонецЕсли; КонецПроцедуры Процедура рпу_РассылкаУведомленийПриемУвольнение() Экспорт Если ОпределитьЭтаИнформационнаяБазаФайловая() Тогда Возврат; КонецЕсли; ДатаНачалаРассылкиКадровыхДокументов = Константы.рпу_ДатаНачалаРассылкиКадровыхДокументов.Получить(); Если ДатаНачалаРассылкиКадровыхДокументов = Дата("00010101") Тогда Возврат; КонецЕсли; МассивКадровыхДокументов = Новый Массив; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | рпу_УведомленияПриемУвольнение.КадровыйДокумент КАК КадровыйДокумент |ИЗ | РегистрСведений.рпу_УведомленияПриемУвольнение КАК абтУведомленияПриемУвольнение |ГДЕ | рпу_УведомленияПриемУвольнение.ДатаЗаписи >= &ДатаНачалаРассылкиКадровыхДокументов | И абтУведомленияПриемУвольнение.Отправлен = ЛОЖЬ"; Запрос.УстановитьПараметр("ДатаНачалаРассылкиКадровыхДокументов", ДатаНачалаРассылкиКадровыхДокументов); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат; Иначе ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл МассивКадровыхДокументов.Добавить(ВыборкаДетальныеЗаписи.КадровыйДокумент); КонецЦикла; КонецЕсли; ТекстТелаПисьма = ""; ТекстТелаПисьмаДляСкрипта = ""; #Region Запрос_Кадровых_документов Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Организация КАК Организация, | ВложенныйЗапрос.Сотрудник КАК Сотрудник, | ВложенныйЗапрос.ДатаПриема КАК ДатаПриема, | ВложенныйЗапрос.ДатаУвольнения КАК ДатаУвольнения |ИЗ | (ВЫБРАТЬ | ПриемНаРаботу.Организация КАК Организация, | ПриемНаРаботу.Сотрудник КАК Сотрудник, | ПриемНаРаботу.ДатаПриема КАК ДатаПриема, | """" КАК ДатаУвольнения | ИЗ | Документ.ПриемНаРаботу КАК ПриемНаРаботу | ГДЕ | ПриемНаРаботу.Ссылка В(&СписокКадровыхДокументов) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | Увольнение.Организация, | Увольнение.Сотрудник, | """", | Увольнение.ДатаУвольнения | ИЗ | Документ.Увольнение КАК Увольнение | ГДЕ | Увольнение.Ссылка В(&СписокКадровыхДокументов) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | ПриемНаРаботуСпискомСотрудники.Ссылка.Организация, | ПриемНаРаботуСпискомСотрудники.Сотрудник, | ПриемНаРаботуСпискомСотрудники.ДатаПриема, | """" | ИЗ | Документ.ПриемНаРаботуСписком.Сотрудники КАК ПриемНаРаботуСпискомСотрудники | ГДЕ | ПриемНаРаботуСпискомСотрудники.Ссылка В(&СписокКадровыхДокументов) | | ОБЪЕДИНИТЬ ВСЕ | | ВЫБРАТЬ | УвольнениеСпискомСотрудники.Ссылка.Организация, | УвольнениеСпискомСотрудники.Сотрудник, | """", | УвольнениеСпискомСотрудники.ДатаУвольнения | ИЗ | Документ.УвольнениеСписком.Сотрудники КАК УвольнениеСпискомСотрудники | ГДЕ | УвольнениеСпискомСотрудники.Ссылка В(&СписокКадровыхДокументов)) КАК ВложенныйЗапрос"; #EndRegion Запрос.УстановитьПараметр("СписокКадровыхДокументов", МассивКадровыхДокументов); РезультатЗапроса = Запрос.Выполнить(); Если РезультатЗапроса.Пустой() Тогда Возврат; Иначе //формируем письмо ТекстТелаПисьма = "<p><strong>Рассылка на: "+Формат(ТекущаяДата(), "ДЛФ=DDT")+"</strong></p>"; ТекстТелаПисьмаДляСкрипта = "Рассылка (прием/увольнение): "+Формат(ТекущаяДата(), "ДЛФ=DDT"); //шапка таблицы ТекстТелаПисьма = ТекстТелаПисьма + Символы.ПС + " |<table border=""1"" cellpadding=""1"" cellspacing=""0"" style=""""width: 477px;""""> |<tbody> |<tr> |<td style=""""width: 95px; text-align: center;""""><strong>Организация</strong></td> |<td style=""""width: 169px; text-align: center;""""><strong>Сотрудник</strong></td> |<td style=""""width: 191px; text-align: center;""""><strong>Дата приема</strong></td> |<td style=""""width: 191px; text-align: center;""""><strong>Дата увольнения</strong></td> |</tr>"; // ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ТекстОрганизация = Строка(ВыборкаДетальныеЗаписи.Организация); ТекстСотрудник = Строка(ВыборкаДетальныеЗаписи.Сотрудник); ТекстДатаПриема = ?(ВыборкаДетальныеЗаписи.ДатаПриема = "", "", Формат(ВыборкаДетальныеЗаписи.ДатаПриема, "ДЛФ=DD")); ТекстДатаУвольнения = ?(ВыборкаДетальныеЗаписи.ДатаУвольнения = "", "", Формат(ВыборкаДетальныеЗаписи.ДатаУвольнения, "ДЛФ=DD")); //строки таблицы ТекстТелаПисьма = ТекстТелаПисьма + Символы.ПС + " |<tr> |<td style=""""width: 95px; text-align: center;"""">" + ТекстОрганизация + "</td> |<td style=""""width: 169px; text-align: center;"""">" + ТекстСотрудник + "</td> |<td style=""""width: 191px; text-align: center;""""> " + ТекстДатаПриема + "</td> |<td style=""""width: 191px; text-align: center;""""> " + ТекстДатаУвольнения + "</td> |</tr> |</tbody>"; ТекстСтатусСотрудника = ""; Если НЕ ТекстДатаПриема = "" Тогда ТекстСтатусСотрудника = "прием " + ТекстДатаПриема; КонецЕсли; Если НЕ ТекстДатаУвольнения = "" Тогда ТекстСтатусСотрудника = "увольнение " + ТекстДатаУвольнения; КонецЕсли; //выходящий текст для телеграма ТекстТелаПисьмаДляСкрипта = ТекстТелаПисьмаДляСкрипта + Символы.ПС + ТекстСотрудник + " // " + ТекстСтатусСотрудника + " // " + ТекстОрганизация; КонецЦикла; //закрываем таблицу ТекстТелаПисьма = ТекстТелаПисьма + Символы.ПС + "</table>"; КонецЕсли; ПисьмоОтправлено = Ложь; #Region Отправка Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | рпу_СписокАдресовДляРассылки.АдресЭлектроннойПочты КАК АдресЭП, | рпу_СписокАдресовДляРассылки.Скрипт КАК Скрипт, | рпу_СписокАдресовДляРассылки.СкриптПараметры КАК СкриптПараметры |ИЗ | РегистрСведений.рпу_СписокАдресовДляРассылки КАК рпу_СписокАдресовДляРассылки |ГДЕ | рпу_СписокАдресовДляРассылки.Увольнение = ИСТИНА"; РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл ПараметрыПисьма = Новый Структура; ПараметрыПисьма.Вставить("Кому", СокрЛП(ВыборкаДетальныеЗаписи.АдресЭП)); ПараметрыПисьма.Вставить("Тело", ТекстТелаПисьма); ПараметрыПисьма.Вставить("ТипТекста", ТипТекстаПочтовогоСообщения.HTML); ПараметрыПисьма.Вставить("Тема", "Кадровые документы (прием/увольнение)"); МодульРаботаСПочтовымиСообщениями = ОбщегоНазначения.ОбщийМодуль("РаботаСПочтовымиСообщениями"); Попытка МодульРаботаСПочтовымиСообщениями.ОтправитьПочтовоеСообщение(МодульРаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись(), ПараметрыПисьма); ПисьмоОтправлено = Истина; Исключение КонецПопытки; //Скрипт Если СокрЛП(ВыборкаДетальныеЗаписи.Скрипт) <> "" Тогда СтрокаКонсольнойКоманды = СокрЛП(ВыборкаДетальныеЗаписи.Скрипт)+ " " + СокрЛП(ВыборкаДетальныеЗаписи.СкриптПараметры) + " """ + ТекстТелаПисьмаДляСкрипта + """"; ЗапуститьПриложение(СтрокаКонсольнойКоманды); КонецЕсли; КонецЦикла; #EndRegion //Обрабатываем РС Если ПисьмоОтправлено И МассивКадровыхДокументов.Количество() > 0 Тогда Для Каждого СтрКадровыйДокумент Из МассивКадровыхДокументов Цикл ТекЗаписьКД = РегистрыСведений.рпу_УведомленияПриемУвольнение.СоздатьМенеджерЗаписи(); ТекЗаписьКД.КадровыйДокумент = СтрКадровыйДокумент; ТекЗаписьКД.Прочитать(); ТекЗаписьКД.Отправлен = Истина; Попытка ТекЗаписьКД.Записать(); Исключение ЗаписьЖурналаРегистрации("ЗаписанныеУведомленияПриемУвольнение", УровеньЖурналаРегистрации.Информация, , , "Не смог переписать в РС.рпу_УведомленияПриемУвольнение"); КонецПопытки; КонецЦикла; КонецЕсли; КонецПроцедуры |
|||
10
_Batoo
19.12.23
✎
17:35
|
(9) оу, посмотрите справочник "Шаблоны сообщений"
|
|||
11
Dobriy
20.12.23
✎
12:07
|
(11) Спасибо!
|
|||
12
Dobriy
20.12.23
✎
12:08
|
(9) точнее тут спасибо)
|
|||
13
pavlika
20.12.23
✎
12:20
|
Задача вообще не понятна - для какой цели нужно "отправлять информацию на почту"? Документ можно провести, потом поменять даты, потом отменить, потом сделать из постоянного временным, потом поменять номер договора и тд и тп
|
|||
14
DJ Anthon
20.12.23
✎
12:34
|
(1) мне тут достался битрикс на ерп. 90 процентов работы сервера - это подписки битрикса на любой чих в базе. пришлось все подписки вырезать, это какой-то ужас. сейчас думаем об альтернативном способе работы битрикса, потому что их коробки он просто кладет базу, отладить ничего невозможно. в битриксе свой движок обменов, 1совские планы обмена ему не по нраву. как все это разгребать, вообще не знаю, некогда.
(4) да, мы так и сделали |
|||
15
Valdis2007
20.12.23
✎
13:53
|
(9) лучьше работать в функциональном стиле...
твои выборки пока ...легко меняются на одну строку кода... МассивКадровыхДокументов = РезультатЗапроса.Выгрузить().ВыгрузитьКолонку("КадровыйДокумент") |
|||
16
Dobriy
20.12.23
✎
15:36
|
(13) задача ознакомительная просто, крайне редко в базе удаляют или переделывают документы.
Я решил с регистром не заморачиваться и повесил обработчикПередЗаписью на нужные документы, и сравниваю потом объект в базе с модифицированным объектом: //код взял отсюда https://its.1c.ru/db/v8std/content/464/hdoc Процедура ОтправитьСообщение(Источник, Отказ, РежимЗаписи, РежимПроведения) Экспорт Если Источник.ОбменДанными.Загрузка ИЛИ Отказ ИЛИ РежимЗаписи <> РежимЗаписиДокумента.Проведение Тогда Возврат; КонецЕсли; ОбновлениеИнформационнойБазы.ПроверитьОбъектОбработан(Источник); // Если это повторное проведение документа, который не модифицировался Если Источник.Проведен И РежимЗаписи = РежимЗаписиДокумента.Проведение И НЕ Источник.Модифицированность() Тогда Возврат; КонецЕсли; //если док-т меняет интересующие значения, то отправляю оповещение Если Источник.Подразделение <> Источник.Ссылка.Подразделение ИЛИ Источник.Сотрудник <> Источник.Ссылка.Сотрудник Тогда //ОтправитьСообщение.... КонецЕсли; КонецПроцедуры |
|||
17
unenu
20.12.23
✎
15:58
|
регистр
КадроваяИсторияСотрудников подчинен регистратору ПриЗаписи() в расширение в коде этого модуля есть методы анализа что/где изменилось и голова не будет болеть что-то появилось новое/ушло старое. |
|||
18
Dobriy
20.12.23
✎
16:58
|
(20) кайф, спасибо))
|
|||
19
Dobriy
20.12.23
✎
16:58
|
(17) сюда благодарность)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |