Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как обработать результат отчета СКД выведенный в табличный документ 1с БУ 8.3          
oduvan Подменю пользователя
сообщение 05.08.21, 16:05
Сообщение #1

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

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

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


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

Пожалуйста, подскажите, уже переделываю отчет 5 раз. Просто устал морально работать с ним, крышу сносит. Спасибо за вашу помощь!

Vofka Подменю пользователя
сообщение 05.08.21, 16:59
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

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

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

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

Сообщение отредактировал Vofka - 05.08.21, 16:59

oduvan Подменю пользователя
сообщение 06.08.21, 16:36
Сообщение #3

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Vofka @ Вчера, 17:59 * ,
Мне нужно создать отчет в 1с на основе реализаций по алкоголю по этому , а после вытянуть его в xml файл, а тот уже и затягивается в так званую программу медок. Может есть вариант как вывести скд и потом его записать в xml файл? Спасибо большое за помощь!

Vofka Подменю пользователя
сообщение 06.08.21, 18:14
Сообщение #4

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 13955
Из: Киев
Спасибо сказали: 4519 раз
Рейтинг: 3641.2

oduvan @ Сегодня, 17:36 * ,
правильный подход заключается в том, что бы выполнить СКД, получить набор данных (в сыром, так сказать, виде) и работать с данными, а не с табличным документом. Результат СКД можно вывести, например, в таблицу значений. В Гугле есть много примеров.

oduvan Подменю пользователя
сообщение 09.08.21, 9:54
Сообщение #5

Молчаливый
*
Группа: Пользователи
Сообщений: 3
Спасибо сказали: 0 раз
Рейтинг: 0

Vofka @ 06.08.21, 19:14 * ,
Да, видел их, хотел уточнить по поводу такого, что у меня не выводит данные при нажатии на кнопку "Сформировать". Заполняю я вроде как правильно, могу предоставить код для понимания. Минусы то что я не могу найти информацию о том, какой элемент должен быть на форме " Таблица значений , табличный документ, Дерево...." ????

alexandr_f Подменю пользователя
сообщение 09.08.21, 10:13
Сообщение #6

Завсегдатай
****
Группа: Пользователи
Сообщений: 192
Из: Украина
Спасибо сказали: 3 раз
Рейтинг: 3

oduvan @ Сегодня, 10:54 * ,
если нажимается на кнопку значит есть форма. Надо пройти отладчиком

sava1 Подменю пользователя
сообщение 09.08.21, 10:47
Сообщение #7

Живет на форуме
Иконка группы
Группа: Местный
Сообщений: 2688
Из: Проскуров
Спасибо сказали: 681 раз
Рейтинг: 659.7

что не получается?
на форме таб.док
по кнопке выгрузить - считываете настройки компоновщика, формируете ТЗ или Дерево (через СКД), обрабатывете его, сохраняете в файл

Batchir Подменю пользователя
сообщение 11.08.21, 10:18
Сообщение #8

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

А Вам точно нужен табличный документ?

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

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


заменить на

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


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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 18.04.24, 2:26
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!