4 авг. 2014 г.

Обмен между УТ 2.3 для Укр. и БП 1.2 для Укр.

Суть задачи: иногда возникает необходимость выгрузить данные из, например, 1С:Бухгалтерии предприятия в 1С:Управление торговлей, но не по узлам обмена распределенной информационной базы (РИБ), а через обработку Универсальный обмен данными XML. Это, например, может возникнуть когда Вы создаете новую базу УТ, и хотите импортировать справочник из БП в УТ, не настраивая двусторонний обмен данными или собственные правила обмена, или бухгалтеру привычнее и удобнее выгружать данные за выбранный период, а не по принципу регистрации обмена.
Решение:

первое что Вам, возможно, захочется сделать, это просто выгрузить стандартные правила обмена БП-УТ из конфигурации БП, и просто подцепить их в обработку. Но, нажав кнопку «Выгрузить данные», Вы получите огорчающее сообщение:
Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(4,52)}: Переменная не определена (УзелДляОбмена)
Вся проблема в том, что при выгрузке через РИБ, в контексте выполнения модулей правил обмена доступен узел обмена, в переменной «УзелДляОбмена», в реквизитах которого содержатся различные настройки. Собственно, пути решения два:
1. Дописывать правила обмена, что в данном случае будет крайне геморройным мероприятием, связанным с бесконечным поиском и заменой в текстах правил обмена и с физическим и умственным истощением человека делающего это.
2. Дать доступ к вышеуказанной переменной.
Собственно, мы с Вами, коллега, будем рассматривать второй вариант. Для этого нужно следовать следующему рецепту:
1. Выгрузим правила обмена. Для этого, откроем конфигуратор, найдем в ветке ОбщиеМакеты макет, в данном случае, с названием ПравилаОбмена_БП_УТ, откроем его, и через меню «Файл/Сохранить как», сохраним с расширением .xml
2. Сохраним обработку УниверсальныйОбменДаннымиXML в файл. Найдем ее в дереве конфигурации, щелкнем правой кнопкой мыши, выберем «Сохранить как внешнюю обработку/отчет».
3. Откроем данную обработку (из файла), и добавим в нее реквизит УзелДляОбмена, тип данных, в нашем случае, «ПланОбменаСсылка.ОбменУправлениеТорговлейБухгалтерияКОРП».
4. В версии конфигурации Бухгалтерия предприятия, 2.0.37.12 (возможно, и в более ранних), нужно в модуль объекта данной обработки (в самый конец) вставить две строки, указанные ниже, иначе мы получим еще одно безрадостное сообщение типа «Переменная не определена»:
    мИнформацияОПользовательскихПоляхПоискаПриВыгрузкеДанных = Новый Соответствие();
мИнформацияОПользовательскихПоляхПоискаПриЗагрузкеДанных = Новый Соответствие();
5. Сохраняем и открываем обработку в режиме 1С:Предприятие.
6. В реквизите «УзелДляОбмена», который мы добавили, выбираем узел из плана обмена — лучше создать новый, и прописать в нем необходимые условия. К сожалению, в этом месте создается одна небольшая проблема: с этого момента все изменения информационной базы начинают регистрироваться и сохраняться в соответствующих таблицах. В связи с этим, я рекомендую периодически сбрасывать зарегистрированные объекты через Монитор обмена данными (закладка «Дополнительно», кнопка «Подробно», затем «Удалить всю регистрацию»). В прочем, этот процесс можно и автоматизировать, прописав соответствующие действия в обработке обмена, при каждом обмене данными.
7. Заполняем остальные реквизиты (выгруженные на шаге 1 правила обмена, файл данных или настройки прямого подключения, период выгрузки, отборы и т.п.)
8. Делаем выгрузку данных.

Источник: delprog.ru

Дополнение из комментариев:


Статья очень понравилась. Лаконично и то, что надо.Для Украины УТУ 2.3 -> БУкр 1.2 нужно еще пошаманить немного. Мне нужен был только отбор по Организации.

1) загрузить правила в конвертацию и добавить параметр «Организация», поставить галку при загрузке, тип — СправочникСсылка.Организации

2) на закладке Основная -> ПередВыгрузкойОбъекта оставить только
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(Объект)) Тогда
Если ОбщегоНазначения.ЕстьРеквизитДокумента(«Организация», Объект.Метаданные()) И(Параметры.Организация Объект.Организация)
И (ЗначениеЗаполнено(Параметры.Организация)) Тогда
Отказ = Истина;
КонецЕсли;
КонецЕсли;


Вобщем с этими изменениями данный совет работает и с украинскими конфигурациями.

Комментариев нет:

Отправить комментарий