Щас вот озадачился проблемой формирования универсального отчета на стороне сервера(в регламентном задании). Суть - хочу слать письма добрым людям по вечерам. Отправлять научился, нормуль все уходит, когда запускаю обработку под юзером. На сервере ругается на "ПолучитьФорму", ибо получает только на клиенте. И я задумался. Крепко так... даже ветку на мисте нашел:
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);
Исключение
КонецПопытки;
КонецПроцедуры
Суть то в чем, я если не из формы табличный документ получаю, а новый создаю, то он пустой остается. я так понимаю, что в ЭлементыФормы.ПолеТабличногоДокументаРезультат какие то настройки хранятся, только я их в коде нигде найти не могу...