Имя: Пароль:
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
Если уж говорим о некрофилии, то для рассылки предназначен рапорт руководителю, в котором от природы есть шаблоны для подключения собственных отчетов. Нафига лохматить бабушку?

Универсальный отчет уныл
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший