Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:41

Email рассылка отчета.

Автор Prilforreal, 04 сен 2017, 10:56

0 Пользователей и 1 гость просматривают эту тему.

Prilforreal

Доброго времени суток всем! Самописная конфигурация 1с 8.3, реализована отправка отчета одному контрагенту, тому, на которого отчет сформирован, по нажатию кнопки на форме отчета, нужно сделать так, чтобы отчет отправлялся всем контрагентам раз в месяц, но я затрудняюсь с кодом, будьте добры, подскажите как это сделать?

oleg-x

Цитата: Prilforreal от 04 сен 2017, 10:56
Доброго времени суток всем! Самописная конфигурация 1с 8.3, реализована отправка отчета одному контрагенту, тому, на которого отчет сформирован, по нажатию кнопки на форме отчета, нужно сделать так, чтобы отчет отправлялся всем контрагентам раз в месяц, но я затрудняюсь с кодом, будьте добры, подскажите как это сделать?
Сделайте список контрагентов для рассылки.
Сформируйте отчет программно для каждого контрагента из списка.
Используйте отправку отчета, которая уже написана.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Prilforreal

Цитата: oleg-x от 04 сен 2017, 11:14Сделайте список контрагентов для рассылки.
Сформируйте отчет программно для каждого контрагента из списка.

oleg-x, Возможно ли не формировать для каждого из списка, а пробегаться по справочнику? Ведь справочник пополняется.

oleg-x

Цитата: Prilforreal от 04 сен 2017, 11:18
Цитата: oleg-x от 04 сен 2017, 11:14Сделайте список контрагентов для рассылки.
Сформируйте отчет программно для каждого контрагента из списка.

oleg-x, Возможно ли не формировать для каждого из списка, а пробегаться по справочнику? Ведь справочник пополняется.
Возможно, но если с контрагентов вы перестанете работать, то отчет ему будет все равно отправлен, но пустой.
Можно конечно сделать проверку, если отчет пустой, тогда не отправлять.
Но возможно надо отправлять не всем контрагентам. Я бы предложил все таки сделать еще какой то признак, что бы потом не пришлось доделывать, пусть пользователи решаю, надо ли отправлять отчет, по крайне мере сделать так чтобы была возможность не отправлять.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Prilforreal

oleg-x,
Цитата: oleg-x от 04 сен 2017, 11:22Возможно, но если с контрагентов вы перестанете работать, то отчет ему будет все равно отправлен, но пустой.
Можно конечно сделать проверку, если отчет пустой, тогда не отправлять.
Но возможно надо отправлять не всем контрагентам. Я бы предложил все таки сделать еще какой то признак, что бы потом не пришлось доделывать, пусть пользователи решаю, надо ли отправлять отчет, по крайне мере сделать так чтобы была возможность не отправлять.

oleg-x, Согласен с вами, условие будет, если в течение месяца у контрагента были сделки, тогда отправлять, но это уже второстепенное, затруднение вызывает рассылка массовая.

oleg-x

Цитироватьзатруднение вызывает рассылка массовая.
У вас уже есть написанная процедура для отправки отчета, надо её использовать, посмотреть что там за параметры и вызвать для каждого контрагента.

Пока Выборка.ДетальныеЗаписи.Следующий() Цикл
    НаписаннаяКемТоПроцедураОтправкиОтчета(передать все необходимые параметры);
КонецЦикла;
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Prilforreal

Цитата: oleg-x от 04 сен 2017, 11:46Пока Выборка.ДетальныеЗаписи.Следующий() Цикл
    НаписаннаяКемТоПроцедураОтправкиОтчета(передать все необходимые параметры);
КонецЦикла;

oleg-x, Нашел процедуру отправки писем, но она не функционирует, при ее вызове лишь всплвыает в системных сообщениях уведомление :"Взаморасчеты по дилеру !РЕЗЕРВНЫЙ ФОНД за период 04.08.2017 12:10:02 - 04.09.2017 12:10:02. Ваш долг -9999999,99 руб."

Листинг процедуры:

Перем Запрос, ТекстЗапроса;
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
             | РасчетыОстатки.Контрагент,
             | РасчетыОстатки.Контрагент.ЭлПочта,
             | СУММА(РасчетыОстатки.БалансОстаток) КАК БалансКонОст
             |ИЗ
             | РегистрНакопления.Расчеты.Остатки(
             | &НаДату,
             | Контрагент.ЭлПочта <> """"
             | И Контрагент.Наименование = ""!РЕЗЕРВНЫЙ ФОНД"") КАК РасчетыОстатки
             |
             |СГРУППИРОВАТЬ ПО
             | РасчетыОстатки.Контрагент,
             | РасчетыОстатки.Контрагент.ЭлПочта";
Запрос.УстановитьПараметр("НаДату",ТекущаяДата());
Рез=Запрос.Выполнить().Выбрать();
    ВыбНачПериода=ДобавитьМесяц(ТекущаяДата(),-1);
ВыбКонПериода=ТекущаяДата();
Пока Рез.Следующий() Цикл
// // Заполнение полей Контрагент 
// если не((Пустоезначение(Запрос.БалансПриход)=1)и(Пустоезначение(Запрос.БалансРасход)=1)) тогда

ВыбДилер=Рез.Контрагент;
ТемаОтправки="Взаморасчеты по дилеру "+СокрЛП(ВыбДилер.Наименование)+" за период "+ПредставлениеПериода(ВыбНачПериода,ВыбКонПериода,"L=ru_RU")+". ";
если Рез.БалансКонОст<0 тогда
        ТемаОтправки=ТемаОтправки+"Ваш долг "+Рез.БалансКонОст+ " руб.";
иначе
ТемаОтправки=ТемаОтправки+"Ваш баланс "+Рез.БалансКонОст+ " руб.";
конецесли;
Сформировать(0);
    глОтправитьОтчетПоПочте(Таб,ВыбДилер,ТемаОтправки,0,"file:G:\Bases2\Balance.htm",2);
Сообщить(ТемаОтправки);
// конецесли;
КонецЦикла;

oleg-x

Вам нужна вот эта процедура:
глОтправитьОтчетПоПочте(Таб,ВыбДилер,ТемаОтправки,0,"file:G:\Bases2\Balance.htm",2);
Она и отправляет отчет, только в нее нужно передать ваши параметры.
А вы пробовали сформировать отчет по всем контрагентам и отправить, вроде процедура написана так, что отправит всем контрагентам из отчета.
Добавлено: 04 сен 2017, 13:47


Цитироватьoleg-x, Нашел процедуру отправки писем, но она не функционирует, при ее вызове лишь всплвыает в системных сообщениях уведомление :"Взаморасчеты по дилеру !РЕЗЕРВНЫЙ ФОНД за период 04.08.2017 12:10:02 - 04.09.2017 12:10:02. Ваш долг -9999999,99 руб."
Это сообщение выдает вот этот кусок кода:
     если Рез.БалансКонОст<0 тогда
                ТемаОтправки=ТемаОтправки+"Ваш долг "+Рез.БалансКонОст+ " руб.";   //формируется сообщение
            иначе
                ТемаОтправки=ТемаОтправки+"Ваш баланс "+Рез.БалансКонОст+ " руб."; //формируется сообщение
            конецесли;
            Сформировать(0);       
            глОтправитьОтчетПоПочте(Таб,ВыбДилер,ТемаОтправки,0,"file:G:\Bases2\Balance.htm",2);  //отправка, возможно не всегда отправляет, надо смотреть условия.
            Сообщить(ТемаОтправки); //выводит то самое сообщение, которое вы видели.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Prilforreal

oleg-x,
Цитата: oleg-x от 04 сен 2017, 11:46У вас уже есть написанная процедура для отправки отчета, надо её использовать, посмотреть что там за параметры и вызвать для каждого контрагента.
Вроде разобрался, рассылка работает но только для Контрагента указанного в тексте запроса, а как мне здесь всех контрагентов привлечь, и чтобы для каждого отдельный отчет формировался?


Добавлено: 04 сен 2017, 14:02


oleg-x,
Цитата: oleg-x от 04 сен 2017, 13:42то сообщение выдает вот этот кусок кода:
И отправляется письмо только контрагенту Резервный Фонд, поменял на себя, мне отправляет, может действительно здесь всех перечислить и условие задать, только каким образом их здесь перечислить я не пойму, может сможете подсказать?


oleg-x

В запросе должен быть не один контрагент, а все (за исключением, по которым не надо отправлять)
Вот это условие в запросе поменяйте:
И Контрагент.Наименование = ""!РЕЗЕРВНЫЙ ФОНД"") КАК РасчетыОстатки
Оно как раз и отбирает только контрагента с наименованием резервный фонд
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Похожие темы (5)

Рейтинг@Mail.ru

Поиск