gifts2017

Выгрузка документа в 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
594
.epf 58,39Kb 594 Бесплатно
РеализацияEDI_.sav
.sav 8,19Kb
15.05.11
121
.sav 8,19Kb 121 Бесплатно
ВыгрузкаXML_Версия_Без_Сохранения_В_Справочник Верси 0.7
.epf 57,02Kb
10.06.11
189
.epf 57,02Kb 189 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

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

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

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

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


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

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

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

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

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

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

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

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




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

Идет ошибка:

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


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

В чем дело?
40. Александр Медведев (anig99) 12.10.16 13:21
(39) FKLDOZ, приложите скриншот схемы
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа