Имя: Пароль:
1C
1С v8
Рассылка отчета о балансе/долге контрагентам
0 prilforreal
 
04.09.17
11:05
Доброго дня всем! Помогите разобраться пожалуйста, есть процедура для рассылки писем всем контрагентам, но не работает, только вылетает сообщение о балансе одного контрагента в служебных сообщениях, а письма не разлетаются.

Процедура ОтправитьПисьма() Экспорт
    Перем Запрос, ТекстЗапроса;
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    РасчетыОстатки.Контрагент,
                 |    РасчетыОстатки.Контрагент.ЭлПочта,
                 |    СУММА(РасчетыОстатки.БалансОстаток) КАК БалансКонОст
                 |ИЗ
                 |    РегистрНакопления.Расчеты.Остатки(
                 |            &НаДату,
                 |            Контрагент.ЭлПочта <> """"
                 |                И Контрагент.Наименование = ""!РЕЗЕРВНЫЙ ФОНД"") КАК РасчетыОстатки
                 |
                 |СГРУППИРОВАТЬ ПО
                 |    РасчетыОстатки.Контрагент,
                 |    РасчетыОстатки.Контрагент.ЭлПочта";
    Запрос.УстановитьПараметр("НаДату",ТекущаяДата());
    Рез=Запрос.Выполнить().Выбрать();
    ВыбНачПериода=ДобавитьМесяц(ТекущаяДата(),-1);
    ВыбКонПериода=ТекущаяДата();
    Пока Рез.Следующий() Цикл
//        // Заполнение полей Контрагент  
//        если не((Пустоезначение(Запрос.БалансПриход)=1)и(Пустоезначение(Запрос.БалансРасход)=1)) тогда
        
            ВыбДилер=Рез.Контрагент;
            ТемаОтправки="Взаморасчеты по дилеру "+СокрЛП(ВыбДилер.Наименование)+" за период "+ПредставлениеПериода(ВыбНачПериода,ВыбКонПериода,"L=ru_RU")+". ";
            если Рез.БалансКонОст<0 тогда
                ТемаОтправки=ТемаОтправки+"Ваш долг "+Рез.БалансКонОст+ " руб.";
            иначе
                ТемаОтправки=ТемаОтправки+"Ваш баланс "+Рез.БалансКонОст+ " руб.";
            конецесли;
            Сформировать(0);        
            глОтправитьОтчетПоПочте(Таб,ВыбДилер,ТемаОтправки,0,"file:G:\Bases2\Balance.htm",2);
            Сообщить(ТемаОтправки);
//        конецесли;
    КонецЦикла;
1 1dvd
 
04.09.17
11:06
пригласите невражеского программиста
2 prilforreal
 
04.09.17
11:09
(1) Я и есть невражеский программист, только кометенции пока не хватает, потому я здесь
3 1dvd
 
04.09.17
11:10
(2) ох....

ну, смотри тогда процедуру глОтправитьОтчетПоПочте
4 DrShad
 
04.09.17
11:11
пусть сначала ЖР глянет
5 prilforreal
 
04.09.17
11:27
(3) Процедуру эту видел, она работает, думаю может с самого начала процедуру рассылки написать, но не понимаю, как это сделать программно.
6 prilforreal
 
04.09.17
13:54
Вроде разобрался, подскажите будьте добры, как в запросе либо перечислить всех контрагентов, либо как заставить запрос по каждому пробежаться, перечислять сам понимаю метод так себе...

Текст Запроса:

|    РасчетыОстатки.Контрагент,
                 |    РасчетыОстатки.Контрагент.ЭлПочта,
                 |    СУММА(РасчетыОстатки.БалансОстаток) КАК БалансКонОст
                 |ИЗ
                 |    РегистрНакопления.Расчеты.Остатки(
                 |            &НаДату,
                 |            Контрагент.ЭлПочта <> """"
                 |                И Контрагент.Наименование = ""Привалов И. С."") КАК РасчетыОстатки
                 |
                 |СГРУППИРОВАТЬ ПО
                 |    РасчетыОстатки.Контрагент,
                 |    РасчетыОстатки.Контрагент.ЭлПочта";
7 prilforreal
 
04.09.17
16:38
Разобрался, поправил искомый текст и все заработало)
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.