Выгрузка документа в XML произвольной структуры (+пример для выгрузки в ECOD)

Опубликовал Александр Медведев (anig99) в раздел Обработки - Обработка документов

Обновлено до версии 0.7.
Добавлена функция пропуска заголовков табличных частей.
Исправлены баги в версии без сохранения (если стандартная версия выдает ошибки)

 

Цель обработки:

Обработка предназначена для выгрузки документов из 1с в xml-файл произвольной структуры, чтобы потом загрузить этот файл в другие системы. Например, система ЭДО ECOD, где можно сохранять черновики документов в виде xml-файлов, а потом загружать их обратно. Настройка загрузки документа Уведомление об отгрузке приложена в качестве бонуса.


Возможности обработки:

  • Создание настройки выгрузки на основе существующего xml-файла. Вам не нужно создавать структуру выгрузки с нуля.
  • Указание соответствия узлов/атрибутов в дереве в xml-файла и дерева реквизитов документа для выгрузки.
  • Дерево реквизитов документов можно разворачивать до любого желаемого уровня.

  • В список реквизитов входят свойства и категории.

  • Для объекта типа «Номенклатура» в список реквизитов входят данные регистра сведений «Номенклатура контрагентов»
  • Использование форматирования выгружаемых значений
  • Использование таблицы соответствия для фиксированной замены выгружаемых значений
  • Работа с табличной частью документа.

  • Указание кодировки конечного xml-файла
  • Сохранение настроек в файл

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

  • Использование обработки как внешней печатной формы

 

Чего обработка не может (возможно только пока):

  • управляемая форма
  • работа с пространством имён (нет образца для проверки)
  • выгрузка списка документов
  • выгрузка табличных частей нескольких документов в один файл
  • использование произвольных запросов для установки значения для выгрузки
  • работа с csv файлами
  • работа со схемами XML


Подробнее.
Настройки.

Предварительно нужно заполнить структуру документа и дерево XML-образца. Структура документа загружается автоматически при выборе из списка типа документа. XML файл нужно сначала выбрать, а потом нажать на соответствующую кнопку. Поле Количество строк позволяет указать количество строк XML-документа читаемых за один раз (для больших документов). В получившемся дереве необходимо удалить повторяющие элементы табличных частей (т. е. 1 табличная часть документа = 1 узел строки табличной части дерева XML). Для успешной выгрузки нужно указать кодировку выходного XML-файла.

Соответствие между реквизитом/табличной частью/строкой табличной части документа и узлом/атрибутом через колонку Реквизит документа. При нажатии кнопки «Выбрать»(F4) откроется структура документа, где можно выбрать необходимое. При этом можно практически любой реквизит «развернуть» ещё дальше, т. е. получить реквизиты реквизита. Для этого нужно нажать правой кнопкой на реквизит и выбрать соответствующий пункт в меню. Получить табличную часть для реквизита строки табличной части нельзя.

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

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

Колонка Формат позволяет установить форматную строку для выгружаемого значения.

 

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

 

После всех настроек их можно сохранить в файл или в типовой справочник Сохраненные настройки.

 

Использование в качестве обработки.

  • Загрузить настройки из файла или типового справочника Сохраненные настройки.

  • Выбрать документ для выгрузки

  • Нажать кнопку Выгрузить документ

  • Выбрать каталог и имя файла.

  • Profit

 

Использование в качестве печатной формы:

  • Загрузить обработку в качестве внешней печатной формы

  • Указать тип документа

  • В параметрах добавить элемент Настройка, где в качестве значения указать ссылку на нужную настройку из справочника Сохраненные настройки.

  • При выборе данной обработки из списка печатных форм будет запрошен каталог для выгрузки. Имя файла состоит из типа, номера и даты документа.

  • Profit

 

З.Ы. Просто и удобно. Не на чем пока проверить использование атрибутов, т. к. ECOD использует только узлы.

З.Ы.Ы. Настройка для ECOD потребует изменения для 4 реквизитов: Buyer — ILN, Seller — ILN, CodeByBuyer, DeliveryPoint – ILN. У меня данные реквизиты хранятся в качестве свойств элементов справочников Контрагенты и Организация — это коды контрагентов и организации в системе ECOD и системе покупателя.

 

 

Скачать файлы

Наименование Файл Версия Размер
ВыгрузкаXML Версия 0.7
.epf 58,39Kb
10.06.11
631
.epf 58,39Kb 631 Бесплатно
РеализацияEDI_.sav
.sav 8,19Kb
15.05.11
128
.sav 8,19Kb 128 Бесплатно
ВыгрузкаXML_Версия_Без_Сохранения_В_Справочник Верси 0.7
.epf 57,02Kb
10.06.11
200
.epf 57,02Kb 200 Бесплатно

См. также

Комментарии
1. Сергей Ожерельев (Поручик) 3495 15.05.11 03:14 Сейчас в теме
(0) Голая баба обнажённая девушка с пистолетом смотрелась бы креативней.
2. Александр Медведев (anig99) 2490 15.05.11 03:18 Сейчас в теме
Была идея - другая картинка из этого фильма (который в тему обработки), но там цензура почти всё закрывает.
3. Сергей Ожерельев (Поручик) 3495 15.05.11 03:20 Сейчас в теме
1C:Управление небольшой фирмой тут ни к чему, она на управляемых.

1С:Управление торговлей 10.3.13.2

При открытии
Обнаружены ошибки

{ВнешняяОбработка.ВыгрузкаXML.МодульОбъекта(430,2)}: Переменная не определена (СохранениеНастроек)
	<<?>>СохранениеНастроек.СохранитьНастройкуОбъекта(СохраненнаяНастройка, СтруктураНастроек);
...Показать Скрыть


Модуль СохранениеНастроек есть, если не изменяет память, только в БП.
4. Александр Медведев (anig99) 2490 15.05.11 03:23 Сейчас в теме
Щас подправлю. и конфу и код
5. Сергей Ожерельев (Поручик) 3495 15.05.11 03:26 Сейчас в теме
Если только в УНФ не использовать в режиме толстого клиента, тогда можно оставить.
7. Александр Медведев (anig99) 2490 15.05.11 03:30 Сейчас в теме
(5) тогда оставлю, чтобы был стимул управляемую форму быстрее дописать
8. Александр Медведев (anig99) 2490 15.05.11 03:31 Сейчас в теме
(5) добавил версию для конф без справочника Сохраненные настройки
11. Игорь Исхаков (Ish_2) 960 15.05.11 09:08 Сейчас в теме
12. Александр Медведев (anig99) 2490 15.05.11 09:15 Сейчас в теме
(11) развивай фантазию! Вон как по одной только шевелюре Поручик и Eugeneer разошлись.
13. Ирина Пятакова (Alraune) 1373 15.05.11 09:34 Сейчас в теме
Народ, не хулиганьте :)
14. Игорь Исхаков (Ish_2) 960 15.05.11 10:28 Сейчас в теме
(13) Посты (9),(10) нужно удалить. Как неприличные.
Пост (11) как конструктивное предложение - нужно оставить.
15. Сергей (Che) Коцюра (CheBurator) 3370 15.05.11 14:35 Сейчас в теме
Правильная обработка. Только на днях боролся с корусовцами - кк-то тяжело валидировать файл, не имея формальной схемы...
16. Maximilian Alekseevich (1cmax) 151 15.05.11 15:25 Сейчас в теме
однозначно ++
недавно занимался подобным, размещал метаданные в копии файла с данными путем типизации и разметки элементов в xml файле.
будет время - выложу
17. Ийон Тихий (cool.vlad4) 41 16.05.11 10:59 Сейчас в теме
18. Александр Медведев (anig99) 2490 16.05.11 11:38 Сейчас в теме
(17) угу...или "Ох уж эта наука"
19. Андрей Осин (anosin) 27 16.05.11 12:05 Сейчас в теме
{ВнешняяОбработка.ВыгрузкаXML.МодульОбъекта(178)}: Поле объекта не обнаружено (НазначенияСвойствКатегорийОбъектов)
ВыборкаПВХ = ПланыВидовХарактеристик.НазначенияСвойствКатегорийОбъектов.Выбрать();
20. Александр Медведев (anig99) 2490 16.05.11 12:13 Сейчас в теме
21. Андрей Осин (anosin) 27 16.05.11 12:21 Сейчас в теме
22. Александр Медведев (anig99) 2490 16.05.11 12:40 Сейчас в теме
(21) поправил. сейчас не должно ругаться
23. Александр Зубцов (iov) 359 10.06.11 15:52 Сейчас в теме
{ВнешняяОбработка.ВыгрузкаXML.МодульОбъекта(434,2)}: Переменная не определена (СохранениеНастроек)
<<?>>СохранениеНастроек.СохранитьНастройкуОбъекта(СохраненнаяНастройка, СтруктураНастроек);

УТ 10.3
24. Александр Медведев (anig99) 2490 10.06.11 15:53 Сейчас в теме
(23) запусти вариант "ВыгрузкаXML_Версия_Без_Сохранения_В_Справочник.epf"
25. Александр Зубцов (iov) 359 10.06.11 15:54 Сейчас в теме
26. Александр Зубцов (iov) 359 10.06.11 15:54 Сейчас в теме

Процедура СохранитьНастройку() Экспорт

СтруктураНастроек = ПолучитьСтруктуруДляСохранения();
//СтруктураНастроек.Версия = "2.00";
СохранениеНастроек.СохранитьНастройкуОбъекта(СохраненнаяНастройка, СтруктураНастроек);

КонецПроцедуры

27. Александр Зубцов (iov) 359 10.06.11 15:57 Сейчас в теме
{Форма.Форма.Форма(40,27)}: Переменная не определена (ТиповыеОтчеты)
ТаблицаВариантовОтчета = <<?>>ТиповыеОтчеты.ПолучитьТаблицуДоступныхВариантов(ТиповыеОтчеты.ПолучитьИдентификаторОбъекта(ЭтотОбъект), глЗначениеПеременной("глТекущийПользователь"));
{Форма.Форма.Форма(40,75)}: Переменная не определена (ТиповыеОтчеты)
ТаблицаВариантовОтчета = ТиповыеОтчеты.ПолучитьТаблицуДоступныхВариантов(<<?>>ТиповыеОтчеты.ПолучитьИдентификаторОбъекта(ЭтотОбъект), глЗначениеПеременной("глТекущийПользователь"));
28. Александр Зубцов (iov) 359 10.06.11 15:58 Сейчас в теме
29. Александр Зубцов (iov) 359 10.06.11 16:01 Сейчас в теме

{ВнешняяОбработка.ВыгрузкаXML.МодульОбъекта(208)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить().Выбрать();
по причине:

по причине:
{(19, 2)}: Таблица не найдена "Справочник.КатегорииОбъектов"
<<?>>Справочник.КатегорииОбъектов КАК КатегорииОбъектов




Бухгалтерия предприятия, редакция 2.0 (2.0.22.1)
30. Александр Медведев (anig99) 2490 10.06.11 16:02 Сейчас в теме
(27)(28) Как я уже сказал, "ВыгрузкаXML_Версия_Без_Сохранения_В_Справочник.epf" лишена части функционала, но зато ошибок не выдает
31. Александр Зубцов (iov) 359 10.06.11 16:03 Сейчас в теме
(30) как я уже сказал именно её я скачал и она эти ошибки и выдает
32. Александр Зубцов (iov) 359 10.06.11 16:03 Сейчас в теме
ВыгрузкаXMLБезСохранения.epf
33. Александр Медведев (anig99) 2490 10.06.11 16:18 Сейчас в теме
(32) поправил. Спутались версии, когда в прошлый раз редактировал.
34. Вадим Фролов (Eraser) 22.09.11 10:28 Сейчас в теме
Спасибо за комментарий.
35. Kostya Zhurov (It-developer) 20 24.11.11 15:15 Сейчас в теме
36. Kostya Zhurov (It-developer) 20 24.11.11 15:17 Сейчас в теме
Я еще контроль понатыкал на выгрузку обратно - чтоб ошибок в ECOD-e не было
37. Denis Ilin (vi.rus) 8 11.04.12 17:46 Сейчас в теме
{ВнешняяОбработка.ВыгрузкаXML.МодульОбъекта(208)}: Ошибка при вызове метода контекста (Выполнить)
Результат = Запрос.Выполнить().Выбрать();
по причине:
{(19, 2)}: Таблица не найдена "Справочник.КатегорииОбъектов"
<<?>>Справочник.КатегорииОбъектов КАК КатегорииОбъектов
38. seva seva (Восьмой) 15.11.13 12:41 Сейчас в теме
Спасибо за обработку, выручила.
39. DEN DEN (FKLDOZ) 6 12.10.16 09:39 Сейчас в теме

Идет ошибка:

{ВнешняяОбработка.ВыгрузкаXML.МодульОбъекта(509)}: Индекс находится за границами массива
ХМЛ.ЗаписатьНачалоЭлемента(ДеревоXML.Строки[0].ИмяУзла);


Бухгалтерия предприятия, редакция 2.0 (2.0.65.15)

В чем дело?
40. Александр Медведев (anig99) 2490 12.10.16 13:21 Сейчас в теме
(39) FKLDOZ, приложите скриншот схемы