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

Обработки - Обработка документов

60
Обновлено до версии 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 и системе покупателя.

 

 

60

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

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

См. также

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

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

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

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


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

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

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

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

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

27. iov 365 10.06.11 15:57 Сейчас в теме
{Форма.Форма.Форма(40,27)}: Переменная не определена (ТиповыеОтчеты)
ТаблицаВариантовОтчета = <<?>>ТиповыеОтчеты.ПолучитьТаблицуДоступныхВариантов(ТиповыеОтчеты.ПолучитьИдентификаторОбъекта(ЭтотОбъект), глЗначениеПеременной("глТекущийПользователь"));
{Форма.Форма.Форма(40,75)}: Переменная не определена (ТиповыеОтчеты)
ТаблицаВариантовОтчета = ТиповыеОтчеты.ПолучитьТаблицуДоступныхВариантов(<<?>>ТиповыеОтчеты.ПолучитьИдентификаторОбъекта(ЭтотОбъект), глЗначениеПеременной("глТекущийПользователь"));
30. anig99 2633 10.06.11 16:02 Сейчас в теме
(27)(28) Как я уже сказал, "ВыгрузкаXML_Версия_Без_Сохранения_В_Справочник.epf" лишена части функционала, но зато ошибок не выдает
31. iov 365 10.06.11 16:03 Сейчас в теме
(30) как я уже сказал именно её я скачал и она эти ошибки и выдает
28. iov 365 10.06.11 15:58 Сейчас в теме
29. iov 365 10.06.11 16:01 Сейчас в теме

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

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




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

Идет ошибка:

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


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

В чем дело?
40. anig99 2633 12.10.16 13:21 Сейчас в теме
(39) FKLDOZ, приложите скриншот схемы
41. aikosyapr 25 24.05.18 22:25 Сейчас в теме
Огромное спасибо! Кучу времени сэкономило
Оставьте свое сообщение