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

27.02.18

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

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

Скачать файл

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

Наименование По подписке [?] Купить один файл
Выгрузка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.

 

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

См. также

SALE! 15%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    144718    839    297    

434

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

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

35000 руб.

23.07.2020    55006    249    73    

203

SALE! 10%

Перенос данных 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 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    73645    195    154    

131

SALE! 10%

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

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

53111 47800 руб.

03.12.2020    37862    103    69    

98

SALE! 10%

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

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

48278 43450 руб.

25.02.2015    172756    310    260    

386

SALE! 10%

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

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

55778 50200 руб.

24.04.2015    196916    157    244    

287

Перенос данных 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, почту.

16260 руб.

18.02.2016    188436    611    533    

532

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

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

35000 руб.

15.12.2021    25555    181    52    

138
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 159 09.03.16 11:46 Сейчас в теме
Обработка начинает работать, что-то делает. Затем 1с выбрасывает без объяснения причин.
Пробовал дважды.
Жаль что не работает.
20. нормальный такой 93 16.03.16 12:22 Сейчас в теме
(19) pvlunegov, может у вас оперативной памяти не хватает?
выберите период поменьше.

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

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


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

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