Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Индикатор выполнения отчета с помощью СКД

Индикатор выполнения отчета с помощью СКД
Я
   yurec_k
 
25.12.12 - 15:29
Пацаны есть темка следующая:
есть тугодумные отчеты, хочу чтоб отображался индикатор формирования отчета. Толком в инете ни чего не нашел, в идеале чтоб можно было применять к отчетам с программным выводом (СтандартнаяОбработка = Ложь),
ут11, управляемое приложение. Хелп.
 
 
   le_
 
1 - 25.12.12 - 15:34
   yurec_k
 
2 - 25.12.12 - 15:37
(1) сдается мне эта штука в управляемомо приложении не работает, сделал как там просто колесико крутиться с надписью "Отчет формируется ..."
   le_
 
3 - 25.12.12 - 15:44
   vmv
 
4 - 25.12.12 - 15:49
(3) метод тривиален

бъем серверную обработку на вызов цикле порциональных методов этой серверной обработки, но
ОбновитьОтображениеДанных();

все портит, это ж в каждой итерации вся форме аццке колбасицца, хотя если прикрутить фонарики и огненное дыхание дракона после обновления, то будет ничего)
   ДенисЧ
 
5 - 25.12.12 - 15:51
Интересно, как разбить процедуру выполнения запроса :-)
   le_
 
6 - 25.12.12 - 15:54
(5) А обычный СКД-шный прогресс-бар начинает шевелиться уже после того, как запрос отработал и идет вывод данных.
Ход выполнения выборки данных запросом никак не отобразить.
   vmv
 
7 - 25.12.12 - 15:54
(5) если облаеете хорошей степенью извращенца, то получать мельчайшие ВТ в порцайках, накладывая там услоявия соединения и пр. Результурующий запросец просто выбрать.

Если 100%-й извращенец, то навоеяшь 100500 методов гецерации ВТ, зато будет бежать полосочка и девочки вудут визжать от удовольствия, клева)
   yurec_k
 
8 - 25.12.12 - 16:34
(3) а других вариантов нет?
это кто-нибудь применял к отчетам?
   le_
 
9 - 25.12.12 - 16:39
(8) Один из "других" вариантов - переписать отчет/конфигурацию так, чтобы он [отчет] перестал быть "тугодумным".
   TormozIT
 
10 - 25.12.12 - 16:40
Пишешь серверную фоновую процедуру для универсального формирования (компоновки) табличного документа по настройкам и схеме из временного хранилища. В этой процедуре, на вход которой передали адрес временного хранилища для хранения процента выполнения, обновляешь процент выполнения. На клиенте готовишь данные (настройки и схему) для отчета и запускаешь фоновое задание с этой процедурой, подключаешь обработчик ожидания и обновляешь на форме индикатор на основе считанного процента выполнения из временного хранилища.
 
 Рекламное место пустует
   yurec_k
 
11 - 25.12.12 - 16:48
(10) интересная темочка,
примерчик есть?
   fisher
 
12 - 25.12.12 - 16:54
Ладно с процентом. С процентом так или иначе упираешься в (5).
Я был бы счастлив хотя бы от этого:
v8: СКД. Индикатор формирования в УФ и нестандартная обработка
   yurec_k
 
13 - 25.12.12 - 17:23
да без этого долбаного кружочка ваще все намертво встает
   yurec_k
 
14 - 25.12.12 - 18:03
Сделал следующий эксперимент:
отчет, СтандартнаяОбработка = Истина, формируется примерно 40 сек.
процедура ПриКомпоновкеРезультата:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
   //СтандартнаяОбработка = Ложь;
 
    Сообщить("0,"+ТекущаяДата());
    НастройкиСКД = КомпоновщикНастроек.ПолучитьНастройки();
    ДокументРезультат.Очистить();
    Сообщить("1,"+ТекущаяДата());
    КомпановщикМакета  = Новый КомпоновщикМакетаКомпоновкиДанных;
    Макет = КомпановщикМакета.Выполнить(СхемаКомпоновкиДанных,НастройкиСКД,ДанныеРасшифровки);
    Сообщить("2,"+ТекущаяДата());
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(Макет,,ДанныеРасшифровки);
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.ОтображатьПроцентВывода = Истина;
   //ЭлементРезультата = Новый ЭлементРезультатаКомпоновкиДанных; 
 
    Сообщить("3,"+ТекущаяДата());
   //ПолеПоКодуНеобходимоПолучитьЗначение = "Номенклатура";
 
   //ПолеКартинка = "Картинка";
 
    ПроцессорВывода.НачатьВывод();
    Сообщить("4,"+ТекущаяДата());
    а = 1;
    Пока Истина Цикл
        ЭлементРезультата = ПроцессорКомпоновки.Следующий();
        Если ЭлементРезультата = Неопределено Тогда
            Сообщить("Прервать, "+а);
            Прервать;
        КонецЕсли;          
       //ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
 
        Если а % 100 = 0 Тогда
            Состояние = а / 100;    
        КонецЕсли;
        а = а + 1;    
    КонецЦикла;
    ПроцессорВывода.ЗакончитьВывод();
    Сообщить("5,"+ТекущаяДата());
КонецПроцедуры

хронология примерно такая после нажатия кнопки сформировать:
1. 20 сек: "отчет не сформирован. Нажмите сформировать ...";
2. потом вываливаются разом все сообщения 0-4 с одинаковым временем, 5-ое с +15 сек;
3. еще 20 сек, крутиться этот кружочек;
4. появляются данные отчета.
---------------
По этому поводу возникают вопросы:
1. На какой стадии / какой строчкой выполняется запрос?
2. Если результат выводится между 4 и 5 ым сообщением то, что делается когда крутиться кружочек?
   yurec_k
 
15 - 25.12.12 - 18:09
+ к (14) и вызывает сомнение (6) следующее:
закоментарил нахрен эту обработку кружочек практически сразу(2-3 сек) начал кружиться.
Запрос отчета не простой в консоле делался бы долго с такими же параметрами.
   fisher
 
16 - 25.12.12 - 18:15
Ты по моей ссылке ходил? Там я вроде разобрался.
Кружочек намертво завязан на фоновое формирование. Он кружится параллельно с выполнением кода формы, если такой есть. Поэтому сообщения выйдут сразу, а отчет еще будет формироваться.
Перестает кружится, когда форма получает инфу с сервера о завершении формирования отчета, выводит полученный табдок и гасит кружочек.
А как только ставишь нестандартную обработку - фоновому формированию хана. Вот такие невеселые факты.
   yurec_k
 
17 - 25.12.12 - 18:34
(16)
так а что тогда отчет делает первые 20 сек пока собщений нет,
не ужто запрос выпоняет?
этот код в модуле объекта.

И если " Кружочек намертво завязан на фоновое формирование " получиться ли (10)?
   fisher
 
18 - 25.12.12 - 18:53
(17) Так у тебя (14) выполняется при отключенной стандартной обработке или при включенной? Если при включенной, то у тебя дважды компоновка выполняется. Стандартная (фоново с кружочком) и та, что в коде прописана.
   yurec_k
 
19 - 26.12.12 - 09:13
(18) получается, да. Ок 2-ой вопрос из (14) понятен.
а
1. На какой стадии / какой строчкой выполняется запрос?
   yurec_k
 
20 - 26.12.12 - 09:50
еще ошибочка в 14 
 //ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
 
должна быть раскоментарена в этом сл отчет выводится 2 раза.
я сначала не воткнул и закоментарил навиг
фишер в 18 абсолютно прав
   yurec_k
 
21 - 26.12.12 - 14:41
может есть у кого пример того что описано в (10) ?


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует