gifts2017

Доработка стандартной обработки ВыгрузкаЗагрузкаДанныхXML для загрузки только новых объектов

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

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

 Однажды, встала задача объединить 2 базы, одна из которых в свое время была родителем другой, но потом их пути разошлись, обмены давно не делались.  И одним из условий было, ни в коем случае не изменять уже существующие документы в основной базе, а только добавить недостающие из подчиненной.  В первую очередь, в голову пришла идея написать обработку для загрузки недостающих документов, используя внешнее соединение.  Но потом,  вспомнил о существовании такой замечательной обработки для обмена между идентичными базами как ВыгрузкаЗагрузкаДанныхXML, после небольшой модернизации,  задача была успешно решена.

   Поиск уже существующих объектов  производится по ссылке, может быть не всегда это верно, но в моём конкретном случае все отработало  как нужно. Для проверки пришлось создать запрос в цикле чтения объектов, но в данном случае, мне кажется, это оправдано.

   Если ЗагружатьТолькоНовые Тогда     МетаД=ЗаписанноеЗначение.Метаданные();                       ТипОбъекта=МетаД.ПолноеИмя();                Если ОбъектСуществует(ТипОбъекта,МетаД.Имя,ЗаписанноеЗначение.Ссылка) Тогда                                                                        Продолжить;                КонецЕсли;   КонецЕсли; Функция ОбъектСуществует(ТипОбъекта,Псевдоним,Ссылка)                               Запрос = Новый Запрос;                Запрос.Текст =                               "ВЫБРАТЬ                               |"+Псевдоним+".Ссылка                               |ИЗ                               |"+ТипОбъекта+" КАК "+Псевдоним+"                               |ГДЕ                               |             "+Псевдоним+".Ссылка = &Ссылка";                 Запрос.УстановитьПараметр("Ссылка", Ссылка);                 Результат = Запрос.Выполнить();    Возврат не Результат.Пустой()         КонецФункции

Если у кого-то есть идеи по оптимизации или какое-то другое решение данной задачи, то пишем в  комментариях, не стесняемся.

Надеюсь, что доработка пригодится кому-нибудь еще.

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

Наименование Файл Версия Размер Кол. Скачив.
ВыгрузкаЗагрузкаДанныхXML82_Изм.epf
.epf 74,75Kb
21.03.13
186
.epf 74,75Kb 186 Скачать

См. также

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

Комментарии

1. cratos2 (CratosX) 22.10.12 11:47
Спасибо за экономию моего времени.
Есть один вопрос - версия обработки 2.1.5, а на диске ИТС за октябрь 2012 года есть только 2.1.2. Где ты взял последнюю версию?

Да, в шаблоны КД не глянул((. Вопрос снят
2. Александр Окулов (PowerBoy) 19.12.12 13:41
Вот так надо делать:

Если ЭтоДокумент И ЗагружатьТолькоНовыеДокументы И Не ЗаписанноеЗначение.Ссылка.Пустая() Тогда
Продолжить;
КонецЕсли;



http://infostart.ru/public/14887/
3. нОлька (нОлька) 14.01.13 00:03
А в переносе справочников не было ни каких изменений??? У меня при использовании типовой обработки при переносе справочника "Расчетные счета" и поставленной галочкой "при необходимости" на контрагентах - задвоились строки в справочнике контрагенты, причем и код и наименование совпадают, а если галку не ставить, то расчетные счета вообще не переносятся
4. Сергей (Sybr) 16.01.13 16:04
(3) В вашем случае вряд ли поможет, сравнение идет по ссылке, а не по наименованию или коду.
5. oks nosk (1996oks) 13.03.13 10:48
Спасибо большое. Очень помогла.
6. Александр Удалов (higs) 01.04.14 19:56
Спасибо. И мне пригодилась.
7. Максим Литвинов (maksa2005) 28.10.14 18:52
Спасибо. Пригодилось в самый раз)))
8. Макас (makas) 20.11.15 10:12
Проверил отчет в БП 2.0.64
Единственное замечание, обработка переносит по GUID, а не по Кодам или Наименованию.
Соответственно, задвоения в справочниках исправлял обработками "ПоискИЗаменаЗначений" и "ПоискИЗаменаДублирующихсяЭлементов"
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа