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

27.02.18

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

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование SM По подписке [?] Купить один файл
ВыгрузкаXML_2
.epf 12,29Kb
344
344
5 SM
Скачать Купить за 3 050 руб.
ВыгрузкаXML_1
.epf 12,18Kb
200
200
5 SM
Скачать Купить за 3 050 руб.
Пример выгрузки
.rar 6,56Kb
54
54
1 SM
Скачать Купить за 1 850 руб.

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.

 

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

См. также

Перенос данных 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    138319    764    292    

405

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

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

28000 руб.

15.12.2021    21912    144    40    

104

Перенос данных 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 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

45650 руб.

15.04.2019    70483    174    146    

117

Перенос данных 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    62449    51    27    

81

SALE! %

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

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос в продаже с 2015г., и мы постоянно работаем над его развитием. Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

45650 27000 руб.

24.04.2015    192605    143    241    

274

Перенос данных 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    169822    294    253    

374

Перенос данных 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    184666    573    509    

516

Перенос данных 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    48536    208    64    

170
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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)Можешь выложить свою обработку?
Оставьте свое сообщение