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

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

 

Прочее

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

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

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

См. также

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    166462    333    277    

373

SALE! 20%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 22338 руб.

12.06.2017    141517    798    297    

419

SALE! 10%

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

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

35000 31500 руб.

15.12.2021    24019    169    51    

127

SALE! 10%

Перенос данных 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.19.x).

35000 31500 руб.

23.07.2020    51255    228    69    

185

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    36589    94    66    

89

SALE! 10%

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

Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы

55778 50200 руб.

29.10.2018    56207    59    105    

61

SALE! 10%

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

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!

48278 43450 руб.

25.02.2015    171173    303    257    

378

SALE! 15%

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

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

15300 13005 руб.

18.02.2016    186876    589    509    

526
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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 Сейчас в теме
может вообще не проводить документ командой, а просто записывать его с пометкой проведения, как есть в другой базе и после этого просто записывать отдельно его набор движений в регистры ?
Оставьте свое сообщение