Расчетные листки организации с рассылкой по почте. Вариант 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 не будет опубликован. Обязательные поля помечены *