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