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

27.02.18

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

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

Файлы

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

Наименование Скачано Купить файл
ВыгрузкаXML_2
.epf 12,29Kb
345 3 050 руб. Купить
ВыгрузкаXML_1
.epf 12,18Kb
200 3 050 руб. Купить
Пример выгрузки
.rar 6,56Kb
55 1 850 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

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! 10%

Перенос данных 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 24894 руб.

12.06.2017    153186    897    302    

463

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 | Можно проверить на вашем сервере перед покупкой

61356 55220 руб.

15.04.2019    79145    213    163    

152

SALE! 10%

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

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

58422 52580 руб.

03.12.2020    42154    121    75    

114

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" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

52967 47670 руб.

25.02.2015    178296    328    275    

396

SALE! 10%

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

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

38000 34200 руб.

15.12.2021    29886    214    58    

159

SALE! 10%

Перенос данных 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.24.x).

38000 34200 руб.

23.07.2020    61886    290    81    

230

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

Федеральная таможенная служба России давно поддерживает унифицированный формат электронных документов для обмена с информационными системами предприятий. xmlns="urn:customs.ru:Information:ExchangeDocuments:". Структура, утвержденная комиссией Таможенного союза. Осталось только сделать загрузку в 1С из этого формата. На выходе - два документа ГТД по импорту и Поступление (акты, накладные) Обработка актуализирована на начало 2025 года

4800 руб.

09.08.2016    89082    333    378    

92

SALE! 10%

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

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

61356 55220 руб.

29.10.2018    59238    68    121    

67
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 160 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 33 10.04.19 13:52 Сейчас в теме
(21)Можешь выложить свою обработку?
Для отправки сообщения требуется регистрация/авторизация