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

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


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

Пожалуйста, подскажите, уже переделываю отчет 5 раз. Просто устал морально работать с ним, крышу сносит. Спасибо за вашу помощь!
Vofka
Цитата(oduvan @ 05.08.21, 17:05) необходимо зарегистрироваться для просмотра ссылки
Для Каждого ТУТМНЕНЕПОНЯТНОКАКОЙОПЕРАНДУСТАНОВИТЬ ИЗ ДанныеСКД Цикл
//Тут делаю обработку данных с записью в ХМЛ
КонецЦикла

Вы работаете с табличным документом, а он так не умеет. Посмотрите в синтакс-помощнике метод Получить() табличного документа. С помощью этого метода поячеечно обходите табличный документ и собирайте с него данные.
А зачем вам сохранять его в XML?

Да, функция ПолучениеДанныхСКД у вас странно выглядит, т.к. возвращает тот же параметр, который принимает. В ней либо параметр лишний, либо возвращаемое значение не нужно.
oduvan
Vofka @ Вчера, 17:59 необходимо зарегистрироваться для просмотра ссылки ,
Мне нужно создать отчет в 1с на основе реализаций по алкоголю по этому , а после вытянуть его в xml файл, а тот уже и затягивается в так званую программу медок. Может есть вариант как вывести скд и потом его записать в xml файл? Спасибо большое за помощь!
Vofka
oduvan @ Сегодня, 17:36 необходимо зарегистрироваться для просмотра ссылки ,
правильный подход заключается в том, что бы выполнить СКД, получить набор данных (в сыром, так сказать, виде) и работать с данными, а не с табличным документом. Результат СКД можно вывести, например, в таблицу значений. В Гугле есть много примеров.
oduvan
Vofka @ 06.08.21, 19:14 необходимо зарегистрироваться для просмотра ссылки ,
Да, видел их, хотел уточнить по поводу такого, что у меня не выводит данные при нажатии на кнопку "Сформировать". Заполняю я вроде как правильно, могу предоставить код для понимания. Минусы то что я не могу найти информацию о том, какой элемент должен быть на форме " Таблица значений , табличный документ, Дерево...." ????
alexandr_f
oduvan @ Сегодня, 10:54 необходимо зарегистрироваться для просмотра ссылки ,
если нажимается на кнопку значит есть форма. Надо пройти отладчиком
sava1
что не получается?
на форме таб.док
по кнопке выгрузить - считываете настройки компоновщика, формируете ТЗ или Дерево (через СКД), обрабатывете его, сохраняете в файл
Batchir
А Вам точно нужен табличный документ?

При нажатии кнопки выгрузки в ХМЛ использовать тот же код, только

ПроцессорВыводаОСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;


заменить на

ПроцессорВыводаОСКД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;


Получите на выходе таблицу значений (это при условии что СКД линейный) и уже эту таблицу преобразовывайте в нужный формат
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.