Загрузка информации из внешних данных с помощью конфигурации "Конвертация данных"

Публикация № 16316

Обмен - Загрузка и выгрузка в Excel

375
Обработка, позволяющая создавать правила обмена в конфигурации "Конвертация данных 2" и загружать данные из файлов Excel, DBF, CSV, XML и любых источников, поддерживающих интерфейс ADO. Имеет обычную и управляемую форму.

Файл с данными (например Excel) рассматривается как конфигурация базы данных 1С, состоящая из справочников - их можно перенести как набор объектов в справочник "Конфигурации" конвертации данных. Соответственно можно типовым способом создавать правила конвертаций. Причем конфигурация "Конвертация данных 2" не изменяется и может обновляться на новые версии.

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

Идея обработки взята из //infostart.ru/projects/2060/, но код свой. Сам по себе механизм работает у меня уже давно (XML правила менялись на основе шаблонов), однако возможность автоматической загрузки в конвертацию данных резко увеличивает возможности. Человек, умеющий работать с конвертацией данных, может визуально настроить любые правила переноса.

Обработка содержит механизмы:
• Выгрузка структуры внешних файлов, как типовой XML-файл структуры конфигурации. Этот файл должен быть загружен в конфигурацию КД.
• Возможность хранения файла правил в макете обработки.
• Загрузка правил обмена, выбор правил выгрузки и ввод параметров.
• Возможность предварительной обработки источника данных, осуществляемой после загрузки файла правил и до получения данных.
• Загрузка данных из внешних источников по алгоритмам, описанным в файле правил обмена.
• Редактирование данных в табличных полях в случае необходимости небольшой ручной правки (для обычных и управляемых форм).
• Создание файла данных в стандартном формате XML.
• Загрузка данных из XML файла данных. Кроме того, для этого может использоваться стандартная обработка загрузки, как в версии 1С77, так и 8.0-8.1. В упрощенном для пользователя режиме загрузки последние два пункта объединены и выполняются автоматически при нажатии на одну кнопку.

• В модуль обработки добавлены функции, позволяющие использовать обработку из скриптов или других программ, когда 1С открывается как COM-объект V82.Application.
• Используя специальный файл описаний можно запускать обработку с ключом /EXECUTE

=================================

07.09.2008 Вер.4.2.1 Добавлена поддержка ADO.

14.09.2008 Вер.4.2.2 Если обработка открывается в конфигурации "Конвертация данных", можно показать тексты событий для конкретной конвертации

08.12.2008 Вер.4.2.3
- Добавлен пример загрузки данных в табличную часть документа/справочника.
- В случае загрузки в формате Excel есть возможность автоматического заполнения имен/описаний и типов колонок файла данных.

16.12.2008 Вер.4.2.4
- Обработка обновлена до версии 2.0.26.1 типовой V8Exchan81.epf (появилась возможность отладки обработчиков событий). 
- Дополнено описание.

26.12.2008 Вер. 4.2.7
- Добавлена возможность предобработки источника данных

17.01.2009 Вер. 4.2.8
- Анализ структуры метаданных может осуществляться из существующего файла XML.

25.02.2010 Вер.4.3.1

- Добавлена поддержка XML.

30.03.2010 Вер. 4.3.2
Загрузка из XLS: разрешено использование пробелов в именах листов файла excel

10.10.2010 Вер. 4.3.4
Загрузка с помощью DBF: позволяет работать с длинным именем файла DBF

15.12.2010 Вер. 4.3.8
Загрузка с помощью XML: добавлена проверка на уникальность реквизитов

25.12.2010 Вер. 4.4.1
Выгрузка структуры метаданных: поддерживается 2 формата, старый формат и формат, начиная с версии КД 2.1.4

01.11.2011 Вер. 4.4.8
Изменения в настройках загрузки через ADO

03.01.2013 Вер.5.1.1

Принципиально изменено получение данных из разных источников. Сейчас каждый вариант - это внешняя обработка, сохраненая в макете в виде двоичных данных.
Это изменение дает новые возможности:
- использование обработки в управляемом приложении в тонком клиенте. Добавлена управляемая форма;
- самостоятельное использование обработок загрузок данных для получения таблиц значений из разных источников;
- в конвертации данных можно использовать типовую обработку "Универсальный обмен данными XML", если вставить обработку загрузки данных как подключаемую.  

Нужно иметь в виду, что в случае клиент-серверной конфигурации обработка источника данных ведется на сервере. Поэтому необходимо обеспечить доступность данных. Например, установленный MS Office для обработки Excel, или верный путь к источнику данных в случае ADO. 

05.01.2013 Вер. 5.1.2
В управляемой форме есть воможность просмотра загруженных внешних данных

08.02.2013 Вер. 5.1.3
Загрузка с помощью XLS: Исправлена ошибка. Excel оставался в памяти.

28.10.2013 Вер. 5.2.1

Сериализация ТЗ с данными может осуществляться двумя способами: как хранилище значения (более компактно), XML сериализация (занимает больше места, однако ТЗ можно подправить прямо в обработчике, не меняя структуры конфигурации).

В модуль обработки добавлены функции, позволяющие использовать обработку из скриптов или других программ, когда 1С открывается как COM-объект V82.Application.

Используя специальный файл описаний можно запускать обработку с ключом /EXECUTE

14.09.2015 Вер. 5.3.1
Управляемая форма обработки изменена для использования в безмодальном режиме. 

23.11.2015 Вер. 5.3.3
Добавлена процедура СведенияОВнешнейОбработке() для использования обработки как внешней.


 

375

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

Наименование Файл Версия Размер
Все файлы в архиве (последняя версия обработки под 8.2 от 28.10.2013)
.zip 1,94Mb
15.10.15
446
.zip 5.2.1 1,94Mb 446 Скачать
Все файлы в архиве (текущая версия для платформы 8.3 от 23.11.2015)
.zip 2,51Mb
25.11.15
103
.zip 5.3.3 2,51Mb 103 Скачать
Все файлы в архиве (последняя версия обработки под 8.1 от 01.11.2011)
.rar 1,11Mb
03.01.13
2616
.rar 1,11Mb 2616 Скачать
Описание (25.02.2010)
.pdf 742,31Kb
13.02.12
1275
.pdf 742,31Kb 1275 Скачать бесплатно
Файлы примеров (15.12.2010)
.rar 64,29Kb
15.10.15
1097
.rar 64,29Kb 1097 Скачать бесплатно
V8ExchanFull.2.0.24.1 (08.12.2008)
.1229456405 346,61Kb
13.02.12
344
.1229456405 346,61Kb 344 Скачать

См. также

Специальные предложения

Комментарии
Избранное Подписка Сортировка: Древо
1. ValentinV 03.09.08 10:03 Сейчас в теме
На первый взгляд труд славный, достойный уважения.
Интеграция систем всегда приветствуется.
Буду тестировать.
2. WiseSnake 1783 03.09.08 14:46 Сейчас в теме
За то что меня не забыл спасибо ;)
Но у меня вопрос. Хотел потестить обработку, но не смог выбрать папку с данными. Так можно только из 1го файла грузить или я что то не так делаю?
4. K_A_O 522 03.09.08 23:32 Сейчас в теме
(2) Можно выбрать только один файл. В принципе, в старой версии у меня была обработка папок - но сейчас перевожу на новый формат то, что мне требуется. С папками задачи реже - лучше наверно добавлю форму загрузки по ADO.

Пока обновил обработку - изменены формы загрузки из одного файла DBF и одного файла CSV.
3. DeepDiver 5 03.09.08 19:00 Сейчас в теме
Класс! Штковина реально помогла...
5. WiseSnake 1783 04.09.08 01:10 Сейчас в теме
Ну не знаю... значит у тебя другие задачи... У меня ни одной задачи не было чтобы только из одного файла грузить, да и смысла в написании правил тогда мало. Вот если бы ты сделал из многих файлов. А так, извини, но для меня она бесполезна
6. K_A_O 522 07.09.08 22:37 Сейчас в теме
(5) Папку с несколькими файлами DBF можно открыть с помощью ADO. В файлах примеров выложил настройку.
7. ОРС 09.09.08 09:09 Сейчас в теме
Да надо бы потестить........
9. rhtr 65 26.12.08 00:04 Сейчас в теме
Надо глянуть А вот насчет Папки с несколькими файлами это ХОРОШО.
10. manoff 4 31.03.09 01:41 Сейчас в теме
Господа, а есть ли возможность при помощи данной обработки из произвольного XML файла структуру загрузить? Или может какие еще методы знаете?
11. K_A_O 522 31.03.09 07:55 Сейчас в теме
(10) Пока, с помощью предобработки источника данных. XML файл разбирается, преобразуется, например, в CSV, а дальше загружается обычным образом.
Я все хочу вставить поддержку XML - но времени не хватает.
18. K_A_O 522 25.02.10 22:41 Сейчас в теме
(10) добавлена загрузка из файла XML
12. manoff 4 31.03.09 08:26 Сейчас в теме
Ясно :( А можно подробнее как из XML сделать CSV ?
13. K_A_O 522 31.03.09 09:14 Сейчас в теме
(12) Механизмов-то работы с XML много. Можно с помощью XLST преобразования. Ну или ЧтениеXML

Текст = Новый ЗаписьТекста("d:\test.csv", КодировкаТекста.ANSI);
ЧтениеXML = Новый ЧтениеXML;
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента И
ЧтениеXML.ЛокальноеИмя = "НужноеИмя" тогда
Поле1 = ЧтениеXML.ПолучитьАтрибут("Поле1");
Поле2 = ЧтениеXML.ПолучитьАтрибут("Поле2");
Текст.ЗаписатьСтроку(Поле1+";"+Поле2);
КонецЕсли ;
КонецЦикла;
Текст.Закрыть();
14. manoff 4 31.03.09 09:19 Сейчас в теме
Спасибо большое - поэкспериментируем! Было бы не плохо все-таки увидеть такую возможность в обработке - замечательная вещь!
15. octoberhammer 08.10.09 19:16 Сейчас в теме
Я прошу прощения, я вот в конце концов создал файл правил в базе КД2.0, а собственно файл данных какой - так и остается Excel'вский или должен появиться xml? Если первое, то в базе-приемнике обработка пишет "Не найден файл данных " если второе - то я каким-то образом пропустил в какой момент он у нас появляется... просвятите, плиз
16. K_A_O 522 14.10.09 21:32 Сейчас в теме
(15) Загрузка ведется из файла excel. Необходимо не забыть вставить созданный обработкой текст после загрузки правил обмена.
17. octoberhammer 15.10.09 10:03 Сейчас в теме
да я уже разобрался.. Это из-за того, что скажем mxl файл сохраняется сразу в лист ексель, а нужно в книгу с листами... И тогда все происходит корректно
19. Alef 04.03.10 09:59 Сейчас в теме
В названиях листов нельзя указывать пробелы, выдается ошибка с кодом 0x8002000b
20. K_A_O 522 04.03.10 14:26 Сейчас в теме
21. konfed 16.06.10 11:42 Сейчас в теме
Автор, подскажите , как посмотреть источник, что Вас вдохновил:
http://infostart.ru/projects/2060/ - Публикация не найдена
22. K_A_O 522 16.06.10 15:22 Сейчас в теме
24. Makcum32 24.12.10 17:56 Сейчас в теме
Автор, большое спасибо, будем тестить.
25. K_A_O 522 25.12.10 11:36 Сейчас в теме
25.12.2010 Вер. 4.4.1
Выгрузка структуры метаданных: поддерживается 2 формата, старый формат и формат, начиная с версии КД 2.1.4
26. Arin 29.09.11 18:16 Сейчас в теме
27. Bruk 50 20.10.11 12:05 Сейчас в теме
Спасибо !!! очень полезная разработка, думаю в дальнейшем пригодиться!
28. shkl1 1 25.10.11 12:05 Сейчас в теме
Автор молодец. Интересное решение.
29. Масянька 05.11.11 01:26 Сейчас в теме
В принципи идея не новая но ооочень инетресная.Спасибо за труд будем тестить.
30. Dimonis 08.11.11 15:50 Сейчас в теме
Присоединяюсь к 29 комментарию - спасибо, буду тестировать (и править при необходимости.
А необходимость всплывет).
31. che444 10.11.11 19:28 Сейчас в теме
Спасибо за труд и конечно +
32. Mudrii_Gankster 16.11.11 15:08 Сейчас в теме
Я так понимаю что благодаря данной обработке можно наплодить правил загрузки накладных от разных контрагентов и по правилам вливать их в базу. Супер +
33. soba 09.12.11 13:24 Сейчас в теме
Спасибо, отличная работа. Использую для обмена стандартной базы Агент+ (как промежуточной) и своей рабочей базы.
34. Скиминок 09.12.11 13:25 Сейчас в теме
Посмотрим. Должно быть интересно)
35. itit 12.12.11 12:21 Сейчас в теме
спасибоо и удобно решил перенос баз спасибо
36. soba 14.12.11 04:15 Сейчас в теме
Добавь, пожалуйста все одним файлом, а то по одному скачивать неудобно (с учетом баллов за скачку)
37. K_A_O 522 14.12.11 13:04 Сейчас в теме
(36) Там только обработка с доступом для пользователей, а разве тип доступа "Все" требует баллы?
38. soba 14.12.11 16:35 Сейчас в теме
(37) Как ни странно- требует. Без авторизации не дает скачивать, а с авторизацией снимает по баллу за файл
39. nll.jojo 20.01.12 15:18 Сейчас в теме
баллы жалко...можно одним файлом
40. kurmanov 10.02.12 11:58 Сейчас в теме
Обработка классная, но правда хотелось бы одним файлом, если можно
41. K_A_O 522 13.02.12 17:27 Сейчас в теме
43. Mishka_78 20.03.12 16:00 Сейчас в теме
Спасибо! Разработка помогла!
44. daho 8 21.03.12 08:21 Сейчас в теме
Все равно универсальных обработок не бывает.. только в самых простых случаях..
Но авторам спасибо.. Хорошая вещь, удивительно что еще и бесплатная...
45. electronik 26.03.12 17:07 Сейчас в теме
Буду тестировать но вещь полезная
46. vprus 09.04.12 18:39 Сейчас в теме
Спасибо за обработку. А может стоит добавить чтение папок с несколькими файлами, например, *.csv?
47. K_A_O 522 10.04.12 13:29 Сейчас в теме
(46) Есть специальный механизм предобработки. Можно подготовить нужные данные из этих csv, в зависимости от задачи. В архиве есть пример.
49. AlexKoso 17 21.05.12 08:20 Сейчас в теме
И как я раньше ее не видел?
50. Sairys 21.05.12 11:39 Сейчас в теме
Интересное творение. Во многих компаниях как правило сталкивался с интеграцией из одних систем в другие с помощью различных выгрузок и загрузок. Разных форматов файлов. А эта обработка как раз пригодиться для более быстрой обработки данных.
51. Region102 33 27.05.12 14:31 Сейчас в теме
А как механизм "Внешние источники данных"? А за работу респект!
52. K_A_O 522 27.05.12 19:36 Сейчас в теме
(51) Смысл обработки в возможности использовать таблицы значений как справочники в структуре конвертации данных. А это позволяет визуально настраивать сложные загрузки.

Все равно большинство данных приходится хранить в объектах 1C, ну например, если база распределенная, опасно строить отчеты по внешним источникам, безопаснее загрузить в регистр сведений. Но я собирался добавить в данную обработку возможность получать данные из внешних источников, не через ADO. Но пока этот механизм у 1С недоработан, чуть более сложные запросы не работают. А скорость ADO + GameWithFire на клиенте больше.

Даже с учетом перехода на работу на сервере и в УФ, "Внешние источники данных" пока могут занимать крайне узкую нишу, если вы можете изменить свою конфу, получать простые данные всегда из одних таблиц, и нет необходимости загружать их в объекты 1С.
53. Serg3141 10 28.05.12 15:29 Сейчас в теме
При попытке выгрузки метаданных из внешнего файла через ADO и создании файла с расширением udl и содержимым, указанным в инструкции выскакивала ошибка: "Ошибка при установке значения атрибута контекста (ActiveConnection): Произошла исключительная ситуация (Microsoft OLE DB Service Components): Недопустимый составной файл"
(сначала выскакивала ошибка на функции "сообщить", пока я через конфигуратор не удалил второй параметр с тремя восклицательными знаками полностью). Исправил я ситуацию так: на созданном файле с расширением udl щелкнул правой кнопкой и выбрал диалог свойств. Далее - закладка "Соединения", переключатель в положение "использовать строку соединения" и кнопка "Сборка". Затем спокойно настроил источник данных - для программеров по крайней мере там все интуитивно понятно. После сохранения всех изменений выбрал получившийся файл. Все стало нормально. У меня ОС Wındows 7, 64-бит (если это играет какую-то роль). Содержимое файла udl такое:
[oledb]
; Everything after this line is an OLE DB initstring
Provider=MSDASQL.1;Persist Security Info=False;Extended Properties="DSN=DataExcel;DBQ=C:\1C\trade\ОбразецДанных.xls;DefaultDir=C:\1C\trade;DriverId=790;FIL=excel 8.0;MaxBufferSize=2048;PageTimeout=5;"

Но, я думаю, логично будет в инструкции указать способ получения такого файла - это спасет некоторое время пользователей и отведет подозрения в неработоспособности от обработки :-)

с ув. Сергей
54. K_A_O 522 28.05.12 20:24 Сейчас в теме
(53) Хорошо, исправлю инструкцию, действительно, файл udl стоит собирать средствами Windows для использования на конкретном компьютере.
55. Serg3141 10 31.05.12 23:41 Сейчас в теме
разобрался, из файла в формате excel с помощью ADO в конфигурации "Управление торговлей 11" формируются элементы для нескольких справочников и ряд документов. Огромное спасибо за удобный инструмент, вполне возможно, что он мне сэкономит много времени.
56. Jonny_wk 17.06.12 19:43 Сейчас в теме
Как заработаю здешние money - обязательно скачаю! :)
57. Wladymyr 18.06.12 18:47 Сейчас в теме
спасибо автору за проделаной труд, полезная вещь
58. sr5 11.09.12 13:16 Сейчас в теме
K_A_O, не подскажите, можно настроить Вашу обработку под работу с tps - файлами (ПУ5)? Не в курсе, 1С может работать с такими базами данных?
59. K_A_O 522 11.09.12 14:58 Сейчас в теме
Через ODBC можно.

Это формат Clarion, я попробовал скачать драйвер ODBC c http://www.hardforum.ru/upload/TopspeedODBC.zip
Файлы кладр считывает нормально. Но не знаю, как будет другими файлами ПУ5, возможно там пароль стоит.
Ну тогда можно делать экспорт в DBF.
60. vahate 04.10.12 12:27 Сейчас в теме
очень интересует обработка для перехода (переноса) с Розница 1.0 для Украины (от российской почти ничем не отдичается) на Розница 2.0 для России.
61. K_A_O 522 03.01.13 16:12 Сейчас в теме
Принципиально изменено получение данных из разных источников. Сейчас каждый вариант - это внешняя обработка, сохраненая в макете в виде двоичных данных.
Это изменение дает новые возможности:
- использование обработки в управляемом приложении в тонком клиенте. Добавлена управляемая форма;
- самостоятельное использование обработок загрузок данных для получения таблиц значений из разных источников;
- в конвертации данных можно использовать типовую обработку "Универсальный обмен данными XML", если вставить обработку загрузки данных как подключаемую.

Нужно иметь в виду, что в случае клиент-серверной конфигурации обработка источника данных ведется на сервере. Поэтому необходимо обеспечить доступность данных. Например, установленный MS Office для обработки Excel, или верный путь к источнику данных в случае ADO.
62. kovgard 148 07.02.13 00:24 Сейчас в теме
Супер! Только нужно добавить код, чтобы Excel закрывался после считывания данных, а то всю память у компа съел пока занимался отладкой правил.
63. K_A_O 522 08.02.13 16:56 Сейчас в теме
(62) Да, действительно, в одном из добавлений ошибку внес. Обновляю на исправленный вариант.
64. TbSasha 16.05.13 08:47 Сейчас в теме
А нет ни у кого правил для загрузки прайсов в УТ 11? Я может даже купил бы если не дорого.
65. ccserg 68 01.10.14 19:05 Сейчас в теме
66. labirk 11 02.12.16 15:38 Сейчас в теме
Отличная обработка, да еще и в комплекте с подробной справкой. Спасибо автору!
67. zul333 30 04.12.17 10:57 Сейчас в теме
Здравствуйте, Андрей.
Застрял на загрузке дополнительных свойств объектов...
Загружаю данные в конфигурацию Документооборот, а там все наши реквизиты реализованы через механизм дополнительных свойств.
Подскажите пожалуйста как загрузить много дополнительных свойств сразу.
68. K_A_O 522 04.12.17 19:56 Сейчас в теме
(67) Добрый день. В конвертации надо указать правила Справочник - РегистрСведений ЗначенияСвойствОбъектов. Обработка ведь просто имитирует справочник.
69. zul333 30 05.12.17 04:42 Сейчас в теме
70. zul333 30 05.12.17 08:52 Сейчас в теме
(68) +(69) Эх! А вот если загружаемое значение не является значением справочника ЗначенияСвойствОбъектов, а, например, датой - не грузится.... :-)
В общем одновременно и то и другое не получается грузить...
71. K_A_O 522 05.12.17 14:46 Сейчас в теме
(70)
Вообще конвертация с этим справляется. Если в ПКО регистра сведений ЗначенияСвойствОбъектов в ПКС "Значение" не указывать правило - пытается выбрать сама.
Для значений справочника ЗначенияСвойствОбъектов, если сама не понимает можно указать кодом в ПередВыгрузкой, что-нибудь типа: если {проверим, что это справочник} тогда ИмяПКО = "ЗначенияСвойствОбъектов" конецесли;
Оставьте свое сообщение