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

10.01.21

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

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

 

Прочее

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

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

Вступайте в нашу телеграмм-группу Инфостарт

ЗУП объединение баз конвертация данных

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

SALE! 15%

Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

27633 руб.

12.06.2017    162258    980    324    

483

SALE! 10%

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

Переносите справочную информацию, остатки и документы из УПП 1.3 в Бухгалтерию 3.0 с помощью готовых правил. Переносится более 50 видов документов. Простой интерфейс и понятные настройки.

42000 37800 руб.

15.12.2021    35022    261    64    

199

Внешние источники данных Кадровый учет Файловый обмен (TXT, XML, DBF), FTP Перенос данных 1C Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактическим удержаниям, НДФЛ, вычетам, страховым взносам из базы Парус 10 учреждений (далее Парус) в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (далее 1С) и начать с ней работать с любого месяца года.

85400 руб.

05.10.2022    13956    16    8    

17

Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Программист 1С:Предприятие 8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.

50200 руб.

24.04.2015    208786    176    253    

296

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

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

20740 руб.

25.09.2016    92179    420    268    

349

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

Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 3, УНФ 3 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.

27572 руб.

18.02.2016    205055    678    543    

564

SALE! 10%

Перенос данных 1C Системный администратор Программист 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Переносите справочную информацию, остатки и документы из Бухгалтерии 3.0 в Управление торговлей 11.5 с помощью готовых правил. Переносится более 30 видов документов. Простой интерфейс и понятные настройки.

40000 36000 руб.

12.05.2023    9690    19    0    

27
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. fktrc171 05.08.21 17:05 Сейчас в теме
Немного не по теме , но пытаемся использовать Ваш опыт.
Пытаемся загрузить в одну базу ЗГУ3 с данными по организации1 данные из 2 баз ЗГУ3 с другими организациями.
Проблема началась с того , что префиксов в базах не было.
Как перенумеровать все объекты в базах ?
2. mongiilol 07.10.21 10:11 Сейчас в теме
(1) Префикс можно добавлять в КД, в момент записи объекта
3. user1704270 12.07.22 14:05 Сейчас в теме
Добрый день , сколько стоит объединения баз по нашему примеру.
4. angabanga5 02.12.22 19:52 Сейчас в теме
а последовательность ПВД надо использовать в правилах? то есть первым делом надо грузить какие окументы- приемы на работу и кадровые переводы, а потом все остальные? я правильно понл? потому что у меня на проверках при проведении вылетают ошибки и я ничего с ними сделать не могу
5. angabanga5 02.12.22 20:58 Сейчас в теме
может вообще не проводить документ командой, а просто записывать его с пометкой проведения, как есть в другой базе и после этого просто записывать отдельно его набор движений в регистры ?
Для отправки сообщения требуется регистрация/авторизация