helpf.pro
Регистрация

v8.2 УП: Подскажите с выборкой пожалуйста (прошу помощи очень)

Persempre
13.04.2013 18:40Прочитано: 1404
Доброго времени суток, уважаемые форумчане. Есть небольшой вопрос по запросам. Суть такова: есть запрос, получает данные из справочника, в этом справочнике есть табличные части в которых есть данные - путь к файлу. так вот если я вкладываю более одного файла то в результате выполнения запроса возникает интересная вещь - появляются две записи по одному справочнику но с разными вложениями - логически всё правильно. Но запрос служит для отправки данных по почте и если вложения два то формирует два разных письма. как от этого избавиться не расскажите?
т.е. получаю сейчас:
Строка_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
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
13.04.2013 20:10Ответ № 1
(0) Persempre, убрать вообще соединение с файлами и при отправке письма программно проверять - есть файлы или нет
Persempre
13.04.2013 22:55Ответ № 2
я новичек не подскажите как это делать?
E_Migachev
14.04.2013 15:45Ответ № 3
(2) Persempre, оххх, в таком случае тебе будет сложно это сделать *09

но можешь попробовать:
1. в запросе удали все соединения с файлами
2. далее в коде где Выборка вторая тебе нужно как-то выбрать файлы и приложить их к письму.

PS так по коду и без доступа к безе разобраться очень сложно )
Persempre
14.04.2013 16:13Ответ № 4
Код 1C v 8.2 УП
 					Для Каждого Стр Из ВыборкаВторогоУровня.Ссылка.АдресФайла Цикл
Письмо.Вложения.Добавить(Стр);
КонецЦикла;


вот так если то задваивает всё (((
E_Migachev
15.04.2013 03:41Ответ № 5
(4) Persempre, тебе надо вообще закоментировать ВыборкаВторогоУровня
и вкладывать файлы при первом проходе выборки
Mokey
15.04.2013 11:07Ответ № 6
Формирование письма должно происходить в ВыборкаПервогоУровня, при обходе второго уровня просто создать вложения к уже созданному письму.
Подсказка: Щелникни по Имени пользователя напротив ответа, и тем самым покажешь, что сообщение адресовано ему.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.