запрос, таблица значений

1. user921876 27.03.19 12:04 Сейчас в теме
доброго времени суток.
Написал процедуру, которая на почту присылает список необходимых заказов клиентов. Всё бы ничего, но отправляет в 1 письме 1 заказ, т.е. если нужно отправить на почту 4 заказа, отправит 4 письма. Не получается додумать, как объединить письма по почте. Код процедуры:
Запрос = Новый Запрос("ВЫБРАТЬ
| ЗаказКлиента.Ссылка КАК Ссылка,
| ЗаказКлиента.Дата КАК Дата,
| ЗаказКлиента.СуммаДокумента КАК СуммаДокумента,
| ЗаказКлиента.Менеджер КАК Менеджер,
| ВложенныйЗапрос.Тип КАК Тип,
| ВложенныйЗапрос.АдресЭП КАК АдресЭП
|ИЗ
| Документ.ЗаказКлиента КАК ЗаказКлиента
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| ПользователиКонтактнаяИнформация.Ссылка КАК Ссылка,
| ПользователиКонтактнаяИнформация.Тип КАК Тип,
| ПользователиКонтактнаяИнформация.АдресЭП КАК АдресЭП
| ИЗ
| Справочник.Пользователи.КонтактнаяИнформация КАК ПользователиКонтактнаяИнформация
| ГДЕ
| ПользователиКонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыКонтактнойИнформации.АдресЭлектроннойПочты)) КАК ВложенныйЗапрос
| ПО ЗаказКлиента.Менеджер = ВложенныйЗапрос.Ссылка
|ГДЕ
| ЗаказКлиента.СуммаДокумента >= 100000
| И НАЧАЛОПЕРИОДА(ДОБАВИТЬКДАТЕ(ЗаказКлиента.Дата, ДЕНЬ, 3), ДЕНЬ) = НАЧАЛОПЕРИОДА(&Дата, ДЕНЬ)
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.АдресЭП,
| ЗаказКлиента.Ссылка,
| ЗаказКлиента.Дата,
| ЗаказКлиента.СуммаДокумента,
| ЗаказКлиента.Менеджер,
| ВложенныйЗапрос.Тип");

запрос.УстановитьПараметр("Дата",ТекущаяДата());
результат = запрос.Выполнить().выгрузить();

для каждого манагер из результат цикл
Получатель = манагер.АдресЭП;
Тема = "Список потенциальных крупных сделок";
Текст = "Данные счета были выставлены 3 дня назад:" + Символы.ПС + манагер.ссылка + " на сумму " + манагер.СуммаДокумента + " руб.;" + Символы.ПС;


ОтправкаПисьма(Получатель,Текст,Тема);


конецЦикла;

Заранее спасибо откликнувшимся
По теме из базы знаний
Найденные решения
14. bugagashenka 203 27.03.19 13:33 Сейчас в теме
(13)
Результат = Запрос.Выполнить(); 
ВыборкаЭП = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
Пока выборкаЭП.Следующий() Цикл 
Почта = ВыборкаЭП.АдресЭП;
ВыборкаЗаказы = ВыборкаЭП.Выбрать(); 
user921876; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. platonov.e 160 27.03.19 12:11 Сейчас в теме
ну так вы на каждом шаге уикла отправляете письмо.
Сперва в цикле сгруппируйте по манагерам и соберите для них общий текст, а потом уже вызывайте процедуру отправки письма.
lefthander; +1 1 Ответить
6. bugagashenka 203 27.03.19 12:20 Сейчас в теме
(2)не надо так делать. Для таких вещей есть дерево значений и обход по группировкам
3. lefthander 27.03.19 12:13 Сейчас в теме
Сделайте таблицу манагеров отдельную, сверните ее что бы были манагеры в единственном числе, Сделайте цикл по манагерам, а из результата выбирайте все строки с отбором по манагеру и эти данные отсылайте тогда писе будет столько сколько манагеров. А сейчас у вас на каждый заказ свое пписьмо.
4. Timur.V 81 27.03.19 12:16 Сейчас в теме
Как нужно группировать заказы, по дате?
Добавь в запрос группировку по дате.

ВыборкаДата  = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Дата");
5. user921876 27.03.19 12:19 Сейчас в теме
(4)
Дата = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГрупп


по почте, чтобы все заказы ушли 1 письмом на указанную почту.
7. bugagashenka 203 27.03.19 12:20 Сейчас в теме
8. bugagashenka 203 27.03.19 12:21 Сейчас в теме
И далее
ВыборкаЭП = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаЭП.Следующий() Цикл

ВыборкаЗаказ = ВыборкаЭП.Выбрать();

Пока ВыборкаЗаказ.Следующи() Цикл
9. user921876 27.03.19 12:35 Сейчас в теме
(8)
Результат.Выбрать


а разве не нужно сделать типо того:
выборкаЭП = результат.ВыгрузитьКолонку("ЭП");
и дальше по этой колонке отобрать по различным ЭП
10. bugagashenka 203 27.03.19 12:39 Сейчас в теме
(9)не надо вообще таблицы значений. Используйте Выбрать и обход в цикле.
13. user921876 27.03.19 13:31 Сейчас в теме
(10) как то так это выглядит?
результат = запрос.Выполнить().выбрать();
выборкаЭП = результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ЭП");
пока выборкаЭП.Следующий() цикл
выборкаЗаказы = выборкаЭП.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Ссылка");
пока выборкаЗаказы.Следующий()цикл
Получатель = манагер.АдресЭП;
Тема = "Список потенциальных крупных сделок";
Текст = "Данные счета были выставлены 3 дня назад:" + Символы.ПС + манагер.ссылка + " на сумму " + манагер.СуммаДокумента + " руб.;" + Символы.ПС;


ОтправкаПисьма(Получатель,Текст,Тема);


конецЦикла;
14. bugagashenka 203 27.03.19 13:33 Сейчас в теме
(13)
Результат = Запрос.Выполнить(); 
ВыборкаЭП = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); 
Пока выборкаЭП.Следующий() Цикл 
Почта = ВыборкаЭП.АдресЭП;
ВыборкаЗаказы = ВыборкаЭП.Выбрать(); 
user921876; +1 Ответить
11. bugagashenka 203 27.03.19 12:40 Сейчас в теме
12. user921876 27.03.19 12:41 Сейчас в теме
(11)
спасибо,сейчас посмотрю.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот