Имя: Пароль:
1C
 
Пост обработка отчета скд, программный вывод результата пустой!
0 Сергей Роспатнюк
 
10.10.18
17:25
Помогите найти ошибку добрые люди вот процедура




Процедура СформироватьОтчётПрограммно()
    ОтчетОбъект = РеквизитФормыВЗначение("Отчет");        // Упр. прил.
    
    //--- Инициализация СКД
    Если Истина Тогда
        
        ДанныеРасшифровки_Вр    = Новый ДанныеРасшифровкиКомпоновкиДанных;    
        СхемаКомпоновкиДанных    = ОтчетОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");    
        Компоновщик                = Новый КомпоновщикНастроекКомпоновкиДанных;
        Компоновщик.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));    
        Компоновщик.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);        
        
    КонецЕсли;
    //--- Инициализация СКД (Конец)
    
    Настройки    = Компоновщик.ПолучитьНастройки();
    
    //--- imp RSS (start)
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(     "Организация"                ,      Организация                         );
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(     "СотрудникиОтчета"            ,      СотрудникиОтчета                 );
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(     "КоличествоСотрудников"     ,   СотрудникиОтчета.Количество()    );
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(     "УчитыватьУволенных"        ,      УчитыватьУволенных                 );
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(     "КонецПериода"                ,      ТекущаяДата()                     );
    Настройки.ПараметрыДанных.УстановитьЗначениеПараметра(     "Сотрудник_Наименование"    ,      Сотрудник_Наименование             );
    //--- imp RSS (End)
    
    
    //--- Вывод результата СКД    
    Если Истина Тогда
        
        КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;    
        МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Компоновщик.ПолучитьНастройки(),ДанныеРасшифровки);
        МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки_Вр);    
        
        //------------------    
        ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
        ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,,ДанныеРасшифровки_Вр);
        
        //Результат = ЭлементыФормы.Результат;        // Об. прил.
        ОтчетТабличныйДокумент.Очистить();
        
        Результат_Вр    = Новый ТабличныйДокумент();
        
        ПроцессорВывода    = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
        ПроцессорВывода.УстановитьДокумент(ОтчетТабличныйДокумент);
        ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
        
    КонецЕсли;        
    //--- Вывод результата СКД (Конец)
    
    Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния.Видимость = ложь;
    Элементы.ОтчетТабличныйДокумент.ОтображениеСостояния.ДополнительныйРежимОтображения = ДополнительныйРежимОтображения.НеИспользовать;
            
    //--- Пост обработка отчёта
    Если Истина Тогда
         //В СКД должна быть пустая колонка с обрабатываемым результатом
        
        ВысотаЗаголовка    = 2;
        
        //КоличествоОбъектов    = Результат.ВысотаТаблицы - ВысотаЗаголовка;    
        
        НомерПоляИсточника        = 11;
        НомерПоляПриёмника        = 11;
        НомерПоляПриёмника2        = 12;
        
        НачальныйНомерСтроки    = ВысотаЗаголовка + 1;
        
        ДокументРезультат        = ОтчетТабличныйДокумент;
        
        // ДокументРезультат.ШиринаТаблицы  Количество колонок в табличном документе
        
        //------- Обработка строк отчёта
        Для НомерСтроки = НачальныйНомерСтроки По ДокументРезультат.ВысотаТаблицы Цикл
            
            //ОбработкаПрерыванияПользователя();
            
            ВходноеЗначение    = ДокументРезультат.Область("R"+ Формат(НомерСтроки, "ЧДЦ=; ЧГ=0") + "C" + Строка(НомерПоляИсточника) ).Текст;
            
            МестоЖительства = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивСлов(ВходноеЗначение,",");
            
            МассивТолькоСлов = Новый Массив;
            
            Для Каждого Элемент Из МестоЖительства Цикл
                
                Признак = ЕстьНеЦифры(Элемент);
                
                Если Признак = Истина Тогда
                     МассивТолькоСлов.Добавить(Элемент);
                КонецЕсли;    
                
            КонецЦикла;
        
            ВыходноеЗначение = СтроковыеФункцииКлиентСервер.СтрокаИзМассиваПодстрок(МассивТолькоСлов,",");
            
            Область            = ДокументРезультат.Область("R"+ Формат(НомерСтроки, "ЧДЦ=; ЧГ=0") + "C" + Строка(НомерПоляПриёмника) );
                    
            Область2        = ДокументРезультат.Область("R"+ Формат(НомерСтроки, "ЧДЦ=; ЧГ=0") + "C" + Строка(НомерПоляПриёмника2) );
            Область2.Текст    = Строка(ВыходноеЗначение);        
            
        КонецЦикла;
        //------- Обработка строк отчёта (Конец)
        
    КонецЕсли;
    //--- Пост обработка отчёта (Конец)    
КонецПроцедуры
1 cons24
 
10.10.18
17:53
В конце концов результат попадает в переменную ДокументРезультат. Однако не понятно, это реквизит формы или что?
В общем по-моему проблема на этапе вывода/передачи ТабДок на форму.
2 vicof
 
10.10.18
17:54
что говорит отладчик?
3 Сергей Роспатнюк
 
10.10.18
18:02
(1) Спасибо проблема была с выводом результата на форму как вы и предполагали, тему закрываю.