Имя: Пароль:
1C
1С v8
Сформировать универсальный отчет, не получая форму
, , ,
0 LehhaK
 
09.04.13
09:09
1. Универсальный отчет forever 33% (1)
2. Универсальный отчет уныл 33% (1)
3. КГ/АМ 33% (1)
Всего мнений: 3

Щас вот озадачился проблемой формирования универсального отчета на стороне сервера(в регламентном задании). Суть - хочу слать письма добрым людям по вечерам. Отправлять научился, нормуль все уходит, когда запускаю обработку под юзером. На сервере ругается на "ПолучитьФорму", ибо получает только на клиенте. И я задумался. Крепко так... даже ветку на мисте нашел: v8: Регламентные задания (выполнение отчета) Правда, там ТСу так и не смогли ответить. Вот мне тоже интересно как сформировать универсальный отчет не получая форму. Мож знает кто?
Мой код, кому интересно:
Процедура СформироватьИОтправитьОтчет() Экспорт
   
   Отчет = Отчеты.Продажи.Создать();
   Форма = Отчет.ПолучитьФорму("Форма");
   Отчет.УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Очистить();
   Отчет.УниверсальныйОтчет.ПостроительОтчета.ИзмеренияКолонки.Очистить();
   Отчет.УниверсальныйОтчет.ПостроительОтчета.ВыбранныеПоля.Очистить();
   Отчет.УниверсальныйОтчет.ПостроительОтчета.Порядок.Очистить();
   
   
   Отчет.УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Подразделение");
   Отчет.УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура");
   Отчет.УниверсальныйОтчет.ОтрицательноеКрасным = Истина;
   Отчет.УниверсальныйОтчет.ДатаНач = НачалоДня(ТекущаяДата());
   Отчет.УниверсальныйОтчет.ДатаКон = ТекущаяДата();
   ТабДок = Форма.ЭлементыФормы.ПолеТабличногоДокументаРезультат;
   Отчет.СформироватьОтчет(ТабДок);
   Получатель = "ололо";
   
   Отчет2 = Отчеты.ВаловаяПрибыль.Создать();
   Форма2 = Отчет2.ПолучитьФорму("Форма");
   
   Отчет2.УниверсальныйОтчет.ПостроительОтчета.ИзмеренияСтроки.Очистить();
   Отчет2.УниверсальныйОтчет.ПостроительОтчета.ИзмеренияКолонки.Очистить();
   Отчет2.УниверсальныйОтчет.ПостроительОтчета.ВыбранныеПоля.Очистить();
   Отчет2.УниверсальныйОтчет.ПостроительОтчета.Порядок.Очистить();

   Отчет2.УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Подразделение");
   Отчет2.УниверсальныйОтчет.ДобавитьИзмерениеСтроки("Номенклатура");
   Отчет2.УниверсальныйОтчет.ОтрицательноеКрасным = Истина;
   Отчет2.УниверсальныйОтчет.ДатаНач = НачалоДня(ТекущаяДата());
   Отчет2.УниверсальныйОтчет.ДатаКон = ТекущаяДата();
   ТабДок2 = Форма2.ЭлементыФормы.ПолеТабличногоДокументаРезультат;
   Отчет2.СформироватьОтчет(ТабДок2);


   ОтправитьФайл (ТабДок,ТабДок2,Получатель);

КонецПроцедуры

Процедура ОтправитьФайл(ТабДок,ТабДок2,Получатель)

   АдресОтправки = Получатель;
   
   Почта = Новый ИнтернетПочта;
   
   Профиль                        = Новый ИнтернетПочтовыйПрофиль;
   //Профиль.АдресСервераPOP3    = "pop.googlemail.com";
   //Профиль.ПортPOP3 = 995;
   Профиль.АдресСервераSMTP    = "smtp.tomica.ru";
   Профиль.ПортSMTP = 25;
   //Профиль.Пользователь        = "ололо";
   //Профиль.ПользовательSMTP    = "ололо";
   //Профиль.Пароль                = "ололо";
   //Профиль.ПарольSMTP            = "оллол";
   Профиль.Таймаут = "60";
   
   Почта.Подключиться(Профиль);
   
   письмо                    = Новый ИнтернетПочтовоеСообщение;
   письмо.ИмяОтправителя    = "ФоновоеЗадание1С";
   Если Найти(АдресОтправки, ";") = 0 Тогда
       письмо.Получатели.Добавить(АдресОтправки);
   Иначе
       мАдреса = ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(АдресОтправки, ";");
       Для каждого адрес из мАдреса Цикл
           письмо.Получатели.Добавить(адрес);
       КонецЦикла;
   КонецЕсли;
   письмо.Тема                = "Ежедневные отчеты";
   
   имяФайла = ПолучитьИмяВременногоФайла("xls");
   ИмяФайла2 = ПолучитьИмяВременногоФайла("xls");
   табДок.Записать(имяФайла, ТипФайлаТабличногоДокумента.XLS97);
   ТабДок2.Записать(ИмяФайла2, ТипФайлаТабличногоДокумента.XLS97);
   письмо.Тексты.Добавить("Ежедневные отчеты. Первый файл - отчет ""Продажи"", Второй - ""Валовая прибыль""");
   письмо.Вложения.Добавить(имяФайла);
   Письмо.Вложения.Добавить(ИмяФайла2);
   Почта.Послать(письмо);
   
   Почта.Отключиться();
   
   Попытка
       УдалитьФайлы(имяФайла);
       УдалитьФайлы(ИмяФайла2);
   Исключение
   КонецПопытки;
   
КонецПроцедуры

   


Суть то в чем, я если не из формы табличный документ получаю, а новый создаю, то он пустой остается. я так понимаю, что в ЭлементыФормы.ПолеТабличногоДокументаРезультат какие то настройки хранятся, только я их в коде нигде найти не могу...
11 Reaper_1c
 
09.04.13
21:22
Если уж говорим о некрофилии, то для рассылки предназначен рапорт руководителю, в котором от природы есть шаблоны для подключения собственных отчетов. Нафига лохматить бабушку?

Универсальный отчет уныл
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.