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

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 Файловый обмен (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    143332    821    297    

428

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    168368    344    279    

380

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.20.x), также подходят для релиза 11.5 (11.5.19.x).

35000 31500 руб.

23.07.2020    53426    236    73    

192

SALE! 10%

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

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

35000 31500 руб.

15.12.2021    24828    174    51    

132

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    37247    99    66    

95

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

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

12000 руб.

25.09.2016    81567    324    253    

276

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    172021    307    258    

384

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

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

120000 руб.

19.08.2020    25695    25    1    

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