Каталог решений - Объединение баз ЗУП

Объединение баз ЗУП

Объединение баз ЗУП

В наличии

Есть база ЗУП 3.1, в которой ведется одна организация, все данные из нее нужно перенести в общий ЗУП, обе базы типовые. Используем для переноса КД 2.0.

Категория:

Описание

Статья рассчитана на специалистов, знакомых с КД 2.0. Это общее описание, а не пошаговое руководство. Внимание, присутствует неоптимальный и плохочитаемый код!

 

Подготовка

Приводим обе базы  к одному релизу.  Выгружаем описание конфигурации и обязательно устанавливаем галочку «Выгружать все движения».

Далее загружаем описание конфигурации в КД 2.0 и создаем правила автоматически.

 

Выгрузка документов

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

Отключим все Правила выгрузки данных кроме Документов. Отключение ПВД не означает, что они будут исключены из файла правил обмена, просто при чтении правил в обработке «Универсальный обмен данными в формате XML» с них будет снята галочка.

Отключить ПВД один раз в правилах обмена удобнее, чем каждый раз в обработке при тестировании выгрузки.

В дальнейшем, включим ПВД для некоторых независимых регистров сведений.

 

Справочники

Было решено, что если элемент справочника уже существует в базе-приемнике, то он не должен перезаполняться по данным базы-источника. Поэтому для всех ПКО Справочников установил галочку «Не замещать существующие объекты в приемнике при загрузке, а только создавать новые и заполнять их».

 

Сопоставление справочников

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

Примеры

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

Справочник Виды доходов НДФЛ имеет уникальные коды – можно сопоставлять по Коду.

Справочник Воинские звания – по наименованию и т.д.

Особое внимание нужно уделить Физическим лицам. Для их сопоставления я использовал поля ИНН, СНИЛ, ФИО, Дата рождения и написал обработчик Поля поиска.

 

Если СвойстваПоиска.Получить("ЭтоГруппа") = Истина Тогда
	
	ПрекратитьПоиск = Истина
	
Иначе		
	
	ТекстЗапроса = "";
	Запрос = Новый Запрос;
	
	СНИЛССоответствуетТребованиям = Ложь;
	Выполнить(Алгоритмы.КонтрольСНИЛС);
	
	Если СНИЛССоответствуетТребованиям Тогда
		
		Запрос.УстановитьПараметр("СтраховойНомерПФР", СвойстваПоиска.Получить("СтраховойНомерПФР"));
		
		ТекстЗапроса = "Выбрать
		|0 как ПолеУпорядочивания,
		|Выбор Когда Спр.ПометкаУдаления = &ПометкаУдаления Тогда 0 Иначе 1 Конец Как УпорядочиваниеПоПометкеУдаления,
		|Спр.Ссылка,
		|Спр.СтраховойНомерПФР,
		|Спр.ИНН,
		|Спр.ФИО,
		|Спр.ДатаРождения,
		|Спр.ПометкаУдаления
		|из
		|Справочник.ФизическиеЛица как Спр
		|Где
		|Спр.СтраховойНомерПФР = &СтраховойНомерПФР";
		
	КонецЕсли;		
	
	ИННСоответствуетТребованиям = Ложь;
	Выполнить(Алгоритмы.КонтрольИННКПП);
	
	Если ИННСоответствуетТребованиям Тогда
		
		Запрос.УстановитьПараметр("ИНН", СвойстваПоиска.Получить("ИНН"));
		
		ТекстИНН = "Выбрать
		|1 как ПолеУпорядочивания,
		|Выбор Когда Спр.ПометкаУдаления = &ПометкаУдаления Тогда 0 Иначе 1 Конец Как УпорядочиваниеПоПометкеУдаления,
		|Спр.Ссылка,
		|Спр.СтраховойНомерПФР,
		|Спр.ИНН,
		|Спр.ФИО,
		|Спр.ДатаРождения,
		|Спр.ПометкаУдаления
		|из
		|Справочник.ФизическиеЛица как Спр
		|Где
		|Спр.ИНН = &ИНН";
		
		Если ПустаяСтрока(ТекстЗапроса) Тогда
			ТекстЗапроса = ТекстИНН;
		Иначе
			ТекстЗапроса = ТекстЗапроса + Символы.ПС + "Объединить " + Символы.ПС + ТекстИНН;
		КонецЕсли;		
		
	КонецЕсли;
	
	ФИО = СвойстваПоиска.Получить("ФИО");
	ДатаРождения = СвойстваПоиска.Получить("ДатаРождения");	
	Если Не ПустаяСтрока(ФИО) и Не ДатаРождения = Дата(1, 1, 1) Тогда
		
		Запрос.УстановитьПараметр("ФИО", СокрЛП(ФИО));
		Запрос.УстановитьПараметр("ДатаРождения", ДатаРождения);
		
		ТекстФИОДата = "Выбрать
		|2 как ПолеУпорядочивания,
		|Выбор Когда Спр.ПометкаУдаления = &ПометкаУдаления Тогда 0 Иначе 1 Конец Как УпорядочиваниеПоПометкеУдаления,
		|Спр.Ссылка,
		|Спр.СтраховойНомерПФР,
		|Спр.ИНН,
		|Спр.ФИО,
		|Спр.ДатаРождения,
		|Спр.ПометкаУдаления
		|из
		|Справочник.ФизическиеЛица как Спр
		|Где
		|Спр.ФИО = &ФИО
		|и Спр.ДатаРождения = &ДатаРождения";		
		
		Если ПустаяСтрока(ТекстЗапроса) Тогда
			ТекстЗапроса = ТекстФИОДата;
		Иначе
			ТекстЗапроса = ТекстЗапроса + Символы.ПС + "Объединить " + Символы.ПС + ТекстФИОДата;
		КонецЕсли;		
		
	КонецЕсли;
	
	Если ПустаяСтрока(ТекстЗапроса) Тогда
		
		ПрекратитьПоиск = Истина;
		
	Иначе			
		
		Запрос.Текст = ТекстЗапроса + Символы.ПС + 
		"Упорядочить по
		|ПолеУпорядочивания,
		|УпорядочиваниеПоПометкеУдаления";
		
		Запрос.УстановитьПараметр("ПометкаУдаления", СвойстваПоиска.Получить("ПометкаУдаления"));
		
		Выборка = Запрос.Выполнить().Выбрать();
		
		Если Выборка.Следующий() Тогда
			
			СсылкаНаОбъект = Выборка.Ссылка;			
			Параметры.СопоставленныеФизическиеЛица.Вставить(СсылкаНаОбъект, СвойстваПоиска.Получить("{УникальныйИдентификатор}"));
			
		КонецЕсли;
		
		ПрекратитьПоиск = Истина;
		
	КонецЕсли;
	
КонецЕсли; //Если СвойстваПоиска.Получить("ЭтоГруппа") = Истина Тогда

 

Алгоритмы проверки СНИЛС и ИНН взяты с интернета, поэтому приводить их здесь не буду.

Для ускорения работы со справочниками написал обработку, которая подсчитывает количество объектов в базе

Обработка выводит справочники, документы и независимые регистры сведений (понадобится далее). Позволяет быстро переходить к форме списка выбранного объекта

 

Планы видов расчета

Коллеги-ЗУПовцы и расчетчики клиента подсказали, что Начисления и Удержания должны сопоставляться по коду, если код содержит только буквы.

Обработчик Поля поиска для Планов видов расчета

Код = СокрЛП(СвойстваПоиска.Получить("Код"));
ТолькоБуквы = СтрДлина(Код) > 0;
к1 = 1040;
к2 = 1103;

Для Сч = 1 по СтрДлина(Код) Цикл
	
	КС = КодСимвола(Сред(Код, Сч, 1));	
	Если КС < к1 или КС > к2 Тогда
		ТолькоБуквы = Ложь;
		Прервать;
	КонецЕсли;		
	
КонецЦикла;

Если ТолькоБуквы Тогда		
	СтрокаИменСвойствПоиска = "Код, ВАрхиве";	
Иначе	
	СсылкаНаОбъект = Неопределено;
	ПрекратитьПоиск = Истина;	
КонецЕсли;

Перед обменом нужно убедиться в уникальности буквенных кодов планов видов расчета.

 

Выгрузка независимых регистров сведений

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

Пример выгружаемого всегда регистра – «История регистраций в налоговом органе», для таких регистров включаем ПВД.

Некоторые регистры нужны только тогда, когда выгружены соответствующие физические лица или сотрудники, например «ФИО Физических лиц», «Состояния сотрудников» и др.

В обработчик конвертации «Перед выгрузкой данных» добавил создание параметров «ВыгруженныеФизическиеЛица» и «ВыгруженныеСотрудники».

Параметры.Вставить("ВыгруженныеФизическиеЛица", Новый Массив);
Параметры.Вставить("ВыгруженныеСотрудники", Новый Массив);

Эти массивы дополняются в обработчике «После выгрузки» ПКО для физических лиц и сотрудников.

В обработчике конвертации «После выгрузки данных» выгружаются записи регистров с отбором по физическим лицам и сотрудникам.

Если Не Параметры.ВыгруженныеФизическиеЛица.Количество() = 0 Тогда
	
	мРегистрыСведений = Новый Массив();
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ФИОФизическихЛиц", "ФизическоеЛицо", "ФИОФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ВоинскийУчет", "ФизическоеЛицо", "ВоинскийУчет"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ВидыСтажаТрудовойДеятельностиФизическихЛиц", "ФизическоеЛицо", "ВидыСтажаТрудовойДеятельностиФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ГражданствоФизическихЛиц", "ФизическоеЛицо", "ГражданствоФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ДокументыФизическихЛиц", "Физлицо", "ДокументыФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ИзменениеСведенийФизическихЛиц", "ФизическоеЛицо", "ИзменениеСведенийФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам", "ФизическоеЛицо", "ЛицевыеСчетаСотрудниковПоЗарплатнымПроектам"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "МероприятияТрудовойДеятельностиПрочие", "ФизическоеЛицо", "МероприятияТрудовойДеятельностиПрочие"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "НаградыФизическихЛиц", "ФизическоеЛицо", "НаградыФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "НакопленныеСтажиФизическихЛиц", "ФизическоеЛицо", "НакопленныеСтажиФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ОсновныеСотрудникиФизическихЛиц", "ФизическоеЛицо", "ОсновныеСотрудникиФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ПараметрыИсчисленияПроцентаСевернойНадбавкиФизическихЛиц", "ФизическоеЛицо", "ПараметрыИсчисленияПроцентаСевернойНадбавкиФи"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ПериодыСтажаПФР", "ФизическоеЛицо", "ПериодыСтажаПФР"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ПрименениеСтандартныхВычетовПоНДФЛВторичный", "ФизическоеЛицо", "ПрименениеСтандартныхВычетовПоНДФЛВторичный"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ПроцентыСевернойНадбавкиФизическихЛиц", "ФизическоеЛицо", "ПроцентыСевернойНадбавкиФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "РолиФизическихЛиц", "ФизическоеЛицо", "РолиФизическихЛиц00001"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "СведенияОбИнвалидностиФизическихЛиц", "ФизическоеЛицо", "СведенияОбИнвалидностиФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "СведенияОВремениДляРасчетаСреднегоФCC", "ФизическоеЛицо", "СведенияОВремениДляРасчетаСреднегоФCC"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "СведенияОНачисленияхДляРасчетаСреднегоЗаработкаФСС", "ФизическоеЛицо", "СведенияОНачисленияхДляРасчетаСреднегоЗаработ00001"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "СостоянияВБракеФизическихЛиц", "ФизическоеЛицо", "СостоянияВБракеФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "СтажиФизическихЛиц", "ФизическоеЛицо", "СтажиФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "СтандартныеВычетыПоНДФЛВторичный", "ФизическоеЛицо", "СтандартныеВычетыПоНДФЛВторичный"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "СтатусФизическихЛицКакНалогоплательщиковНДФЛ", "ФизическоеЛицо", "СтатусФизическихЛицКакНалогоплательщиковНДФЛ"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "СтатусФизическихЛицКакНалогоплательщиковНДФЛВторичный", "ФизическоеЛицо", "СтатусФизическихЛицКакНалогоплательщиковНДФЛВ"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "СтатусыЗастрахованныхФизическихЛиц", "ФизическоеЛицо", "СтатусыЗастрахованныхФизическихЛиц"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ТекущаяТарифнаяСтавкаСотрудников", "ФизическоеЛицо", "ТекущаяТарифнаяСтавкаСотрудников"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ТекущиеКадровыеДанныеСотрудников", "ФизическоеЛицо", "ТекущиеКадровыеДанныеСотрудников"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ТрудоваяДеятельностьФизическихЛиц", "ФизическоеЛицо", "ТрудоваяДеятельностьФизическихЛиц"));
	
	МассивОтбор = Параметры.ВыгруженныеФизическиеЛица;
	
	ИмяТаблицы = "Справочник.ФизическиеЛица";	
	
	Выполнить(Алгоритмы.ВыгрузитьПодчиненныеРегистрыСведений);	
	
КонецЕсли;//Если Не Параметры.ВыгруженныеФизическиеЛица.Количество() = 0 Тогда

Если Не Параметры.ВыгруженныеСотрудники.Количество() = 0 Тогда
	
	мРегистрыСведений = Новый Массив();
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "БухучетЗарплатыСотрудников", "Сотрудник", "БухучетЗарплатыСотрудников"));	
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ВидыЗанятостиСотрудниковИнтервальный", "Сотрудник", "ВидыЗанятостиСотрудниковИнтервальный"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ГрафикРаботыСотрудниковИнтервальный", "Сотрудник", "ГрафикРаботыСотрудниковИнтервальный"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ДанныеДляПодбораСотрудников", "Сотрудник", "ДанныеДляПодбораСотрудников"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ДанныеОбОплатеТрудаДляПодбораСотрудников", "Сотрудник", "ДанныеОбОплатеТрудаДляПодбораСотрудников"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ЗанятостьПозицийШтатногоРасписанияИнтервальный", "Сотрудник", "ЗанятостьПозицийШтатногоРасписанияИнтервальны"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ЗаработанныеПраваНаОтпуска", "Сотрудник", "ЗаработанныеПраваНаОтпуска"));	
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "КадроваяИсторияСотрудниковИнтервальный", "Сотрудник", "КадроваяИсторияСотрудниковИнтервальный"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "МестаВыплатыЗарплатыСотрудников", "Сотрудник", "МестаВыплатыЗарплатыСотрудников"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ОрганизацииВКоторыхРаботалиСотрудники", "Сотрудник", "ОрганизацииВКоторыхРаботалиСотрудники"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ПлановыеАвансыИнтервальный", "Сотрудник", "ПлановыеАвансыИнтервальный"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ПлановыеНачисленияИнтервальный", "Сотрудник", "ПлановыеНачисленияИнтервальный"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ПлановыйФОТ", "Сотрудник", "ПлановыйФОТ"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "ПлановыйФОТИтоги", "Сотрудник", "ПлановыйФОТИтоги"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "РолиСотрудников", "Сотрудник", "РолиСотрудников00001"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "СведенияОВремениДляРасчетаСреднегоОбщий", "Сотрудник", "СведенияОВремениДляРасчетаСреднегоОбщий"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "СведенияОНачисленияхДляРасчетаСреднегоЗаработкаОбщий", "Сотрудник", "СведенияОНачисленияхДляРасчетаСреднегоЗаработ"));
	мРегистрыСведений.Добавить(Новый Структура("ИмяРегистра, ПолеОтбора, ИмяПКО", "СостоянияСотрудников", "Сотрудник", "СостоянияСотрудников"));
		
	МассивОтбор = Параметры.ВыгруженныеСотрудники;
	
	ИмяТаблицы = "Справочник.Сотрудники";	
	
	Выполнить(Алгоритмы.ВыгрузитьПодчиненныеРегистрыСведений);	
	
КонецЕсли;//Если Не Параметры.ВыгруженныеСотрудники.Количество() = 0 Тогда

 

Код алгоритма ВыгрузитьПодчиненныеРегистрыСведений:

Непериодический = Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический;

Для Каждого Структура из мРегистрыСведений Цикл
	
	ИмяРегистра = Структура.ИмяРегистра;
	ПолеОтбора = Структура.ПолеОтбора;
	ИмяПКО = Структура.ИмяПКО;
	
	мПоляРегистра = Новый Массив();
	
	МетаданныеРегистра = Метаданные.РегистрыСведений[ИмяРегистра];
	
	Для Каждого ПолеРегистра из МетаданныеРегистра.Измерения Цикл
		мПоляРегистра.Добавить(ПолеРегистра.Имя);
	КонецЦикла;
	
	Для Каждого ПолеРегистра из МетаданныеРегистра.Ресурсы Цикл
		мПоляРегистра.Добавить(ПолеРегистра.Имя);
	КонецЦикла;
	
	Для Каждого ПолеРегистра из МетаданныеРегистра.Реквизиты Цикл
		мПоляРегистра.Добавить(ПолеРегистра.Имя);
	КонецЦикла;
	
	ПолеПериод = ?(МетаданныеРегистра.ПериодичностьРегистраСведений = Непериодический, "", "Период,");			
	
	ТекстЗапроса = "Выбрать " 				
	+ ПолеПериод 			
	+ СтрСоединить(мПоляРегистра, ",")
	+ " из РегистрСведений." + ИмяРегистра
	+ " Где " + ПолеОтбора + " В (&ЗначениеОтбора)";
	
	Запрос = Новый Запрос(ТекстЗапроса);
	Запрос.УстановитьПараметр("ЗначениеОтбора", МассивОтбор);
	
	ПоляРегистра = ПолеПериод + СтрСоединить(мПоляРегистра, ",");			
	
	Выборка = Запрос.Выполнить().Выбрать();
	Пока Выборка.Следующий() Цикл
		
		СтруктураСтроки = Новый Структура(ПоляРегистра);
		ЗаполнитьЗначенияСвойств(СтруктураСтроки, Выборка);				
		СтруктураСтроки.Вставить("Активность", Истина);
		
		ВыгрузитьПоПравилу(СтруктураСтроки,,,,ИмяПКО);
		
	КонецЦикла;
	
КонецЦикла;//Для Каждого Структура из мРегистрыСведений Цикл	

 

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

 

Загрузка в базу-приемник

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

Если ОбменДанными.Загрузка Тогда 
      Возврат; 
КонецЕсли;

вызывается функция ЗарплатаКадры.ОтключитьБизнесЛогикуПриЗаписи

Функция ОтключитьБизнесЛогикуПриЗаписи(Знач Объект) Экспорт
	
	Возврат Объект.ОбменДанными.Загрузка И (НЕ Объект.ДополнительныеСвойства.Свойство("ПроверятьБизнесЛогикуПриЗаписи")); 
		
КонецФункции

Реализовал удаление из дополнительных свойств объекта флажка «ПроверятьБизнесЛогикуПриЗаписи» в обработчике «После загрузки объекта» конвертации

Если Лев(ИмяТипаОбъекта, 8) = "Документ" Тогда	
	Для Каждого НаборЗаписей из Объект.Движения Цикл
		НаборЗаписей.ОбменДанными.Загрузка = Истина;
		Если НаборЗаписей.ДополнительныеСвойства.Свойство("ПроверятьБизнесЛогикуПриЗаписи") Тогда
			НаборЗаписей.ДополнительныеСвойства.Удалить("ПроверятьБизнесЛогикуПриЗаписи");
		КонецЕсли;
	КонецЦикла;
КонецЕсли;

 

Прочее

В моем случае база-источник была небольшого объема и удалось перенести все данные в один прием. Иначе пришлось бы выгружать данные по частям, например, вначале НСИ а затем документы с движениями.

В обеих базах заведены префиксы, поэтому проблем с дублированием кодов и номеров не возникло.

has been added to your cart:
Оформление заказа