gifts2017

Универсальный обмен данными между одинаковыми конфигурациями через XML файл

Опубликовал Сергей Яхонтов (newbas) в раздел Обмен - Обмен через XML

Обработка осуществляет выгрузку документов и подчиненных объектов в XML и последующую загрузку.

Обработка ВыгрузкаXML.ert осуществляет выгрузку данных в XML

Обработка ЗагрузкаXML.ert соответственно загрузку. Обновлено 21.12.2009 (критическая ошибка)

Структура баз должна быть одинакова. Писалась довольно давно, часто переписывалась, последний раз для получения навыков работы с метаданными. Корректно обрабатывает значения реквизитов неопределенного типа, убирает кракозябры (символы с кодом <32) из текстовых строк.

Для синхронизации справочников использует код, наименование или первый реквизит с признаком "Отбор", документы - номерДок + ДатаДок.

Есть недоработки:

  1. не переносится история периодических реквизитов (легко доделать, просто не нужно было) исправлено
  2. если синхронизация осуществляется по наименованию и есть группа с таким же наименованием, как и элемент - то скорее всего найдет группу вместо элемента.
  3. Выгрузка XML открывается без ошибок компиляции только в бухгалтерии

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

Наименование Файл Версия Размер Кол. Скачив.
-
.ert 198,00Kb
15.12.09
1643
.ert 198,00Kb 1643 Скачать
-
.ert 40,00Kb
21.12.09
1757
.ert 40,00Kb 1757 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. rasswet (rasswet) 29.04.09 08:54
"есть группа с таким же наименованием, как и элемент - то скорее всего найдет группу вместо элемента." ну это можно же было пофиксить без проблем...
2. Дмитрий Иванов (ChessCat) 29.04.09 10:06
а чем от типовой обработки отличается ?
3. Андрей (akat65) 29.04.09 11:14
Операции введенные в ручную НЕ ВЫГРУЖАЕТ.
4. Андрей (akat65) 29.04.09 11:17
Пометка(отметка документов кнопки внизу) работает? У меня бух.502 НЕТ ??
5. Андрей (akat65) 29.04.09 11:25
Платежное поручение ВЫГРУЖАЕТСЯ ?........
6. Ильшат Сагитов (Ильшат71) 30.04.09 00:41
Действительно, операции введенные вручную не выгружает.
7. Сергей Яхонтов (newbas) 30.04.09 08:19
(3),(4),(6) пофиксил. Спасибо за тестирование
8. Андрей (akat65) 30.04.09 09:38
Можно отсортировать Виды документов... по алфавиту
Ver 30.04.2009_ наезжает на другой слой формы...
Документ "Платежное поручение" не выгружается
Флажок "не проведенные" ВСЕГДА неактивный?
9. Андрей (akat65) 30.04.09 09:41
+8 Хорошо бы сделать дополнительно сортировку
таблицы документов по разным колонкам,которые ВЫГРУЖАЕМ...
10. Андрей (akat65) 30.04.09 09:54
+8 Хорошо бы сделать дополнительно вывод условий отбора немножко(период,контрагент,комментарий )
таблицы документов ,которые ВЫГРУЖАЕМ...
11. Сергей Яхонтов (newbas) 30.04.09 10:50
(8) пофиксил.
(10) не совсем понятно - условия отбора есть: Период, контрагент, комментарий.
Какие еще нужны?
(9)Сделаю позже
12. Андрей (akat65) 30.04.09 12:26
В слое "Выгрузка" хорошо бы видеть, что отбирали-компактненко:
-за какой период
-контрагент, если выбрали
-комментарий, если выбрали
-проведенные........
условия можно в корень ХМЛ записать
Т.е. просто "ТаблицаДокументов" пониже,а заголовок в вверху...
// Не переносим перечисления ломбарда АКТУАЛЬНО

Вопросик: красота изменения МОДУЛЯ с ПОМОЩЬЮ каких средств исправляется(сделана)??
***************
// {

// }
***************
13. Андрей (akat65) 30.04.09 12:39
+12
У операций ОБЩИЕ РЕКВИЗИТЫ ЕСТЬ?
14. Сергей Яхонтов (newbas) 30.04.09 12:39
(12) про ломбард точно! :)
Красота делается руками, отображается SciColorer
// { Открывает скобку свертывания,
// } Закрывает
А вообще, меню Colorer - Настройки
Пожелания по интерфейсу и условия доделаю сегодня вечерком
15. Сергей Яхонтов (newbas) 30.04.09 12:40
Да. Операция существует только с документом "Операция", поэтому общие реквизиты документов есть и у нее.
16. Андрей (akat65) 30.04.09 13:09
Не выгружает(выбор опр.доков) < ВСЕХ видов
и операций ОБЩИЕ РЕКВИЗИТЫ ...
17. Сергей Яхонтов (newbas) 30.04.09 13:10
18. Андрей (akat65) 30.04.09 13:12
+16 Периодические реквизиты....??
19. Андрей (akat65) 30.04.09 13:13
+17 не выгружает опр.вид(ы) дока ,если выбирать (операция+п/о+пл.пор)
20. Сергей Яхонтов (newbas) 30.04.09 13:22
(18) пока нет, но за праздники до делаю, т.к. появился заказ
(19) посмотрю
21. Алексей Гаврилов (sborka_home) 03.05.09 14:19
не смог загрузить, выдает ошибку

Кол = КореньСчет.КоличествоПодчиненных();
{.....ЗАГРУЗКАXML.ERT(669)}: Значение не представляет агрегатный объект (КоличествоПодчиненных)
22. Дмитрий Иванов (ChessCat) 05.05.09 14:42
автор, ответь пожалуйста на вопрос (2)
я реально не пойму - зачем изобретать велосипед если универсальный обмен данными через XML есть нна ИТС
23. Сергей Яхонтов (newbas) 06.05.09 07:11
А все потому, что писалась эта штука когда конвертацией данных пользоваться не умел, да и нужно было для обмена между не типовыми конфами, причем еще и немного разными.
24. Сергей Яхонтов (newbas) 06.05.09 08:02
25. Алексей Гаврилов (sborka_home) 06.05.09 10:18
Спасибо, все работает. Но теперь следующий момент: после загрузки документов, часть из них имеет статус проведенных, часть нет. С чем это связано?
26. Сергей Яхонтов (newbas) 06.05.09 11:52
(25) сложно сказать сразу - тут могут быть 2 причины:
1). Косяки в обработке :)
2). Отсутствие каких-либо материальных ресурсов при проведении, т.е. документ полностью и правильно перенесся, но нет остатков на счете или др.
Если мне скинуть xml (например на почту или в аську), то я могу точно сказать.
27. Алексей Гаврилов (sborka_home) 06.05.09 15:41
Готов выслать файл. Куда бросать, адрес?
28. Сергей Яхонтов (newbas) 07.05.09 03:05
(25) исправлен баг с проведением загруженных документов
(*) доделан перенос истории периодического реквизита справочников
(*) подходит для любых конфигураций
29. Сергей Яхонтов (newbas) 08.05.09 10:53
30. lara LARA (larafox) 14.05.09 17:07
Спасибки огромное!!! ;))) Я так долго мучилась, а вы меня спасли!!!Все справочники я смогла выгрузить из БП 1С8 вер 8.1 ред 6.15 в УПП той же версии под ред 1.2.Вот еще бы найти программку которая бы позволила выгрузить номенклатуру из Excel в УПП ..хотя бы наименование продукции что бы в ручную не забивать а то уж позиций очень много :(((
31. Сергей Яхонтов (newbas) 14.05.09 17:10
(30) ?! Мои обработки предназначены для 7.7, а никак для 8
32. Андрей (akat65) 14.05.09 19:01
У операции общие реквизиты не выгружаются(комментар...) ...?!
Хорошо бы пер.реквизиты выгружать за опр.период...
Флажок "не проведенные" недоступен всегда...
33. Андрей (akat65) 14.05.09 19:09
Мне опять повезло, кнопки отметки доков перестали выбирать...
Платежное поручение выбирается с "операцией в ручную"
версия 07,05 _ 139
34. Андрей (akat65) 14.05.09 19:12
35. Александр (SpiritBad) 18.05.09 22:03
Эл.Родитель = Родитель.ТекущийЭлемент();
{C:\1C BASES\ПЕРЕГРУЗКА\ZAGRUZKAXML.ERT(255)}: Количество уровней справочника ограничено! - вот что мне в торговле 7.7 выдает
36. Алексей Гаврилов (sborka_home) 19.05.09 20:20
Сергей, здравствуйте!
Обнаружил следующее: при загрузке документов, в момент их проведения, если в документе есть какие-либо ошибки (например, не хватает кол-ва для проведения или встречается нулевая сумма документа), то выдает предупреждение, типа, документ такой-то заблокирован, и проведение останавливается. Можно сделать, чтобы выдавалось сообщение, но при этом проведение остальных документов на этом не тормозилось.
37. Сергей Яхонтов (newbas) 25.05.09 17:14
38. Денис (ICE13) 02.06.09 16:41
(33) мои 2 варианта решения проблемы "не выгружаются определенные виды документов" или "выгружаются, но не те":

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

1 вариант: сортировать элементы по представлению предварительно перед заполнением списка "СписокДокументов" в процедуре ВставитьВсе(СписокДокументов):

Процедура ВставитьВсе(СписокДокументов)
Документы1 = СоздатьОбъект("СписокЗначений");
Документы1.УдалитьВсе();
Для Сч=1 По Метаданные.Документ() Цикл
Документы1.ДобавитьЗначение(Метаданные.Документ(Сч).Представление());
КонецЦикла;
Документы1.СортироватьПоПредставлению();
СписокДокументов.УдалитьВсе();
Для Инд=1 По Метаданные.Документ() Цикл
СписокДокументов.ДобавитьЗначение(Инд,Документы1.ПолучитьЗначение(Инд));
КонецЦикла;
СписокДокументов.СортироватьПоПредставлению();
КонецПроцедуры

2 вариант: не сортировать список "Документы", закоментировав строку:

Документы.СортироватьПоПредставлению();
39. Gavrish (Gavrish) 09.07.09 19:10
В операциях не выгружаются субконто, валюта, фирма, а в остальном ОК
40. Сергей Яхонтов (newbas) 09.07.09 19:11
(39) c чего бы это? Можно базу (или фрагмент) на анализ?
41. Сергей Яхонтов (newbas) 17.07.09 17:28
(38) Это правильно замечено. Понадобилось перенести один вид документа, а список пустой.
Пофиксил баги...
42. Андрей Зайцев (zaic) 05.10.09 17:59
не смог загрузить в ту же базу (ПУБ), выдает ошибку

Эл.Родитель = Родитель.ТекущийЭлемент();
{.... .\ЗАГРУЗКАXML.ERT(251)}: Неверное значение!
43. torg1c (torg1c) 09.12.09 15:30
Реквизит "Комментарий" может быть не у всех документов соответственно будет ошибка.
44. Сергей Яхонтов (newbas) 09.12.09 16:32
(43) В типовых конфигурациях реквизит "Комментарий" является общим реквизитом. Т.к. моя разработка не коммерческая и выполнялась для собственных нужд и рассчитана, в основном, на конфигурации, построенные на основе типовых.
45. Любовь (alex_fursov) 30.09.11 11:06
Подскажите смогу этой обработкой перенести операции введенные вручную для конфигурации бухгалтерия бюджетных учреждений?
46. Олег (kog) 15.01.12 10:20
А почему при загрузке не встают единицы у номенклатуры? Ни в справочнике ни в документе. Использую типовую ТИС.
Прикрепленные файлы:
47. Сергей Яхонтов (newbas) 15.01.12 22:27
(46) kog,
Сложно сказать заочно - должна работать, но если не заполняются видимо есть проблемы с поиском подчиненных элементов, причем на сколько я помню справочник "Единицы" в ТиС не имеют кода.
48. Владимир Саблин (emptyteam) 18.01.12 07:58
ТаблицаДокументов.УстановитьЗначение(НомерСтроки, "Комментарий",Док.Комментарий); 
{\\*******\DISTR\1C\7.7\ОБРАБОТКИ\ВЫГРУЗКА!ЗАГРУЗКА\ИДЕНТИЧНЫЕКОНФИГУРАЦИИ\ОБМЕНXML\ВЫГРУЗКАXML.ERT(321)}: Поле агрегатного объекта не обнаружено (Комментарий)


Не у Всех есть поле Комментарий ;)
49. SergeyNN (naumkin.s) 23.01.12 13:16
50. Татьяна Фролова (Мать Тереза) 23.03.12 16:34
Не загружает валюту ,каждый раз вручную проверять приходиться.
51. Татьяна Фролова (Мать Тереза) 23.03.12 16:39
мои 2 варианта решения проблемы "не выгружаются определенные виды документов" или "выгружаются, но не те":

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

1 вариант: сортировать элементы по представлению предварительно перед заполнением списка "СписокДокументов" в процедуре ВставитьВсе(СписокДокументов):

Процедура ВставитьВсе(СписокДокументов)
Документы1 = СоздатьОбъект("СписокЗначений");
Документы1.УдалитьВсе();
Для Сч=1 По Метаданные.Документ() Цикл
Документы1.ДобавитьЗначение(Метаданные.Документ(Сч).Представление());
КонецЦикла;
Документы1.СортироватьПоПредставлению();
СписокДокументов.УдалитьВсе();
Для Инд=1 По Метаданные.Документ() Цикл
СписокДокументов.ДобавитьЗначение(Инд,Документы1.ПолучитьЗначение(Инд));
КонецЦикла;
СписокДокументов.СортироватьПоПредставлению();
КонецПроцедуры

2 вариант: не сортировать список "Документы", закоментировав строку:

Документы.СортироватьПоПредставлению();
52. Татьяна Фролова (Мать Тереза) 11.04.12 09:17
Выполняется обработка позиции Перемещение ТМЦ б000000010 (29.03.12)

Не удалось сохранить файл с данными из-за Неизвестная ошибка

Хотелось воспользоваться, пробовала несколько обработок, где-то что-то вылезает ,а я не программист,я бухгалтер, и в меру своих знаний не могу исправить, очень жаль что не сработала.
53. Сергей Яхонтов (newbas) 11.04.12 10:12
(52) Мать Тереза,
Скорей всего путь для сохранения слишком длинный или нет доступа на запись файла в указанный каталог.
54. Татьяна Фролова (Мать Тереза) 11.04.12 13:08
55. Люда (LysI) 11.04.12 16:38
56. Сергей Маслов (sirm) 14.04.12 16:59
Не помогло. Думал будет быстрее стандартной...
Увы. Все равно спасибо:)
57. Алекс Фергюсон (Foxux) 08.08.12 15:10
Можно отсортировать Виды документов... по алфавиту
Ver 30.04.2009_ наезжает на другой слой формы...
Документ "Платежное поручение" не выгружается
Флажок "не проведенные" ВСЕГДА неактивный?


Не помогло. Думал будет быстрее стандартной...
Увы. Все равно спасибо:)
58. Алекс Фергюсон (Foxux) 08.08.12 15:10
Выполняется обработка позиции Перемещение ТМЦ б000000010 (29.03.12)

Не удалось сохранить файл с данными из-за Неизвестная ошибка

Хотелось воспользоваться, пробовала несколько обработок, где-то что-то вылезает ,а я не программист,я бухгалтер, и в меру своих знаний не могу исправить, очень жаль что не сработала.
59. Алекс Фергюсон (Foxux) 08.08.12 15:12
мои 2 варианта решения проблемы "не выгружаются определенные виды документов" или "выгружаются, но не те":

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

1 вариант: сортировать элементы по представлению предварительно перед заполнением списка "СписокДокументов" в процедуре ВставитьВсе(СписокДокументов):

Процедура ВставитьВсе(СписокДокументов)
Документы1 = СоздатьОбъект("СписокЗначений");
Документы1.УдалитьВсе();
Для Сч=1 По Метаданные.Документ() Цикл
Документы1.ДобавитьЗначение(Метаданные.Документ(Сч).Представление());
КонецЦикла;
Документы1.СортироватьПоПредставлению();
СписокДокументов.УдалитьВсе();
Для Инд=1 По Метаданные.Документ() Цикл
СписокДокументов.ДобавитьЗначение(Инд,Документы1.ПолучитьЗначение(Инд));
КонецЦикла;
СписокДокументов.СортироватьПоПредставлению();
КонецПроцедуры

2 вариант: не сортировать список "Документы", закоментировав строку:

Документы.СортироватьПоПредставлению();
60. Сергей Яхонтов (newbas) 08.08.12 15:20
(59) Foxux,
Можете делать как хотите - обработка в свободном доступе
61. Вика *** (kotenok17_90) 22.03.13 11:20
Не могу выгрузить операции введенные в ручную, что сделать, а очень надо. Плиз помогите...
62. Сергей Маслов (sirm) 31.01.14 23:43
Классная штука. Пользуюсь уже три года.
Еще ни разу не подводила!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа