Имя: Пароль:
1C
1С v8
Регламентное+Сохранение MXL = проблема
0 IKSparrow
 
13.11.12
22:29
Вывод разрешен у табличного документа.
У пользователя из под которого регламентное - права полные.
И как результат - из под регламентного файл отчёта пустой.
А если запускать регламентное из обработки - то файл с результатами.
Уже голову сломал. Куда копать? Движок 8.2.16.368
1 shuhard
 
13.11.12
22:31
(0)[У пользователя из под которого регламентное - права полные. ]
пользователя 1С ?
2 IKSparrow
 
13.11.12
22:34
(1) У того под которым сервис запущен.
3 IKSparrow
 
13.11.12
23:12
Any idea?
4 Dethmont
 
13.11.12
23:26
Давай подробнее.
Серверный вариант?
Как проверяешь что результат пустой? (Куда сохраняется результат)?
5 IKSparrow
 
13.11.12
23:32
(4)Да, вариант серверный.
Сохраняю на локальный диск сервера.
Файл сохраняется, что важно.
Но внутри файла (открываем 1Ской) - таблица пустая. Нет даже шапки отчёта.


При этом сам отчёт формируется (он банальный до безобразия), данные все в серверном варианте читаются.


Если запускать регламентное из обработки - файл тоже сохраняется. Открываем - там искомые данные.
6 Dethmont
 
13.11.12
23:42
Ну тогда давай показывай код
7 IKSparrow
 
13.11.12
23:47
(6) Метод регламентного:


Процедура ВыполнитьСохранениеОтчетаПоИзмененнымДанным() Экспорт
Обработка = Обработки.КонсолидированнаяПечать.Создать();
Обработка.ВыполнитьОбработку();
КонецПроцедуры

Внутри самой обработки:

Процедура ВыполнитьОбработку() Экспорт
   
   Печать();
   
КонецПроцедуры


Процедура СохранитьТаблицу(Таблица, ШаблонИмениФайла)
   Если РежимПросмотра Тогда
       Таблица.Показать();
   Иначе
       ИмяФайлаДанных = СокрЛП(ШаблонИмениФайла);
       ИмяФайлаДанных = СтрЗаменить(ИмяФайлаДанных, "[&Дата]", Формат(ТекущаяДата(),    "ДФ=yyyy-MM-dd"));
       ИмяФайлаДанных = СтрЗаменить(ИмяФайлаДанных, "[&Время]", Формат(ТекущаяДата(),    "ДФ=HH-mm-ss"));
       
       Если Не Прав(ИмяФайлаДанных, 4) = ".mxl" Тогда
           ИмяФайлаДанных = ИмяФайлаДанных + ".mxl";
       КонецЕсли;
       
       Если ИмяФайлаДанных = "" Тогда
           Возврат;
       КонецЕсли;
       
       ВыбФайл    = Новый Файл(ИмяФайлаДанных);
       ИмяКаталога = ВыбФайл.Путь;
       СоздатьКаталог(ИмяКаталога);
       Попытка
           Таблица.Записать(ИмяФайлаДанных, ТипФайлаТабличногоДокумента.MXL);
       Исключение
           ЗаписьЖурналаРегистрации("DTR", УровеньЖурналаРегистрации.Ошибка, , , ОписаниеОшибки());
       КонецПопытки;

   КонецЕсли;
КонецПроцедуры

Процедура Печать() Экспорт
   //ОбщаяТаблица = Новый ТабличныйДокумент;
   ОбщаяТаблица.Вывод = ИспользованиеВывода.Разрешить;
   
   Для каждого СтрокаНастройки Из Настройки Цикл
       //Таблица = Новый ТабличныйДокумент;
       Настройка   = СтрокаНастройки.Настройка;
       ОтчетОбъект    = Отчеты[СтрЗаменить(Настройка.НастраиваемыйОбъект, "ОтчетОбъект.", "")].Создать();
       ОтчетОбъект.СохраненнаяНастройка = Настройка;
       ОтчетОбъект.ПрименитьНастройку();
       ОтчетОбъект.Период.ДатаНачала        = ТекущаяДата() - 86400;
       ОтчетОбъект.Период.ДатаОкончания    = ТекущаяДата() - 86400;
       ОбновитьПериод(ОтчетОбъект);
       Таблица.Вывод = ИспользованиеВывода.Разрешить;
       ОтчетОбъект.СформироватьОтчет(Таблица,, Ложь);
       
       
       
       Если ОбъединятьФайлы Тогда
           Область = Таблица.Область(1, , Таблица.ВысотаТаблицы, );
           ОбщаяТаблица.Вывести(Таблица);
           ОбщаяТаблица.ВывестиГоризонтальныйРазделительСтраниц();
       Иначе
           СохранитьТаблицу(Таблица, СтрокаНастройки.ИмяФайла);
       КонецЕсли;
       
   КонецЦикла;
   
   Если ОбъединятьФайлы Тогда
       СохранитьТаблицу(ОбщаяТаблица, ИмяФайла);
   КонецЕсли;
КонецПроцедуры
8 IKSparrow
 
13.11.12
23:52
ОбщаяТаблица и Таблица - там код на самом деле раскоментирован.
9 Dethmont
 
13.11.12
23:58
Что есть Настройки ?
10 Dethmont
 
13.11.12
23:58
Регистр?
11 IKSparrow
 
14.11.12
00:00
(9) ТаблицаЗначений в которой находятся ссылки на настройки тех или иных объектов - например, отчёта в моем случае.
12 IKSparrow
 
14.11.12
00:03
+(11) Поправочка - ТабличнаяЧасть обработки
13 Dethmont
 
14.11.12
00:05
Блин... Так долго будем...
Посмотри отладчиком
14 Dethmont
 
14.11.12
00:06
Т.е. доходит ли он вообще до строчки
ОтчетОбъект.СформироватьОтчет(Таблица,, Ложь);
И
Что после выполнения в Таблица
15 Dethmont
 
14.11.12
00:06
16 ssh2006
 
14.11.12
00:09
ОтчетОбъект.Период.ДатаНачала         = ТекущаяДата() - 86400;
ОтчетОбъект.Период.ДатаОкончания     = ТекущаяДата() - 86400;


Проверь время на сервере
17 Dethmont
 
14.11.12
00:17
(16) Тоже вариант...

И еще хотел спросить
Настройки - заполняются случайно не при открытии формы?

(Ну я так на всякий случай)
18 IKSparrow
 
14.11.12
01:47
Всё ребят, простите, сам балбес. Никакой мистики. Глубоко-глубоко в коде, отыскались директивы #Если Клиент Тогда ... #КонецЕсли портящие всю малину. Всё работает.
19 IKSparrow
 
14.11.12
01:49
(15) Кстати, приведённая методика так и не помогла отладить регламентное - ну не ловится и всё тут. Всё настроено, всё работает, все ключи, предметы отладки видит. Но не цепляет. Отлаживался через журнал регистрации записывая туда шаги и значения =)
Закон Брукера: Даже маленькая практика стоит большой теории.