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



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

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

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

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

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

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

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

62 Comments

  1. rasswet

    «есть группа с таким же наименованием, как и элемент — то скорее всего найдет группу вместо элемента.» ну это можно же было пофиксить без проблем…

    Reply ↓
  2. ChessCat

    а чем от типовой обработки отличается ?

    Reply ↓
  3. akat65

    Операции введенные в ручную НЕ ВЫГРУЖАЕТ.

    Reply ↓
  4. akat65

    Пометка(отметка документов кнопки внизу) работает? У меня бух.502 НЕТ ??

    Reply ↓
  5. akat65

    Платежное поручение ВЫГРУЖАЕТСЯ ?……..

    Reply ↓
  6. Ильшат71

    Действительно, операции введенные вручную не выгружает.

    Reply ↓
  7. newbas

    (3),(4),(6) пофиксил. Спасибо за тестирование

    Reply ↓
  8. akat65

    Можно отсортировать Виды документов… по алфавиту

    Ver 30.04.2009_ наезжает на другой слой формы…

    Документ «Платежное поручение» не выгружается

    Флажок «не проведенные» ВСЕГДА неактивный?

    Reply ↓
  9. akat65

    +8 Хорошо бы сделать дополнительно сортировку

    таблицы документов по разным колонкам,которые ВЫГРУЖАЕМ…

    Reply ↓
  10. akat65

    +8 Хорошо бы сделать дополнительно вывод условий отбора немножко(период,контрагент,комментарий )

    таблицы документов ,которые ВЫГРУЖАЕМ…

    Reply ↓
  11. newbas

    (8) пофиксил.

    (10) не совсем понятно — условия отбора есть: Период, контрагент, комментарий.

    Какие еще нужны?

    (9)Сделаю позже

    Reply ↓
  12. akat65

    В слое «Выгрузка» хорошо бы видеть, что отбирали-компактненко:

    -за какой период

    -контрагент, если выбрали

    -комментарий, если выбрали

    -проведенные……..

    условия можно в корень ХМЛ записать

    Т.е. просто «ТаблицаДокументов» пониже,а заголовок в вверху…

    // Не переносим перечисления ломбарда АКТУАЛЬНО

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

    ***************

    // {

    // }

    ***************

    Reply ↓
  13. newbas

    (12) про ломбард точно! 🙂

    Красота делается руками, отображается SciColorer

    // { Открывает скобку свертывания,

    // } Закрывает

    А вообще, меню Colorer — Настройки

    Пожелания по интерфейсу и условия доделаю сегодня вечерком

    Reply ↓
  14. akat65

    +12

    У операций ОБЩИЕ РЕКВИЗИТЫ ЕСТЬ?

    Reply ↓
  15. newbas

    Да. Операция существует только с документом «Операция», поэтому общие реквизиты документов есть и у нее.

    Reply ↓
  16. akat65

    Не выгружает(выбор опр.доков) < ВСЕХ видов

    и операций ОБЩИЕ РЕКВИЗИТЫ …

    Reply ↓
  17. newbas

    Не понятно…

    Reply ↓
  18. akat65

    +16 Периодические реквизиты….??

    Reply ↓
  19. akat65

    +17 не выгружает опр.вид(ы) дока ,если выбирать (операция+п/о+пл.пор)

    Reply ↓
  20. newbas

    (18) пока нет, но за праздники до делаю, т.к. появился заказ

    (19) посмотрю

    Reply ↓
  21. sborka_home

    не смог загрузить, выдает ошибку

    Кол = КореньСчет.КоличествоПодчиненных();

    {…..ЗАГРУЗКАXML.ERT(669)}: Значение не представляет агрегатный объект (КоличествоПодчиненных)

    Reply ↓
  22. ChessCat

    автор, ответь пожалуйста на вопрос (2)

    я реально не пойму — зачем изобретать велосипед если универсальный обмен данными через XML есть нна ИТС

    Reply ↓
  23. newbas

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

    Reply ↓
  24. newbas

    (21) пофиксил

    Reply ↓
  25. sborka_home

    Спасибо, все работает. Но теперь следующий момент: после загрузки документов, часть из них имеет статус проведенных, часть нет. С чем это связано?

    Reply ↓
  26. newbas

    (25) сложно сказать сразу — тут могут быть 2 причины:

    1). Косяки в обработке 🙂

    2). Отсутствие каких-либо материальных ресурсов при проведении, т.е. документ полностью и правильно перенесся, но нет остатков на счете или др.

    Если мне скинуть xml (например на почту или в аську), то я могу точно сказать.

    Reply ↓
  27. sborka_home

    Готов выслать файл. Куда бросать, адрес?

    Reply ↓
  28. newbas

    (25) исправлен баг с проведением загруженных документов

    (*) доделан перенос истории периодического реквизита справочников

    (*) подходит для любых конфигураций

    Reply ↓
  29. newbas

    обновлено

    Reply ↓
  30. larafox

    Спасибки огромное!!! ;))) Я так долго мучилась, а вы меня спасли!!!Все справочники я смогла выгрузить из БП 1С8 вер 8.1 ред 6.15 в УПП той же версии под ред 1.2.Вот еще бы найти программку которая бы позволила выгрузить номенклатуру из Excel в УПП ..хотя бы наименование продукции что бы в ручную не забивать а то уж позиций очень много :(((

    Reply ↓
  31. newbas

    (30) ?! Мои обработки предназначены для 7.7, а никак для 8

    Reply ↓
  32. akat65

    У операции общие реквизиты не выгружаются(комментар…) …?!

    Хорошо бы пер.реквизиты выгружать за опр.период…

    Флажок «не проведенные» недоступен всегда…

    Reply ↓
  33. akat65

    Мне опять повезло, кнопки отметки доков перестали выбирать…

    Платежное поручение выбирается с «операцией в ручную»

    версия 07,05 _ 139

    Reply ↓
  34. akat65

    +9 сделать бы….

    Reply ↓
  35. SpiritBad

    Эл.Родитель = Родитель.ТекущийЭлемент();

    {C:1C BASESПЕРЕГРУЗКАAGRUZKAXML.ERT(255)}: Количество уровней справочника ограничено! — вот что мне в торговле 7.7 выдает

    Reply ↓
  36. sborka_home

    Сергей, здравствуйте!

    Обнаружил следующее: при загрузке документов, в момент их проведения, если в документе есть какие-либо ошибки (например, не хватает кол-ва для проведения или встречается нулевая сумма документа), то выдает предупреждение, типа, документ такой-то заблокирован, и проведение останавливается. Можно сделать, чтобы выдавалось сообщение, но при этом проведение остальных документов на этом не тормозилось.

    Reply ↓
  37. newbas

    (36) поправлю

    Reply ↓
  38. ICE13

    (33) мои 2 варианта решения проблемы «не выгружаются определенные виды документов» или «выгружаются, но не те»:

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

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

    Процедура ВставитьВсе(СписокДокументов)

    Документы1 = СоздатьОбъект(«СписокЗначений»);

    Документы1.УдалитьВсе();

    Для Сч=1 По Метаданные.Документ() Цикл

    Документы1.ДобавитьЗначение(Метаданные.Документ(Сч).Представление());

    КонецЦикла;

    Документы1.СортироватьПоПредставлению();

    СписокДокументов.УдалитьВсе();

    Для Инд=1 По Метаданные.Документ() Цикл

    СписокДокументов.ДобавитьЗначение(Инд,Документы1.ПолучитьЗначение(Инд));

    КонецЦикла;

    СписокДокументов.СортироватьПоПредставлению();

    КонецПроцедуры

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

    Документы.СортироватьПоПредставлению();

    Reply ↓
  39. Gavrish

    В операциях не выгружаются субконто, валюта, фирма, а в остальном ОК

    Reply ↓
  40. newbas

    (39) c чего бы это? Можно базу (или фрагмент) на анализ?

    Reply ↓
  41. newbas

    (38) Это правильно замечено. Понадобилось перенести один вид документа, а список пустой.

    Пофиксил баги…

    Reply ↓
  42. zaic

    не смог загрузить в ту же базу (ПУБ), выдает ошибку

    Эл.Родитель = Родитель.ТекущийЭлемент();

    {…. .ЗАГРУЗКАXML.ERT(251)}: Неверное значение!

    Reply ↓
  43. torg1c

    Реквизит «Комментарий» может быть не у всех документов соответственно будет ошибка.

    Reply ↓
  44. newbas

    (43) В типовых конфигурациях реквизит «Комментарий» является общим реквизитом. Т.к. моя разработка не коммерческая и выполнялась для собственных нужд и рассчитана, в основном, на конфигурации, построенные на основе типовых.

    Reply ↓
  45. alex_fursov

    Подскажите смогу этой обработкой перенести операции введенные вручную для конфигурации бухгалтерия бюджетных учреждений?

    Reply ↓
  46. kog

    А почему при загрузке не встают единицы у номенклатуры? Ни в справочнике ни в документе. Использую типовую ТИС.

    Reply ↓
  47. newbas

    (46) kog,

    Сложно сказать заочно — должна работать, но если не заполняются видимо есть проблемы с поиском подчиненных элементов, причем на сколько я помню справочник «Единицы» в ТиС не имеют кода.

    Reply ↓
  48. emptyteam
    ТаблицаДокументов.УстановитьЗначение(НомерСтроки, «Комментарий»,Док.Комментарий);
    {\*******DISTR1C7.7ОБРАБОТКИВЫГРУЗКА!ЗАГРУЗКАИДЕНТИЧНЫЕКОНФИГУРАЦИИОБМЕНXMLВЫГРУЗКАXML.ERT(321)}: Поле агрегатного объекта не обнаружено (Комментарий)

    Не у Всех есть поле Комментарий 😉

    Reply ↓
  49. naumkin.s

    Спасибо за обработку

    Reply ↓
  50. Мать Тереза

    Не загружает валюту ,каждый раз вручную проверять приходиться.

    Reply ↓
  51. Мать Тереза

    мои 2 варианта решения проблемы «не выгружаются определенные виды документов» или «выгружаются, но не те»:

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

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

    Процедура ВставитьВсе(СписокДокументов)

    Документы1 = СоздатьОбъект(«СписокЗначений»);

    Документы1.УдалитьВсе();

    Для Сч=1 По Метаданные.Документ() Цикл

    Документы1.ДобавитьЗначение(Метаданные.Документ(Сч).Представление());

    КонецЦикла;

    Документы1.СортироватьПоПредставлению();

    СписокДокументов.УдалитьВсе();

    Для Инд=1 По Метаданные.Документ() Цикл

    СписокДокументов.ДобавитьЗначение(Инд,Документы1.ПолучитьЗначение(Инд));

    КонецЦикла;

    СписокДокументов.СортироватьПоПредставлению();

    КонецПроцедуры

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

    Документы.СортироватьПоПредставлению();

    Reply ↓
  52. Мать Тереза

    Выполняется обработка позиции Перемещение ТМЦ б000000010 (29.03.12)

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

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

    Reply ↓
  53. newbas

    (52) Мать Тереза,

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

    Reply ↓
  54. Мать Тереза

    Спасибо,попробую.

    Reply ↓
  55. LysI

    Спасибо!

    Reply ↓
  56. sirm

    Не помогло. Думал будет быстрее стандартной…

    Увы. Все равно спасибо:)

    Reply ↓
  57. Foxux

    Можно отсортировать Виды документов… по алфавиту

    Ver 30.04.2009_ наезжает на другой слой формы…

    Документ «Платежное поручение» не выгружается

    Флажок «не проведенные» ВСЕГДА неактивный?

    Не помогло. Думал будет быстрее стандартной…

    Увы. Все равно спасибо:)

    Reply ↓
  58. Foxux

    Выполняется обработка позиции Перемещение ТМЦ б000000010 (29.03.12)

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

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

    Reply ↓
  59. Foxux

    мои 2 варианта решения проблемы «не выгружаются определенные виды документов» или «выгружаются, но не те»:

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

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

    Процедура ВставитьВсе(СписокДокументов)

    Документы1 = СоздатьОбъект(«СписокЗначений»);

    Документы1.УдалитьВсе();

    Для Сч=1 По Метаданные.Документ() Цикл

    Документы1.ДобавитьЗначение(Метаданные.Документ(Сч).Представление());

    КонецЦикла;

    Документы1.СортироватьПоПредставлению();

    СписокДокументов.УдалитьВсе();

    Для Инд=1 По Метаданные.Документ() Цикл

    СписокДокументов.ДобавитьЗначение(Инд,Документы1.ПолучитьЗначение(Инд));

    КонецЦикла;

    СписокДокументов.СортироватьПоПредставлению();

    КонецПроцедуры

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

    Документы.СортироватьПоПредставлению();

    Reply ↓
  60. newbas

    (59) Foxux,

    Можете делать как хотите — обработка в свободном доступе

    Reply ↓
  61. kotenok17_90

    Не могу выгрузить операции введенные в ручную, что сделать, а очень надо. Плиз помогите…

    Reply ↓
  62. sirm

    Классная штука. Пользуюсь уже три года.

    Еще ни разу не подводила!

    Reply ↓

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *