|
&НаСервере
Функция ВыгрузитьДанные_вТЗ()
Запрос = Новый
Запрос;
Запрос.Текст
=
"ВЫБРАТЬ
РАЗЛИЧНЫЕ
| УКЕДС_Заявки.Фамилия
КАК ФИО,
| УКЕДС_Заявки.УКЖКХ_АдресАЗ.Владелец.ФИАС_КодЗдания
КАК КодФИАС,
| УКЕДС_Заявки.Телефоны
КАК Телефоны
|ИЗ
| Документ.УКЕДС_Заявки
КАК УКЕДС_Заявки
|ГДЕ
| УКЕДС_Заявки.Дата
>= &ДатаНачала
| И УКЕДС_Заявки.Дата
<= &ДатаОкончания
| И УКЕДС_Заявки.Телефоны
<> """"
| И УКЕДС_Заявки.УКЖКХ_АдресАЗ.Владелец.ФИАС_КодЗдания
<> """"
| И УКЕДС_Заявки.Фамилия
<> """"";
//Запрос.Параметры.Вставить("ДатаНачала",
НачалоГода(ТекущаяДата()));
//Запрос.Параметры.Вставить("ДатаНачала",
НачалоКвартала(ТекущаяДата()));
//Запрос.Параметры.Вставить("ДатаОкончания",
ТекущаяДата());
Запрос.Параметры.Вставить("ДатаНачала", ДобавитьМесяц(НачалоМесяца(ТекущаяДата()),
-1));
Запрос.Параметры.Вставить("ДатаОкончания", КонецМесяца(ДобавитьМесяц(НачалоМесяца(ТекущаяДата()), -1)));
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Если Выборка.Следующий() Тогда
Возврат Результат.Выгрузить();
Иначе
Возврат Неопределено;
КонецЕсли;
КонецФункции
&НаСервере
Функция ТабличныйДокументИзТаблицыЗначений(Знач ТЗ)
ТабДокумент
= Новый ТабличныйДокумент;
// Выводим заголовок
таблицы
КолонкаИндекс
= 0;
Пока КолонкаИндекс
< ТЗ.Колонки.Количество() Цикл
Колонка = ТЗ.Колонки[КолонкаИндекс];
ОбластьКолонки = ТабДокумент.Область(1,
КолонкаИндекс + 1, 1, КолонкаИндекс
+ 1);
Если ПустаяСтрока(Колонка.Заголовок)
Тогда
ОбластьКолонки.Текст = Колонка.Имя;
Иначе
ОбластьКолонки.Текст = Колонка.Заголовок;
КонецЕсли;
ОбластьКолонки.ШиринаКолонки = Колонка.Ширина;
КолонкаИндекс
= КолонкаИндекс + 1;
КонецЦикла;
// Выводим строки таблицы
СтрокаИндекс
= 0;
Пока СтрокаИндекс
< ТЗ.Количество() Цикл
Таблица_Строка
= ТЗ[СтрокаИндекс];
КолонкаИндекс
= 0;
Пока КолонкаИндекс < ТЗ.Колонки.Количество()
Цикл
Колонка = ТЗ.Колонки[КолонкаИндекс];
ТабДокумент.Область(СтрокаИндекс + 2, КолонкаИндекс
+ 1, СтрокаИндекс + 2, КолонкаИндекс
+ 1).Текст = Таблица_Строка[Колонка.Имя]; // + 2, т.к. в первой строке выведен
заголовок
КолонкаИндекс
= КолонкаИндекс + 1;
КонецЦикла;
СтрокаИндекс
= СтрокаИндекс + 1;
КонецЦикла;
Возврат ТабДокумент;
КонецФункции
&НаСервере
Процедура ОтправитьПочтовоеСообщение(Знач ФайлСТелефонами)
ПочтовыйПрофиль
= новый ИнтернетПочтовыйПрофиль;
ПочтовыйПрофиль.ВремяОжидания
= 300;
ПочтовыйПрофиль.Пользователь
= "obmen ";
//SMTP
ПочтовыйПрофиль.АдресСервераSMTP
= "mail.ru";
ПочтовыйПрофиль.ПортSMTP
= 587;
ПочтовыйПрофиль.ПользовательSMTP
= "obmen ";
ПочтовыйПрофиль.ПарольSMTP
= "123";
ПочтовыйПрофиль.АутентификацияSMTP
= СпособSMTPАутентификации.Login;
//IMAP
ПочтовыйПрофиль.АдресСервераIMAP
= "mail.ru";
ПочтовыйПрофиль.ПортIMAP
= 993;
ПочтовыйПрофиль.ПользовательIMAP
= "obmen ";
ПочтовыйПрофиль.ПарольIMAP
= "123";
Отправитель1 =
"obmen@gktower.ru";
Сообщение = Новый ИнтернетПочтовоеСообщение;
Сообщение.ИмяОтправителя
= Отправитель1;
Сообщение.Отправитель
= Отправитель1;
Сообщение.Тема
= "Список телефонов";
Сообщение.Получатели.Добавить("obmen@gktower.ru");
Сообщение.Тексты.Добавить("Список
телефонов");
Сообщение.Вложения.Добавить(ФайлСТелефонами, "Список телефонов");
Почта = Новый ИнтернетПочта;
Попытка
Почта.Подключиться(ПочтовыйПрофиль);
Почта.Послать(Сообщение);
Исключение
//Сообщить("Ошибка
...",СтатусСообщения.ОченьВажное);
//Сообщить(""+ОписаниеОшибки());
КонецПопытки;
Конецпроцедуры
&НаСервере
Процедура Отправить_НаСервере()
ТЗ = ВыгрузитьДанные_вТЗ();
Если ЗначениеЗаполнено(ТЗ) Тогда
//ТабДок = ТЗ_вТабДок(ТЗ);
ТабДок = ТабличныйДокументИзТаблицыЗначений(ТЗ);
ИмяФайла = ПолучитьИмяВременногоФайла("xlsx");
ТабДок.Записать(ИмяФайла,
ТипФайлаТабличногоДокумента.XLSX);
//Отправляем
файл
ОтправитьПочтовоеСообщение(ИмяФайла);
УдалитьФайлы(ИмяФайла);
КонецЕсли;
КонецПроцедуры
//////////////////////////////////////////////
Процедура ДляРегламентногоЗадания()
Экспорт
Отправить_НаСервере();
КонецПроцедуры
|