Перенос помеченных на удаление объектов. Конвертация 2.1

02.04.18

Интеграция - Перенос данных 1C

Иногда при переносе данных возникает задача: не переносить помеченные на удаление документы, а те документы, которые были ранее перенесены в базу приемник и теперь в приемнике стали помеченными на удаления - переносить так, чтобы в базу приемник не тянулись связанные с объектом ссылки, но искомый объект помечался на удаление. В данной статье будет рассказано, как это можно сделать достаточно просто, используя конфигурацию "Конвертация 2.1".

В статье описывается способ переноса таких объектов в контексте конфигурации "Конвертация 2.1". Во всех остальных случаях, когда используются прочие механизмы обменов - данная задача имеет различное множество решений, которые в данной статье не рассматриваются.

Итак, в правилах обмена мы будем использовать алгоритмы и обработчики событий объектов. В алгоритмах мы создадим 3 элемента, которые будем размещать в одноименных обработчиках документов и справочников. Пример реализации я буду приводить только для документов, так как для справочников подход будет аналогичным. 

Алгоритм "ПередВыгрузкой":

ПометкаУдаления = Источник.ПометкаУдаления;
НеСоздаватьЕслиНеНайден = ПометкаУдаления;
ПередатьОдинПараметрВПриемник("_ПометкаУдаления", ПометкаУдаления);

Получение пометки удаления для ссылки производится через точку. Все потому, что далее, перед исполнением кода обработчика объекта "ПриВыгрузке", будет производится чтение ссылки со всеми реквизитами и табличными частями, поэтому использовать получение значения реквизита ссылки с помощью запроса или БСП функции ОбщегоНазначения.ПолучитьЗначениеРеквизита() будет являться лишним. Мы прочитаем все реквизиты в обработчике "ПередВыгрузкой", закэшируя тем самым объект.

пример трассировки MS SQL Profiler

(пример трассировки в MSSQL Profiler для процедуры "ПередВыгрузкой")

 

(пример трассировки перед выполнением кода внутри процедуры "ПриВыгрузке")

Если объект выгружается впервые, то нет смысла загружать помеченный на удаление объект в приемник. Конечно, в некоторых случаях может потребоваться переносить такие объекты, например, в случае, когда переносится набор записей регистра и наш документ содержится в измерении набора. В таком случае нужно понимать - насколько действительно в базе приемнике нужны такие записи. В моей статье я не рассматриваю такие случаи. Далее, передаем параметр конкретного объекта, который будет содержать информацию о пометке удаления.

Алгоритм "ПриВыгрузке":

ПКО.НеВыгружатьОбъектыСвойствПоСсылкам = Источник.ПометкаУдаления;

Самый интересный момент статьи. Такой строчкой кода мы указываем, что связанные ссылки не будут тянуться с искомым объектом в файл выгрузки, если он помечен на удаление. Все дело в том, что данное свойство не так очевидно указано в справке к обработчикам. А в настройках правила свойство устанавливается на все объекты выгрузки по такому правилу. 

Используя данное свойство мы сокращаем размер файла выгрузки, а так же избавляемся от проверки при загрузке и прописывания кода, который бы исключал при загрузке связанные ссылки (весьма не тривиальный алгоритм). В случае, если мы не используем файлы, а осуществляем обмен с помощью веб-сервисов или com-подключений - мы сокращаем объем передаваемых данных.

Алгоритм "ПриЗагрузке":

ЕстьПараметрПометкаУдаления = (Параметры.Свойство("_ПометкаУдаления") И Параметры._ПометкаУдаления);

ЕстьРучнаяКорректировка = ложь;
Если ОбщегоНазначения.ЕстьРеквизитОбъекта("РучнаяКорректировка", Объект.Метаданные()) Тогда
	ЕстьРучнаяКорректировка = Объект.РучнаяКорректировка;	
КонецЕсли;

НеЗамещатьОбъект = ЕстьРучнаяКорректировка ИЛИ ЕстьПараметрПометкаУдаления;	

Если НЕ ЕстьРучнаяКорректировка И ЕстьПараметрПометкаУдаления Тогда
	Объект.ПометкаУдаления = истина;
	Объект.ОбменДанными.Загрузка = истина;
	Объект.Записать(РежимЗаписиДокумента.Запись);
КонецЕсли;

При загрузке в базу приемник нам необходимо проанализировать - был ли данный объект ранее загружен и его движения были отредактированы. Для этого обратимся к реквизиту объекта "РучнаяКорректировка", если он, конечно, существует. Так же проверим параметр, который с объектом мы передали при выгрузке процедурой "ПередатьОдинПараметрВПриемник". Если движения объекта был ранее отредактированы или объект стал помеченным на удаления - мы не замещаем значения реквизитов объекта, а пометку устанавливаем принудительно в данном обработчике.

Осталось разместить вызовы данных алгоритмов в обработчиках объектов: "ПередВыгрузкой", "ПриВыгрузке", "ПриЗагрузке".

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

С данной задачей я столкнулся "вживую", на достаточно большом объеме данных. И такой подход оказался вполне эффективным. 

Надеюсь, что пример, описанный в статье, окажется полезным!

Конвертация обмен пометка удаления не выгружать

См. также

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27660 руб.

12.06.2017    145177    844    299    

436

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.88.x) и УТ 11.5 (11.5.20.x), также подходят для релиза 11.5 (11.5.19.x).

35000 руб.

23.07.2020    55387    253    73    

207

SALE! 10%

Перенос данных 1C Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

55778 50200 руб.

04.08.2015    170146    354    281    

390

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

55778 50200 руб.

15.04.2019    73868    196    154    

134

SALE! 10%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

53111 47800 руб.

03.12.2020    38035    106    69    

100

SALE! 10%

Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Правила переноса данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных) Воспользовались более 122 предприятий! |

55778 50200 руб.

31.10.2014    238387    105    338    

308

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.240.x) и БП 3.0 (3.0.169.x). Правила подходят для версии ПРОФ и КОРП.

35000 руб.

15.12.2021    25788    183    55    

139

Перенос данных 1C Программист Бухгалтер Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет НДФЛ ФОМС, ЕФС Платные (руб)

Обработки для быстрого перехода с конфигураций «КАМИН:Расчет заработной платы 3.0», «КАМИН:Зарплата для бизнеса 4.0» и «КАМИН:Зарплата 5.0» на конфигурацию «Зарплата и управление персоналом» версии 3.1.

12000 руб.

25.09.2016    82560    342    253    

292
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Stim213 416 05.04.18 12:52 Сейчас в теме
Для автообмена настройкой унив обмена xml вы не поиграетесь.

Если список документов ограничен, то можно сделать проще:
в дополнение к основному ПКО документа создается ПКО с парочкой свойств Дата+Номер и настройкой "не создавать новый объект".

в пвд перед выгрузкой пишите:
Если Объект.ПометкаУдаления Тогда
ИмяПКО = "ПКОМойДокумент_ПомеченныйНаУдаление";
КонецЕсли;


и не надо писать алгоритмы и много кода. Помеченный на удаление документ будет выгружаться по правилу помеченных, данных будет там совсем немного и новый помеченный создан не будет.
2. Shmell 547 06.04.18 06:23 Сейчас в теме
(1)
Да, Ваш вариант вполне подойдет для правил с небольшим количеством объектов.
3. hugador 40 23.12.20 23:56 Сейчас в теме
Добрый день. Столкнулась с похожей задачей, идея понравилась, сделала по вашему примеру.
Такой вопрос: почему код:
ПКО.НеВыгружатьОбъектыСвойствПоСсылкам = Источник.ПометкаУдаления

у вас находится в обработчике "ПриВыгрузке"? У меня функционал "НеВыгружатьОбъектыСвойствПоСсылкам" заработал только при помещении этого кода в событие "ПередВыгрузкой", иначе ссылочные реквизиты помеченных на удаление объектов выгружались в полном объеме. Правда, я пока тестировала только выгрузку в XML, без загрузки в Приемник, и анализировала содержимое файла выгрузки.
Оставьте свое сообщение