Доброго времени суток, уважаемые форумчане. Есть небольшой вопрос по запросам. Суть такова: есть запрос, получает данные из справочника, в этом справочнике есть табличные части в которых есть данные - путь к файлу. так вот если я вкладываю более одного файла то в результате выполнения запроса возникает интересная вещь - появляются две записи по одному справочнику но с разными вложениями - логически всё правильно. Но запрос служит для отправки данных по почте и если вложения два то формирует два разных письма. как от этого избавиться не расскажите?
т.е. получаю сейчас:
Строка_1 Поле_1 Вложение_1
Строка_1 Поле_1 Вложение_2
и как итог отправляется 2 письма,
а нужно чтоб одно письмо отправлялось Строка_1 Поле_1 Вложение_1 + Вложение_2 Кому интересно прилогаю запрос и дальнейшие действия с ним
Код 1C v 8.2 УП Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ОбщийЗапрос.Подразделение КАК Подразделение,
| ОбщийЗапрос.АвторСообщения,
| ОбщийЗапрос.ТемаСообщения,
| ОбщийЗапрос.СообщениеОтправлено,
| ОбщийЗапрос.СрокДействия,
| ОбщийЗапрос.СрокДействияОкончания,
| ОбщийЗапрос.ДействуетВсегда,
| ОбщийЗапрос.Ссылка,
| ОбщийЗапрос.Представление,
| ОбщийЗапрос.ДатаСообщения,
| ОбщийЗапрос.АдресФайла
|ИЗ
| (ВЫБРАТЬ
| СообщенияТочкамПодразделения.Подразделение КАК Подразделение,
| СообщенияТочкам.АвторСообщения КАК АвторСообщения,
| СообщенияТочкам.ТемаСообщения КАК ТемаСообщения,
| СообщенияТочкам.СообщениеОтправлено КАК СообщениеОтправлено,
| СообщенияТочкам.СрокДействия КАК СрокДействия,
| СообщенияТочкам.СрокДействияОкончания КАК СрокДействияОкончания,
| СообщенияТочкам.ДействуетВсегда КАК ДействуетВсегда,
| СообщенияТочкам.Ссылка КАК Ссылка,
| СообщенияТочкам.Представление КАК Представление,
| СообщенияТочкам.ДатаСообщения КАК ДатаСообщения,
| СообщенияТочкамФайлыСообщения.АдресФайла КАК АдресФайла
| ИЗ
| Справочник.СообщенияТочкам КАК СообщенияТочкам
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СообщенияТочкам.Подразделения КАК СообщенияТочкамПодразделения
| ПО СообщенияТочкам.Ссылка = СообщенияТочкамПодразделения.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СообщенияТочкам.ФайлыСообщения КАК СообщенияТочкамФайлыСообщения
| ПО (СообщенияТочкамФайлыСообщения.Ссылка = СообщенияТочкам.Ссылка)
| ГДЕ
| СообщенияТочкам.ВариантОтправки = ЗНАЧЕНИЕ(Перечисление.ВариантыВыбораДляОтправки.ВсемПодразделениям)
| И СообщенияТочкамПодразделения.Ссылка.ПометкаУдаления = ЛОЖЬ
|
| ОБЪЕДИНИТЬ
|
| ВЫБРАТЬ
| Подразделения.Ссылка,
| СообщенияТочкамПодразделенияГорода.Ссылка.АвторСообщения,
| СообщенияТочкамПодразделенияГорода.Ссылка.ТемаСообщения,
| СообщенияТочкамПодразделенияГорода.Ссылка.СообщениеОтправлено,
| СообщенияТочкамПодразделенияГорода.Ссылка.СрокДействия,
| СообщенияТочкамПодразделенияГорода.Ссылка.СрокДействияОкончания,
| СообщенияТочкамПодразделенияГорода.Ссылка.ДействуетВсегда,
| СообщенияТочкамПодразделенияГорода.Ссылка.Ссылка,
| СообщенияТочкамПодразделенияГорода.Ссылка.Представление,
| СообщенияТочкамПодразделенияГорода.Ссылка.ДатаСообщения,
| СообщенияТочкамФайлыСообщения.АдресФайла
| ИЗ
| Справочник.СообщенияТочкам.ПодразделенияГорода КАК СообщенияТочкамПодразделенияГорода
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Подразделения КАК Подразделения
| ПО (Подразделения.Город = СообщенияТочкамПодразделенияГорода.Город)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СообщенияТочкам.ПодразделенияТорговыеМарки КАК СообщенияТочкамПодразделенияТорговыеМарки
| ПО СообщенияТочкамПодразделенияГорода.Ссылка.Ссылка = СообщенияТочкамПодразделенияТорговыеМарки.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СообщенияТочкам.ФайлыСообщения КАК СообщенияТочкамФайлыСообщения
| ПО СообщенияТочкамПодразделенияГорода.Ссылка = СообщенияТочкамФайлыСообщения.Ссылка
| ГДЕ
| СообщенияТочкамПодразделенияГорода.Ссылка.ВариантОтправки = ЗНАЧЕНИЕ(Перечисление.ВариантыВыбораДляОтправки.ГородаИТорговыеМарки)
| И СообщенияТочкамПодразделенияТорговыеМарки.Брэнд ЕСТЬ NULL
| И СообщенияТочкамПодразделенияГорода.Ссылка.ПометкаУдаления = ЛОЖЬ
|
| ОБЪЕДИНИТЬ
|
| ВЫБРАТЬ
| Подразделения.Ссылка,
| СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.АвторСообщения,
| СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.ТемаСообщения,
| СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.СообщениеОтправлено,
| СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.СрокДействия,
| СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.СрокДействияОкончания,
| СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.ДействуетВсегда,
| СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.Ссылка,
| СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.Представление,
| СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.ДатаСообщения,
| СообщенияТочкамФайлыСообщения.АдресФайла
| ИЗ
| Справочник.СообщенияТочкам.ПодразделенияТорговыеМарки КАК СообщенияТочкамПодразделенияТорговыеМарки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СообщенияТочкам.ПодразделенияГорода КАК СообщенияТочкамПодразделенияГорода
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СообщенияТочкам.ФайлыСообщения КАК СообщенияТочкамФайлыСообщения
| ПО СообщенияТочкамПодразделенияГорода.Ссылка.Ссылка = СообщенияТочкамФайлыСообщения.Ссылка.Ссылка
| ПО СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.Ссылка = СообщенияТочкамПодразделенияГорода.Ссылка.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Подразделения КАК Подразделения
| ПО (Подразделения.ТорговаяМарка = СообщенияТочкамПодразделенияТорговыеМарки.Брэнд.Ссылка)
| ГДЕ
| СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.ВариантОтправки = ЗНАЧЕНИЕ(Перечисление.вариантыВыбораДляОтправки.ГородаИТорговыеМарки)
| И СообщенияТочкамПодразделенияГорода.Город ЕСТЬ NULL
| И СообщенияТочкамПодразделенияГорода.Ссылка.ПометкаУдаления = ЛОЖЬ
|
| ОБЪЕДИНИТЬ
|
| ВЫБРАТЬ РАЗЛИЧНЫЕ
| Подразделения.Ссылка,
| СообщенияТочкамПодразделенияГорода.Ссылка.АвторСообщения,
| СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.ТемаСообщения,
| СообщенияТочкамПодразделенияГорода.Ссылка.СообщениеОтправлено,
| СообщенияТочкамПодразделенияГорода.Ссылка.СрокДействия,
| СообщенияТочкамПодразделенияГорода.Ссылка.СрокДействияОкончания,
| СообщенияТочкамПодразделенияГорода.Ссылка.ДействуетВсегда,
| СообщенияТочкамПодразделенияГорода.Ссылка.Ссылка,
| СообщенияТочкамПодразделенияГорода.Ссылка.Представление,
| СообщенияТочкамПодразделенияГорода.Ссылка.ДатаСообщения,
| СообщенияТочкамФайлыСообщения.АдресФайла
| ИЗ
| Справочник.СообщенияТочкам.ПодразделенияГорода КАК СообщенияТочкамПодразделенияГорода
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СообщенияТочкам.ПодразделенияТорговыеМарки КАК СообщенияТочкамПодразделенияТорговыеМарки
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Подразделения КАК Подразделения
| ПО (Подразделения.ТорговаяМарка = СообщенияТочкамПодразделенияТорговыеМарки.Брэнд.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СообщенияТочкам.ФайлыСообщения КАК СообщенияТочкамФайлыСообщения
| ПО СообщенияТочкамПодразделенияТорговыеМарки.Ссылка = СообщенияТочкамФайлыСообщения.Ссылка
| ПО (СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.Ссылка = СообщенияТочкамПодразделенияГорода.Ссылка.Ссылка)
| ГДЕ
| СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.ВариантОтправки = ЗНАЧЕНИЕ(Перечисление.вариантыВыбораДляОтправки.ГородаИТорговыеМарки)
| И НЕ СообщенияТочкамПодразделенияГорода.Город ЕСТЬ NULL
| И НЕ СообщенияТочкамПодразделенияГорода.Ссылка ЕСТЬ NULL
| И Подразделения.ТорговаяМарка = СообщенияТочкамПодразделенияТорговыеМарки.Брэнд
| И Подразделения.Город = СообщенияТочкамПодразделенияГорода.Город
| И СообщенияТочкамПодразделенияТорговыеМарки.Ссылка.ПометкаУдаления = ЛОЖЬ
|
| ОБЪЕДИНИТЬ
|
| ВЫБРАТЬ
| СообщенияТочкамПодразделения.Подразделение.Ссылка,
| СообщенияТочкам.АвторСообщения,
| СообщенияТочкам.ТемаСообщения,
| СообщенияТочкам.СообщениеОтправлено,
| СообщенияТочкам.СрокДействия,
| СообщенияТочкам.СрокДействияОкончания,
| СообщенияТочкам.ДействуетВсегда,
| СообщенияТочкам.Ссылка,
| СообщенияТочкам.Представление,
| СообщенияТочкам.ДатаСообщения,
| СообщенияТочкамФайлыСообщения.АдресФайла
| ИЗ
| Справочник.СообщенияТочкам КАК СообщенияТочкам
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СообщенияТочкам.Подразделения КАК СообщенияТочкамПодразделения
| ПО (СообщенияТочкамПодразделения.Ссылка = СообщенияТочкам.Ссылка)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СообщенияТочкам.ФайлыСообщения КАК СообщенияТочкамФайлыСообщения
| ПО (СообщенияТочкамФайлыСообщения.Ссылка = СообщенияТочкам.Ссылка)
| ГДЕ
| СообщенияТочкам.ВариантОтправки = ЗНАЧЕНИЕ(Перечисление.ВариантыВыбораДляОтправки.СписокМагазинов)
| И СообщенияТочкам.ПометкаУдаления = ЛОЖЬ) КАК ОбщийЗапрос
|ГДЕ
| ОбщийЗапрос.ДатаСообщения = &ДатаСообщения
| И ОбщийЗапрос.Подразделение = &Подразделение
|ИТОГИ ПО
| Подразделение";
Запрос.УстановитьПараметр("ДатаСообщения", ДатаНачала1);
Запрос.УстановитьПараметр("Подразделение", Подразделение.Ссылка);
СпособВыборки = ОбходРезультатаЗапроса.ПоГруппировкам;
Результат = Запрос.Выполнить();
Профиль = Новый ИнтернетПочтовыйПрофиль;
Профиль.АдресСервераSMTP = "smtp.mail.ru";
Профиль.АдресСервераPOP3 = "pop.mail.ru";
Профиль.ПортPOP3 = "110";
Профиль.ПортSMTP = "25";
Профиль.Пользователь = "testusermaster@inbox.ru";
Профиль.Пароль = "******";
Профиль.ПользовательSMTP = "testusermaster@inbox.ru";
Профиль.ПарольSMTP = "******";
Профиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;
//// Выборка первая
ВыборкаПервогоУровня = Результат.Выбрать(СпособВыборки);
Пока ВыборкаПервогоУровня.Следующий() Цикл
Почта = Новый ИнтернетПочта;
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Получатели.Добавить(Подразделение.ПрофильИнтернет.ИмяПользователя);
Письмо.Отправитель = "testusermaster@inbox.ru";
Письмо.ИмяОтправителя = "Менеджер рассылки приказов";
Письмо.Тема = "Вечерняя рассылка приказов";
//// Выборка вторая
ВыборкаВторогоУровня = ВыборкаПервогоУровня.Выбрать(СпособВыборки);
Пока ВыборкаВторогоУровня.Следующий() Цикл
Тема = ВыборкаВторогоУровня.ТемаСообщения;
Разделитель = Символы.ПС + "=========================================================================================================================================================" + Символы.ПС;
РазделительТемы = Символы.ПС + Символы.ПС;
ВыбФайл = Новый Файл(ВыборкаВторогоУровня.АдресФайла);
Файлик = ВыбФайл.ИмяБезРасширения;
РазделительВложения = Символы.ПС + Символы.ПС;
Текст = Письмо.Тексты.Добавить(Тема + РазделительТемы + ВыборкаВторогоУровня.Ссылка.ТекстСообщения + РазделительВложения+ "Файл вложения к письму: "+ Файлик + Символы.ПС + Разделитель);
Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
Если ВыборкаВторогоУровня.АдресФайла <> NULL Тогда
Письмо.Вложения.Добавить(ВыборкаВторогоУровня.АдресФайла);
КонецЕсли;
КонецЦикла;
//Письмо.Тема = Тема;
Попытка
Почта.Подключиться(Профиль);
Сообщить("Подключение к почтовуму серверу прошло успешно");
Почта.Послать(Письмо);
Сообщить("Письмо отправлено");
Исключение
Сообщить("Не удалось подключиться к серверу");
Сообщить(ОписаниеОшибки());
КонецПопытки;
Почта.Отключиться();
Сообщить("Соединение с сервером электронной почты успешно разорвано");
КонецЦикла;
Изменено 14.04.13 15:38:03