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

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


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

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

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

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