|   |   | 
| 
 | как в ЗУПе отслеживать событие увольнения/прием по работнику? | ☑ | ||
|---|---|---|---|---|
| 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) сюда благодарность)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |