Расчетные листки организации с рассылкой по почте. Вариант 2

Расчетные листки организации с рассылкой по почте. Вызывается стандартный отчет и анализируется для формирования рассылки расчетных листков в формате xls на почтовые ящики сотрудников.

Решил адаптировать отчет для УПП и пришел к идее что лучше будет не копировать стандартный отчет и адаптировать, а вызвать его и проанализировать результаты. В общих чертах: из обработки открывается форма отчета «РасчетныеЛисткиОрганизаций», к ней присоединяется форма формирования рассылки.

Тестировалось в УПП 1.2.25.1 и ЗУП 2.5.17.8 и 2.5.18.2

41 Comments

  1. gutentag

    Полезная вещь!

    Reply ↓
  2. rabanik

    Спасибо

    Reply ↓
  3. ctankina

    Очень полезная вещь!

    Reply ↓
  4. MOPC

    Спасибо.

    Модифицировал — добавил получение адреса электронной почты из AD.

    Функция ПолучитьАдресЭлектроннойПочтыИзActiveDirectory(Объект) Экспорт

    //

    Адр = «»;

    АдоСоед = новый ComObject(«ADODB.Connection»);

    АдоСоед.Provider = «ADSDSOObject»;

    АдоСоед.Open(«ADs Provider»);

    query = «SELECT ADsPath FROM ‘LDAP://DC=ВашДомен,DC=ru’ WHERE objectClass=’user’ AND objectCategory=’person’ AND name = ‘»+Объект.Сотрудник.Наименование+»‘»;

    Cmd = Новый ComObject(«ADODB.Command»);

    Cmd.ActiveConnection = АдоСоед;

    Cmd.CommandType = 1;

    Cmd.CommandText= query;

    Rs = новый ComObject(«ADODB.RecordSet»);

    попытка

    Rs = Cmd.Execute();

    Rs.MoveFirst();

    Пока Rs.EOF() = 0 do

    Value1 = ПолучитьCOMОбъект(Rs.Fields(«ADsPath»).Value);

    Адр = Value1.Mail;

    Rs.MoveNext();

    КонецЦикла;

    исключение

    Сообщить(«Почтовый адрес в AD для сотрудника «+Объект.Сотрудник.Наименование+» не найден!»);

    конецпопытки;

    Rs.Close();

    Rs = NULL;

    Cmd = NULL;

    АдоСоед.Close();

    АдоСоед = NULL;

    возврат Адр;

    конецфункции

    //////////////////////////////////

    Использование:

    Процедура СформироватьТаблицуСотрудников(ТабличныйДокумент,ДанныеРасшифровки) Экспорт

    …

    Для каждого СтрокаТабл Из ТаблицаСотрудников Цикл

    СтрокаТабл.Адрес=ПолучитьАдресЭлектроннойПочтыИзActiveDirectory(СтрокаТабл);

    если ПустаяСтрока(СтрокаТабл.Адрес) тогда

    СтрокаТабл.Адрес=ПолучитьАдресЭлектроннойПочтыИзКонтактнойИнформации(СтрокаТабл.Сотрудник.Физлицо);

    конецесли;

    Если ПустаяСтрока(СтрокаТабл.Адрес) Тогда

    СтрокаТабл.Пометка=Ложь;

    возврат;

    КонецЕсли;

    …

    Reply ↓
  5. kate_kate

    Спасибо большое, очень помог этот отчетик

    Reply ↓
  6. Anna_Vl

    Спасибо огромное, отличный отчет!

    Reply ↓
  7. sound

    Ай маладца! Хотел уже сам писать. Лови жЫрный плюс!

    Reply ↓
  8. nicon1984

    Отличная вещь=) попробовал на 2.5.31 все прекрасно работает, респект.

    Reply ↓
  9. Lo1jke

    Спасибо, очень полезно!

    Reply ↓
  10. vlasov

    Спасибо!

    Reply ↓
  11. amalisheva

    хорошая вешь! огромное спасибо

    Reply ↓
  12. aqua22

    Спасибо! Очень полезная обработка!

    Reply ↓
  13. e_kazakova

    А для ЗУП 8.2 эта обработка будет работать?

    Reply ↓
  14. oaizatulin@yahoo.com

    Супер! Большое спасибо. Надесь быстро врубиться и внедрить до НГ

    Reply ↓
  15. oaizatulin@yahoo.com

    Скажите пож.

    Модифицировал — добавил получение адреса электронной почты из AD.

    Функция ПолучитьАдресЭлектроннойПочтыИзActiveDirectory(Объект) Экспорт
    //
    Адр = «»;
    АдоСоед = новый ComObject(«ADODB.Connection»);
    АдоСоед.Provider = «ADSDSOObject»;
    АдоСоед.Open(«ADs Provider»);
    
    query = «SEL ECT ADsPath FR OM ‘LDAP://DC=ВашДомен,DC=ru’ WHERE objectClass=’user’ AND objectCategory=’person’ AND name = ‘»+Объект.Сотрудник.Наименование+»‘»;
    
    Cmd = Новый ComObject(«ADODB.Command»);
    Cmd.ActiveConnection = АдоСоед;
    Cmd.CommandType = 1;
    Cmd.CommandText= query;
    
    Rs = новый ComObject(«ADODB.RecordSet»);
    
    попытка
    Rs = Cmd.Execute();
    
    Rs.MoveFirst();
    Пока Rs.EOF() = 0 do
    Value1 = ПолучитьCOMОбъект(Rs.Fields(«ADsPath»).Value);
    Адр = Value1.Mail;
    Rs.MoveNext();
    КонецЦикла;
    исключение
    Сообщить(«Почтовый адрес в AD для сотрудника «+Объект.Сотрудник.Наименование+» не найден!»);
    конецпопытки;
    Rs.Close();
    Rs = NULL;
    Cmd = NULL;
    АдоСоед.Close();
    АдоСоед = NULL;
    
    возврат Адр;
    конецфункции
    
    //////////////////////////////////

    Показать

    Использование:

    Процедура СформироватьТаблицуСотрудников(ТабличныйДокумент,ДанныеРасшифровки) Экспорт

    …

    Для каждого СтрокаТабл Из ТаблицаСотрудников Цикл

    СтрокаТабл.Адрес=ПолучитьАдресЭлектроннойПочтыИзActiveDirecto­ry(СтрокаТабл);

    если ПустаяСтрока(СтрокаТабл.Адрес) тогда

    СтрокаТабл.Адрес=ПолучитьАдресЭлектроннойПочтыИзКонтактнойИнф­ормации(СтрокаТабл.Сотрудник.Физлицо);

    конецесли;

    Если ПустаяСтрока(СтрокаТабл.Адрес) Тогда

    СтрокаТабл.Пометка=Ложь;

    возврат;

    КонецЕсли;

    а этот код как использовать?

    Reply ↓
  16. Alltruist

    (15) oaizatulin@yahoo.com, я не понял о каком именно коде идет речь?

    Reply ↓
  17. kit

    Отчет пригодился, спасибо!

    Reply ↓
  18. Andryuha83

    А там код открытый?

    Нужно сделать такой отчет, жаль скачать пока не могу(

    Reply ↓
  19. Мать Тереза

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

    Reply ↓
  20. Alltruist

    (18) Открытый.

    Reply ↓
  21. lira_nk

    Полезная вещица,забираю 🙂

    Reply ↓
  22. Gonza1978

    Отличная вещь!!! Самому поставили задачу доработать программу, чтобы можно было рассылать расчетные листки сотрудникам. Подумал, может есть что-то уже готовое. И точно — есть!

    Реализовано лучше не придумаешь! В список рассылки попадают только те, у которых заполнено поле E-mail. Тема письма формируется автоматически и сразу понятная пользователям.

    В ЗУП под 1С8.2 великолепно работает после стандартной конвертации. Единственное, у меня ранее встроенная учетная запись была настроена без реальной настройки пользователя POP3, а при рассылке расчетных листков почему то стала ругаться, что нет такого пользователя. Ну это мелочи, да и ругается скорее всего сам стандартный модуль рассылки.

    Reply ↓
  23. festiv1

    А можно отправить по e-mail altress@yandex.ru? не получается скачать

    Reply ↓
  24. iran3

    Пожалуйста, скиньте этот отчетик на irbor@mail.ru. Очень нужно и время не терпит. Заранее большое спасибо!

    Reply ↓
  25. necropunk

    Жирный плюс. Хорошая реализация. Переписал под себя, все замечательно.

    Reply ↓
  26. Pavel777777

    Вещь! Спасибо!

    Reply ↓
  27. Mixailo333

    Скажите, а как проверить корректность работы, если всем сотрудникам уже забит свой и-мейл? Не переделывать же вручную для каждого сотрудника на тестовый адрес…

    Reply ↓
  28. RakovskiyK

    великолепно! как раз то, что нужно. пробовал другие, но здесь есть выборочная рассылка. работает великолепно.

    Reply ↓
  29. Zhilyakovdr

    Отличная штука! Работает на Комплексной.

    Reply ↓
  30. Baksheev-Nikita

    Хорошая публикация. Большой плюс в том, что вызывается стандартный типовой отчет, а на его основе формируются письма. Таким образом обновления типовых конфигураций не влияют на работоспособность данной обработки.

    Reply ↓
  31. Lo1jke

    Изменил Вашу обработку и использую каждый месяц при рассылке расчеток. Спасибо большое за труды!

    Reply ↓
  32. Mila81

    спасибо, пригодилось 🙂

    Reply ↓
  33. sergio199

    Интересная. Замечание хотелось бы добавить — желательно добавить проверку на наличие каталога и вообще поле для хранения файлов с расчетными листами вывести на форму. ну а так — респект за обработку!

    Reply ↓
  34. stroga

    Обработка проработала несколько лет. Сейчас выдает ошибку:

    Обработка.РасчетныеЛисткиОрганизацийПоПочте.МодульОбъекта(515)}: Значение, соответствующее ключу, не задано

    Сотрудник = ДанныеРасшифровки.Элементы[ИдентификаторРасшифровки].ПолучитьПоля()[0].Значение;

    Причем только в клиент-серверном варианте работы 1С (УПП). В файловом варианте БД, локально без ошибок.

    Reply ↓
  35. Alltruist

    (34) stroga, а версия УПП какая?

    Reply ↓
  36. itriot11

    (35) столкнулся с тем же, что и (34)

    1С:Предприятие 8.3 (8.3.9.1818)

    Управление производственным предприятием, редакция 1.3 (1.3.85.2)

    Правится изменением в двух местах этого:

    ИдентификаторРасшифровки=ТабличныйДокумент.Область(НомерСтрокиНачалаРЛ+3,1 , НомерСтрокиНачалаРЛ+3,1 ).Расшифровка;

    Сотрудник = ДанныеРасшифровки.Элементы[ИдентификаторРасшифровки].ПолучитьПоля()[0].Значение;

    на это

    Сотрудник = ТабличныйДокумент.Область(НомерСтрокиНачалаРЛ+3,1 , НомерСтрокиНачалаРЛ+3,1 ).Расшифровка;

    Спасибо за разработку!

    Reply ↓
  37. user752987

    Добрый день, скачали обработку, но при формировании списка выдает ошибку (во вложении). Как исправить ошибку?

    Reply ↓
  38. user817736

    Спасибо большое! Отлично работает и выручает.

    Reply ↓
  39. sound

    Проверил еще раз, все работает

    Reply ↓
  40. Alltruist

    Кто бы мог подумать! Написал эту обработку в 2009 году, а до сих пор живет…

    Reply ↓
  41. alo2012

    Спасибо, помогло.

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *