bdd2

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

Опубликовал Альберт (Alltruist) в раздел Отчеты - Бухгалтерские

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

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

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

Скачать файлы

Наименование Файл Версия Размер
РасчетныеЛисткиОрганизаций.epf
.epf 20,59Kb
23.07.13
558
.epf 20,59Kb 558 Скачать

См. также

Добавить вознаграждение
Комментарии
1. Igоr Sаulеviсh (gutentag) 249 03.11.09 21:29 Сейчас в теме
2. гр534 (rabanik) 17.11.09 19:08 Сейчас в теме
3. ctankina ctankina (ctankina) 04.12.09 11:32 Сейчас в теме
4. Павел Кузьмин (MOPC) 3 19.05.10 09:10 Сейчас в теме
Спасибо.

Модифицировал - добавил получение адреса электронной почты из 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(СтрокаТабл);
если ПустаяСтрока(СтрокаТабл.Адрес) тогда
СтрокаТабл.Адрес=ПолучитьАдресЭлектроннойПочтыИзКонтактнойИнформации(СтрокаТабл.Сотрудник.Физлицо);
конецесли;
Если ПустаяСтрока(СтрокаТабл.Адрес) Тогда
СтрокаТабл.Пометка=Ложь;
возврат;
КонецЕсли;
...
5. Екатерина Котова (kate_kate) 07.06.10 17:38 Сейчас в теме
Спасибо большое, очень помог этот отчетик
6. Анна Юдакова (Anna_Vl) 18.11.10 10:48 Сейчас в теме
Спасибо огромное, отличный отчет!
7. sound sound (sound) 518 29.12.10 00:03 Сейчас в теме
Ай маладца! Хотел уже сам писать. Лови жЫрный плюс!
8. Алексей Никаноров (nicon1984) 02.02.11 23:19 Сейчас в теме
Отличная вещь=) попробовал на 2.5.31 все прекрасно работает, респект.
9. Роман Верховых (Lo1jke) 05.07.11 14:19 Сейчас в теме
10. Василий Власов (vlasov) 20.07.11 17:36 Сейчас в теме
11. Нюра Иванова (amalisheva) 15.09.11 14:51 Сейчас в теме
хорошая вешь! огромное спасибо
12. Наталия Ершова (aqua22) 25.09.11 22:35 Сейчас в теме
Спасибо! Очень полезная обработка!
13. Санкт-Петербург Казакова (e_kazakova) 80 23.11.11 11:49 Сейчас в теме
А для ЗУП 8.2 эта обработка будет работать?
14. Oleg Aizatulin (oaizatulin@yahoo.com) 28.12.11 13:17 Сейчас в теме
Супер! Большое спасибо. Надесь быстро врубиться и внедрить до НГ
15. Oleg Aizatulin (oaizatulin@yahoo.com) 28.12.11 13:18 Сейчас в теме
Скажите пож.
Модифицировал - добавил получение адреса электронной почты из 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(СтрокаТабл);
если ПустаяСтрока(СтрокаТабл.Адрес) тогда
СтрокаТабл.Адрес=ПолучитьАдресЭлектроннойПочтыИзКонтактнойИнф­ормации(СтрокаТабл.Сотрудник.Физлицо);
конецесли;
Если ПустаяСтрока(СтрокаТабл.Адрес) Тогда
СтрокаТабл.Пометка=Ложь;
возврат;
КонецЕсли;

а этот код как использовать?
16. Альберт (Alltruist) 106 28.12.11 13:23 Сейчас в теме
(15) oaizatulin@yahoo.com, я не понял о каком именно коде идет речь?
17. Александр Лагунов (kit) 60 26.01.12 01:07 Сейчас в теме
Отчет пригодился, спасибо!
18. Andrew Ivanov (Andryuha83) 16.02.12 13:42 Сейчас в теме
А там код открытый?
Нужно сделать такой отчет, жаль скачать пока не могу(
19. Татьяна Фролова (Мать Тереза) 16.02.12 13:58 Сейчас в теме
Расчетные листки-хорошая вещь,частенько народ просит, а тут рассылкой-экономит время, особенно у кого штат большой.
20. Альберт (Alltruist) 106 16.02.12 14:36 Сейчас в теме
21. Лариса Гайнуллина (lira_nk) 16.02.12 14:47 Сейчас в теме
Полезная вещица,забираю :)
22. Александр (Gonza1978) 20.02.12 11:10 Сейчас в теме
Отличная вещь!!! Самому поставили задачу доработать программу, чтобы можно было рассылать расчетные листки сотрудникам. Подумал, может есть что-то уже готовое. И точно - есть!
Реализовано лучше не придумаешь! В список рассылки попадают только те, у которых заполнено поле E-mail. Тема письма формируется автоматически и сразу понятная пользователям.
В ЗУП под 1С8.2 великолепно работает после стандартной конвертации. Единственное, у меня ранее встроенная учетная запись была настроена без реальной настройки пользователя POP3, а при рассылке расчетных листков почему то стала ругаться, что нет такого пользователя. Ну это мелочи, да и ругается скорее всего сам стандартный модуль рассылки.
23. aa aa (festiv1) 07.03.12 19:21 Сейчас в теме
А можно отправить по e-mail altress@yandex.ru? не получается скачать
24. Ирина Борисычева (iran3) 05.04.12 13:12 Сейчас в теме
Пожалуйста, скиньте этот отчетик на irbor@mail.ru. Очень нужно и время не терпит. Заранее большое спасибо!
25. Сергей (necropunk) 05.06.12 13:09 Сейчас в теме
Жирный плюс. Хорошая реализация. Переписал под себя, все замечательно.
26. Павел (Pavel777777) 49 19.07.12 20:29 Сейчас в теме
27. Михаил Дементиенко (Mixailo333) 19.09.12 22:54 Сейчас в теме
Скажите, а как проверить корректность работы, если всем сотрудникам уже забит свой и-мейл? Не переделывать же вручную для каждого сотрудника на тестовый адрес...
28. Кирилл Раковский (RakovskiyK) 21.11.12 22:52 Сейчас в теме
великолепно! как раз то, что нужно. пробовал другие, но здесь есть выборочная рассылка. работает великолепно.
29. Дмитрий Жиляков (Zhilyakovdr) 76 11.03.13 17:47 Сейчас в теме
Отличная штука! Работает на Комплексной.
30. Nikita Baksheev (Baksheev-Nikita) 294 29.05.13 11:20 Сейчас в теме
Хорошая публикация. Большой плюс в том, что вызывается стандартный типовой отчет, а на его основе формируются письма. Таким образом обновления типовых конфигураций не влияют на работоспособность данной обработки.
31. Роман Верховых (Lo1jke) 03.08.13 16:47 Сейчас в теме
Изменил Вашу обработку и использую каждый месяц при рассылке расчеток. Спасибо большое за труды!
32. Людмила (Mila81) 33 04.12.13 15:34 Сейчас в теме
33. Сергей (sergio199) 15 21.07.14 08:24 Сейчас в теме
Интересная. Замечание хотелось бы добавить - желательно добавить проверку на наличие каталога и вообще поле для хранения файлов с расчетными листами вывести на форму. ну а так - респект за обработку!
34. Tala Strogaya (stroga) 73 29.07.16 16:31 Сейчас в теме
Обработка проработала несколько лет. Сейчас выдает ошибку:
Обработка.РасчетныеЛисткиОрганизацийПоПочте.МодульОбъекта(515)}: Значение, соответствующее ключу, не задано
Сотрудник = ДанныеРасшифровки.Элементы[ИдентификаторРасшифровки].ПолучитьПоля()[0].Значение;
Причем только в клиент-серверном варианте работы 1С (УПП). В файловом варианте БД, локально без ошибок.
35. Альберт (Alltruist) 106 29.07.16 20:24 Сейчас в теме
(34) stroga, а версия УПП какая?
36. Андрей Аввакумов (itriot11) 29.12.16 12:10 Сейчас в теме
(35) столкнулся с тем же, что и (34)

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

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

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

на это

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

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