Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как обработать результат отчета СКД выведенный в табличный документ 1с БУ 8.3

Как обработать результат отчета СКД выведенный в табличный документ 1с БУ 8.3
Я
   oduvanchikyan
 
05.08.21 - 17:09
Добрый день, столкнулся с задачей обрабатывать выведенные данные в табличный документ, для того чтобы после перебирать их и записать в файл XML.
Как я получаю данные? Создал Функцию, в которую передаю табличный документ(Результат), который находиться на форме. Он то и получает данные с СКД.
Функция ПолучениеДанныхСКД(ТаблДок)
    //ТаблДок = Табличное поле, в нашем случае "Результат".
    
    ОбъектОтчет = РеквизитФормыВЗначение("Отчет");
    
    ОСКД = ОбъектОтчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    НастройкиОСКД = ОСКД.НастройкиПоУмолчанию;
    
    ПараметрыДанныхОСКД = НастройкиОСКД.ПараметрыДанных.Элементы;
    
    //Элемент формы начало
    ЭлементНачалоПериода = ПараметрыДанныхОСКД.Найти("Начало");
    ЭлементНачалоПериода.Использование = Истина;
    //ЭлементНачалоПериода.Значение = НачалоМесяца(ТекущаяДата());
    ЭлементНачалоПериода.Значение = ЭтаФорма.Начало; // = значение Начала периода
    
    //Элемент формы конец
    ЭлементКонецПериода = ПараметрыДанныхОСКД.Найти("Конец");
    ЭлементКонецПериода.Использование = Истина;
    //ЭлементКонецПериода.Значение = КонецМесяца(ТекущаяДата());
    ЭлементКонецПериода.Значение = ЭтаФорма.Конец;
        
    КомпоновщикМакетаОСКД = Новый КомпоновщикМакетаКомпоновкиДанных;
    //Макет = КомпоновщикМакетаОСКД.Выполнить(ОСКД, КомпоновщикНастроекДанных.ПолучитьНастройкиОСКД());
    Макет = КомпоновщикМакетаОСКД.Выполнить(ОСКД, НастройкиОСКД);
    
    ПроцессорКомпоновкиОСКД = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиОСКД.Инициализировать(Макет);
    
    ТаблДок.Очистить();
    
    ПроцессорВыводаОСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВыводаОСКД.УстановитьДокумент(ТаблДок);
    ПроцессорВыводаОСКД.Вывести(ПроцессорКомпоновкиОСКД);

    Возврат ТаблДок;
КонецФункции


Дело в том что, я не могу никак обработать результат, то есть я пробую его как
ДанныеСКД = ПолучениеДанныхСКД(ЭтаФорма.Результат);
а после через цикл делаю перебор через
Для Каждого ТУТМНЕНЕПОНЯТНОКАКОЙОПЕРАНДУСТАНОВИТЬ ИЗ ДанныеСКД Цикл
//Тут делаю обработку данных с записью в ХМЛ
КонецЦикла

Пожалуйста, подскажите, уже переделываю отчет 5 раз. Просто устал морально работать с ним, крышу сносит. Спасибо за вашу помощь!
   ДенисЧ
 
1 - 05.08.21 - 17:10
ДанныеСКД - у тебя табличный документ. Открываешь справку по табличному документу и изучаешь его свойства и методы.
   Kassern
 
2 - 05.08.21 - 17:11
(0) результат СКД можно сохранить в таблицу значений вместо табдока, а дальше эту таблицу и обходишь в цикле заполняя свой xml файл.
   Kassern
 
3 - 05.08.21 - 17:12
(0) можно и табдок прочитать в цикле по строкам.
   oduvanchikyan
 
4 - 05.08.21 - 17:17
(2) Но ведь тогда результат отчета не выводиться?! Например, если брать функцию ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений, то результат пустой, может я не правильно, вывожу?! Могу предоставить код.
   oduvanchikyan
 
5 - 05.08.21 - 17:17
(3) Через выбранные области или каким образом это можно организовать ? Можете пожалуйста, дать пример?
   Kassern
 
6 - 05.08.21 - 17:18
   Kassern
 
7 - 05.08.21 - 17:21
(4) Кусок кода, где в ТаблицаЗначений результат СКД выводится:

    ДанныеРасшифровки=Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(
    СКД,
    Настройки,
    ДанныеРасшифровки,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТаблицаЗначений = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
   mistеr
 
8 - 05.08.21 - 18:53
(4) Так тебе посмотреть или в файл записать? Если в файл, то выводи в коллекцию, с ней удобнее работать.

А можно и туда, и сюда.
   ДенисЧ
 
9 - 05.08.21 - 19:03
(8)
- Вы формируете отчётов на СКД?
- Нет, просто показываю.
- Красивое...
   oduvanchikyan
 
10 - 06.08.21 - 17:27
(9) Я формирую отчет с помощью СКД и хочу его записать в файл XML, но перед этим отчет должен быть выведен на экран
Может знаете как лучше сделать ?
   Kassern
 
11 - 06.08.21 - 17:30
(10) ну так у вас есть табличный документ с результатом запрос, берите да обходите его.
   VladZ
 
12 - 06.08.21 - 17:31
(9) О! Прикол докатился и до мисты...
   VladZ
 
13 - 06.08.21 - 17:33
(0) СКД -> Таблица значений -> файл XML
   mistеr
 
14 - 07.08.21 - 08:56
(10) Еще раз вывести отчет в ТЗ

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.