Выгрузка документов в XML (любая конфигурация)

27.02.18

Интеграция - Файловый обмен (TXT, XML, DBF), FTP

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

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

Наименование Файл Версия Размер
ВыгрузкаXML_2
.epf 12,29Kb
344
.epf 12,29Kb 344 Скачать
ВыгрузкаXML_1
.epf 12,18Kb
199
.epf 12,18Kb 199 Скачать
Пример выгрузки
.rar 6,56Kb
54
.rar 6,56Kb 54 Скачать

01.04.2013 Новая версия файла 

в прошлой версии при выгрузке иерархических справочников, наблюдалось задвоение корневых папок.

(спасибо Jkey, дал пинка, что бы исправить "баг")

 

Интро:

Поставлена абстрактная задача по выгрузке документов из любой конфигурации 1С:Предприятие 8.2 с возможностью отбора по типу, дате и состоянию документа (Проведен, Удален), в xml файл.

Файл должен содержать две основные секции: «Справочники» и «Документы». Каждый выгружаемый в файл объект (элемент справочника или документ) должен иметь уникальный во всем файле идентификатор (id). Во время всех выгрузок объект должен иметь один и тот же идентификатор.

В секции «Справочники» должны располагаться вложенные секции, названия которых совпадают с названием «Вида» справочника, как он задан в конфигурации.

Если элемент справочника является группой, тогда он располагается в элементе файла, имеющем название «Группа». Если  элемент справочника не является группой, тогда он располагается в элементе с названием «Элемент».

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

Если реквизит справочника имеет тип «Справочник» или «Документ», тогда он должен быть помещен в соответствующую секцию файла выгрузки согласно правилам выгрузки элементов справочников, а использование данного значение реквизита должно быть заменено значением id данного объекта. Если реквизит справочника имеет примитивный тип (строка, число, булево) или «Перечисление», тогда значение реквизита сразу помещается в файл. 

Обязательные поля для Справочников:

  • Id – уникальный идентификатор элемента.
  • Код – код элемента справочника.
  • Наименование – наименование элемента справочника.
  • Родитель – элемент справочника, который расположен на уровень выше по отношению к данному элементу.
  • Владелец -  элемент справочника или документ, которому подчинен данный элемент справочника.
  • Состояние – состояние элемента справочника, которое может принимать значение «записан» или «удален».
Обазательные поля для Документов:
  • Id – уникальный идентификатор документа
  • Номер – номер документа
  • Дата – дата документа
  • Состояние – состояние документа (может принимать значение «проведен», «записан» или «удален»).

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

В данной статье не будут разбираться правила выгрузки в xml, приведу как пример один интересный курс  "Средства интеграции и обмена данными в системе 1С:Предприятие 8".

Можно выделить пару методов решения.

  • - самый популярный и широко рассматриваемый - это создание в конфигурации собственной схемы XDTO. Её необходимо создать (да-да, т.е внести изменения в конфигурацию, но её потом можно экспортировать и используя её загружать в куда-нибудь, например на сайт), определить в ней все интересующие нас объекты, атрибуты объектов, описать типы используемые объектами и далее, используя так называемую "Объектную модель XML", выгружать данные.
  • - самый тривиальный, ему мало уделяют времени, потому что он очень простой, его можно даже не заметить (его-то я и использовал). Мы просто последовательно рекурсивным (или просто циклом) обходом выполняем запись в файл XML. Это не очень хороший метод с точки зрения загрузки данных (если мы выгружаем данные, значит это кому-нибудь нужно (с) ).
  • чуть наврал, есть и 3й... в 1С 82 есть встроенные методы выгрузки объектов в xml, на основе собственных схем XDTO, которые уже включают все описания, но этот метод подходит только для выгрузки/загрузки в идентичные конфигурации, что встречается крайне редко... его я не стал использовать, потому как все элементы и атрибуты выгружаемого объекта будут иметь уже заложенные имена, и они не совпадают с именами реквизитов объекта(они вообще в английском представлении), а нам ведь нужно использовать "свои собственные" имена как в конфигураторе.

Приступим...

Решение задачи выполнено с использованием, так сказать, "базовых понятий" о записи XML, с выполнением последовательной записи. Объектная модель XML использоваться не будет.

Основной объект - это ЗаписьXML. Создаем новый объект и используем методы ЗаписатьНачалоЭлемента() и ЗаписатьКонецЭлемента(), так и будет. Все! 

Так как будет выгружаться 2 раздела, то необходимо их объединить одним общим корневым элементом (у меня это "Корень"). После идет описание Справочником, и потом Документов.

На форме расположены основные элементы управления:

  • Тип объекта (При открытии формы получаем список всех типов документов и загружаем в СписокЗначений)
  • НачалоПериод и КонецПериода
  • Булевские флаги "Проведен", "Удален", для возможности отбора по состоянию документа
  • и Каталог выгрузки,

В поле Каталог выбирается именно каталог, файл формируется с именем 

 ИмяФайла = Каталог+Формат(ТекущаяДата(),"ДФ=ddMMMM")+".xml";

 

Краткое описание алгоритма:

  • Запросом выбираем документы .
  • Рекурсивно получаем все типы Справочников и Документов(при выгрузке остальные типы преобразуются в строку) всех реквизитов из образовавшегося "дерева" и заполняем ими списки значений, для справочников и документов свои списки значений.
  • Рекурсивно получаем все ссылочные Значения всех реквизитов.
  • Далее проводим последовательную иерархическую запись сначала Справочников(снова рекурсия, ну а как иначе), предварительно сформировав один большой запрос, для того что бы в цикле не обращаться к базе, а использовать пакеты.
  • И после производим запись документов.

Я считаю интересным моментом, получение имен реквизитов и табличных частей и реквизитов ТЧ, с последующей обработкой.

После записи выводится сообщение.

Внешнюю обработку я создавал с Обычной неуправляемой формой, для обычного толстого клиента, на платформе 8.2.15.

Тестировал на Демо конфигурации УТ 10.3.

 

Это моя первая публикация, надеюсь кому нибудь пригодится. Принимаю любую критику. Удачи.

См. также

SALE! 15%

Синхронизация и обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    137256    747    292    

399

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

34650 руб.

15.04.2019    69739    172    143    

113

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3.87.x и УТ 11.5.16.x

28000 руб.

23.07.2020    47850    207    64    

169

[ED2] Обмен УПП 1.3, КА 1.1, УТ 10.3 с EnterpriseData (универсальный формат обмена), обработка

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Платформа 1C v8.2 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 2, УНФ 1.6 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

14580 руб.

18.02.2016    183998    570    509    

513

Переход и перенос данных из УПП 1.3 в ERP 2.5, КА 2.5. Переносятся документы (обороты за период), справочная информация и остатки

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 Бухгалтерский учет Управленческий учет Платные (руб)

Переход и перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:ERP Управление предприятием 2.5 и 1С:Комплексную автоматизацию 2.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.227.x), ERP 2.5 (2.5.16.x), КА 2.5 (2.5.16.x) .

28000 руб.

24.06.2020    61924    47    27    

78

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

43450 руб.

03.12.2020    34969    84    59    

82

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.227.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    21361    138    40    

97

Перенос данных из УПП 1.3 / КА 1.1 в БП 3. Переносятся документы, справочники и начальные остатки

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

В продаже с 2015 года | Воспользовались более 287 предприятий! | Перенос данных из УПП 1.3 в БП 3.0 | из КА 1.1 в БП 3.0 | Переносятся документы, начальные остатки и вся справочная информация | Сэкономьте свое время - используйте готовое решение для перехода! | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: Управление производственным предприятием 1.3" / "1С:Комплексная автоматизация 1.1" на "1С:Бухгалтерия предприятия 3.0" с помощью наших правил конвертации будет максимально комфортным! | Над развитием алгоритмов и улучшением качества переноса Можно бесплатно проверить перенос на вашем сервере!

39500 руб.

25.02.2015    169234    292    251    

373
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. GoodWinSpr 402 22.10.12 14:03 Сейчас в теме
чем отличается от ВыгрузкаЗагрузкаДанныхXML82 с диска ИТС?
Прикрепленные файлы:
ВыгрузкаЗагрузкаДанныхXML82.epf
2. пользователь 22.10.12 14:05
Сообщение было скрыто модератором.
...
3. DimaP 64 22.10.12 22:07 Сейчас в теме
чем отличается от ВыгрузкаЗагрузкаДанныхXML82 с диска ИТС?
KoC_one; synelf; mgmac; +3 1 Ответить
4. absolutblohin 24.10.12 17:39 Сейчас в теме
чем ВыгрузкаЗагрузкаДанныхXML82 отличается от диска с ИТС?
5. нормальный такой 93 25.10.12 11:26 Сейчас в теме
пардоньте, в отпуске был.
сейчас проверю, отпишу.
6. нормальный такой 93 25.10.12 11:44 Сейчас в теме
нуу. в целом "ВыгрузкаЗагрузкаДанныхXML82 с диска ИТС" кошерна и крута.
это её главное отличие, и + что при выгрузке используется "встроенную" схему XDTO. получается что все реквизиты имеют свои 1совские хитрые имена.

в моем решении имена реквизитов и выгружаемых объектов соответствуют именам метаданных в конфигурации.
что и соответствует требованию в абстрактном задании.

а так да, ВыгрузкаЗагрузкаДанныхXML82 она отлична, и скорее всего, предназначена для обмена между идентичными конфигурациями.
7. Jkey 14 29.03.13 14:53 Сейчас в теме
Интересное решение. Хотя всегда действительно пользуюсь ВыгрузкаЗагрузкаДанныхXML82.
9. нормальный такой 93 29.03.13 15:02 Сейчас в теме
(7) Jkey, в описании сказано что это абстрактная задача, поэтому такое вот решение)

да, универсальная обработка хороша.
8. Jkey 14 29.03.13 14:56 Сейчас в теме
Артур ты случайно не с Ёбурга? :)
10. нормальный такой 93 29.03.13 15:04 Сейчас в теме
(8) Jkey, нет)
но задание было от организации из екб )
11. Jkey 14 29.03.13 15:06 Сейчас в теме
догадываюсь из какой.. :)
12. YuraLu 25.05.13 19:47 Сейчас в теме
Между торговлей и розницей можно справочники перегнать?
И между розницей и бухгалтерией?
13. нормальный такой 93 25.05.13 21:34 Сейчас в теме
(12) YuraLu, нет, нельзя.
воспользуйтесь конвертацией данных, или если Вам нужна такая обработка, можно сделать индивидуально.

То что внутри этой статьи - это решение поставленной(описаной) задачи, не более.
14. A2004333 7 27.05.13 21:04 Сейчас в теме
Артур, так ведь техзадание у вас не выполнено в отличие от моей обработки. :-)
http://infostart.ru/public/186667/
15. A2004333 7 27.05.13 21:05 Сейчас в теме
Вам то что сказали в организации, которую мы оба знаем, про вашу обработку?
16. нормальный такой 93 27.05.13 23:09 Сейчас в теме
(15) A2004333, это вполне стандартная задача на собеседовании (и не факт что я знаю в какой организации вы его получили), надеюсь вам помогло мое решение в реализации вашего "правильного".

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

и подскажите, почему в вашем варианте выгружается меньше элементов (я сравнивал выгрузку всех проведенных реализаций в демо УТ10.3), вы уверены что не потеряли ссылки на нужные элементы и не забыли их выгрузить?
17. Odinsov 11 02.04.14 13:38 Сейчас в теме
18. kwl 134 10.06.14 13:43 Сейчас в теме
Хорошая обработка и нужная
19. pvlunegov 158 09.03.16 11:46 Сейчас в теме
Обработка начинает работать, что-то делает. Затем 1с выбрасывает без объяснения причин.
Пробовал дважды.
Жаль что не работает.
20. нормальный такой 93 16.03.16 12:22 Сейчас в теме
(19) pvlunegov, может у вас оперативной памяти не хватает?
выберите период поменьше.

Обработка очень старая, у вас все условия соблюдены?
Внешнюю обработку я создавал с Обычной неуправляемой формой, для обычного толстого клиента, на платформе 8.2.15.

Тестировал на Демо конфигурации УТ 10.3.


Жаль что у Вас не работает.
21. Alexander.Shvets 222 27.06.18 18:52 Сейчас в теме
Хотел + поставить, промазал случайно. Возвращаю карму на место. =)

Правда в самой обработке совершенно не обработаны общие реквизиты. Допилил уже сам + перевел упр. формы. А так - для ленивых сойдет! =)
22. vis_tmp 32 10.04.19 13:52 Сейчас в теме
(21)Можешь выложить свою обработку?
Оставьте свое сообщение