Выгрузка результата запроса в XML, структура которого берется из XML файла - образца.

07.09.12

Разработка - Инструментарий разработчика

Бывают ситуации, когда нужно очень быстро выгрузить данные в XML файл с известной структурой (имеется пример файла XML). А писать новую обработку для выгрузки времени особо нет. Т.к. надо правильно написать запрос, предусмотреть обход по группировкам в зависимости от структуры XML и т.д.
Обработка позволяет выгрузить плоский (без группировок) результат запроса в XML произвольной структуры с неограниченным количеством уровней вложенности данных.

Скачать исходный код

Наименование Файл Версия Размер
irConsole82_XML
.epf 816,41Kb
196
.epf 816,41Kb 196 Скачать

Обработка представляет из себя некий симбиоз из 2-х:

1. Консоль запросов (взял за основу консоль запросов ИР //infostart.ru/public/57854/)

2. Выгрузка документа в XML произвольной структуры (за основу взята обработка //infostart.ru/public/85238/)

Отдельное спасибо их авторам за разрешение использовать свои обработки.

 

Описание последовательности работы:

1. Пишем некий запрос, результат которого требуется выгрузить в XML. Причем в нем не обязательно иметь все поля, которые присутствуют в структуре файла XML. Например, если значение какого то реквизита постоянное, то это значение можно задать в форме описания структуры XML.

2. Задаем необходимые параметры и выполняем его.

3. Открываем закладку "Выгрузка в XML" и нажимаем на кнопку "Редактировать настройки"

4. Задаем имя файла образца и нажимаем кнопку "Прочитать XML".

5. После успешного чтения структуры XML необходимо задать соответствие узлов (реквизитов) XML и полей результата запроса. Это делается путем выбора реквизита запроса в таблице структуры XML.

6. И, наконец, самое интересное. В колонке "Ключевое поле" необходимо в строке с нужным реквизитом XML указать поле запроса, которое будет играть роль ключа для данного реквизита. Это означает то, что узел XML (включая подчиненные) будет выгружаться несколько раз, пока поле в таблице результата имеет одинаковое значение. Подчиненные узлы также могут иметь ключевое поле.

7. Для выгрузки необходимо нажать кнопку "Выгрузить результат запроса". После чего, указать имя файла выгрузки.

 

Для полного понимания приведу пример результата запроса (рис. 1), настройки структуры XML (рис. 2) и файла XML результата (рис. 3), который получается после обработки результата запроса. Образец файла XML можно увидеть на рис 4.

Вкратце опишу смысл узлов и реквизитов XML:

voucher  - это узел, описывающий некий документ, имеющий реквизит "id" - номер документа.

voucher_head - секция шапки документа

inputOp - реквизит шапки документа

voucher_body - секция табличной части документа

entry - секция строки табличной части документа

sum,kol - реквизиты строки табличной части.

Предположим, что нам необходимо выгрузить все документы одного вида, а также реквизиты табличной части документа другого вида. Документы имеют некое общее поле для связи друг с другом.

Для выгрузки всего результата запроса необходимо создать некое ключевое поле с любым одинаковым значением. В данном примере этим полем является "ПолеКлюча" со значением "1" (см. рис. 1).

В нашем случае "ПолеКлюча" необходимо прописать в качестве ключевого поля для XML-узла "voucher". Что мы и видим на рис. 2.

А поле "Номер" результата запроса является ключевым для строк табличной части. Т.е. для XML-узла "entry".

Если мы таким образом настроим структуру XML-файла, как показано на рис. 2, то добьемся нужного нам результата. Т.е. будут выгружены все документы и все строки табличных частей в документе. См. рис. 3.

Как видите, поле "inputOp" во всех документах содержит то значение, которое задано в графе "Значение" в таблице настройки структуры XML.

В заключение, хочу сказать, что обработка, в идеале, должна открываться в типовых конфигурациях, имеющих справочник "НастройкиПользователей". В противном случае будут недоступны функции сохранения настроек в самой конфигурации, но будет доступна функция сохранения настроек в файле.

Все пожелания/предложения/ошибки прошу высказывать в комментариях.

См. также

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

Инструментарий разработчика Роли и права Запросы СКД Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    125814    683    389    

735

Infostart PrintWizard - создание и редактирование печатных форм в 1С 8.3

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

18000 руб.

06.10.2023    8079    24    6    

43

Infostart УДиФ: Управление данными и формами 1С

Инструменты администратора БД Инструментарий разработчика Роли и права Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

10000 руб.

10.11.2023    4501    12    2    

38

SALE! %

PowerTools

Инструментарий разработчика Инструменты администратора БД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

3600 2280 руб.

14.01.2013    178772    1084    0    

862

Бустер Конвертации данных 3 (Infostart Toolkit)

Инструментарий разработчика 8.3.14 1С:Конвертация данных Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

15000 руб.

07.10.2021    15043    3    12    

37

Многопоточность. Универсальный «Менеджер потоков» 2.1

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Восстановление партий или взаиморасчетов, расчет зарплаты, пакетное формирование документов или отчетов - теперь все это стало доступнее. * Есть желание повысить скорость работы медленных алгоритмов! Но... * Нет времени думать о реализации многопоточности? * о запуске и остановке потоков? * о поддержании потоков в рабочем состоянии? * о передаче данных в потоки и как получить ответ из потока? * об организации последовательности? Тогда ЭТО - то что надо!!!

5000 руб.

07.02.2018    99719    239    97    

298

1С HTML Шаблоны / HTML Templates

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Быстрая и удобная обработка для работы с шаблонами HTML. Позволяет легко и быстро формировать код HTML.

2040 руб.

27.12.2017    28378    4    10    

16

[ЕХТ] Фреймворк для Расширений 1С

Инструментарий разработчика Платформа 1С v8.3 Управляемые формы Платные (руб)

"Фреймворк для Расширений 1С" это универсальное и многофункциональное решение, упрощающее разработку и поддержку создаваемых Расширений. Поставляется в виде комплекта из нескольких Расширений с открытым исходным кодом. Работает в любых Конфигурациях в режиме Управляемого приложения с режимом совместимости 8.3.12 и выше без необходимости внесения изменений в Конфигурацию.

3000 руб.

27.08.2019    18462    6    8    

40
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. nolodin 51 10.01.13 12:03 Сейчас в теме
Сама идея замечательная, но реализация подводит. Обработку нельзя просто открыть и использовать. При открытии сразу выдается куча ошибок - Имена функций, вызываемые из форм не совпадают с именами в модуле обработки - во многих процедурах и функциях пропущен "_". К тому же в форме "ФормаНастройки" идет обращение к модулям "СохранениеНастроек", "ТиповыеОтчеты", которые отсутствуют в типовой конфигурации УТ10.3.
2. AndreyP63 02.03.15 20:29 Сейчас в теме
Не работает на БГУ 1.0
{Форма.ирКлсПолеТекстовогоДокументаСКонтекстнойПодсказкой.Форма(107,3)}: Процедура или функция с указанным именем не определена (ЛксСообщитьСУчетомМодальности)
<<?>>ЛксСообщитьСУчетомМодальности(ОписаниеОшибки(), мСообщенияЧерезПредупреждения);
{Форма.ирКлсПолеТекстовогоДокументаСКонтекстнойПодсказкой.Форма(108,3)}: Процедура или функция с указанным именем не определена (ЛксСообщитьСУчетомМодальности)
3. Elgrego 121 06.03.15 09:20 Сейчас в теме
(2) kurt52, Предполагаю, что вы пытаетесь открыть форму в управляемом режиме. Данная обработка предполагает режим запуска предприятия с обычными формами.
4. VovkaPutin 31 15.10.15 08:51 Сейчас в теме
(3) Elgrego, можно мне здесь скинуть подправленную версию? Изначально была куча ошибок, теперь работает
divolvaiser; +1 Ответить
6. Elgrego 121 07.05.20 17:58 Сейчас в теме
(4) Конечно. У самого давно уже отпала охота...
5. ниЗнайка 07.05.20 14:33 Сейчас в теме
не работает, верните $
7. Elgrego 121 07.05.20 17:59 Сейчас в теме
(5)Если расскажете как - с удовольствием.
Но то, что она не везде работает уже было написано в комментариях. Тем более что она писалась на БСП от 2013 года...
Оставьте свое сообщение