Если Вы настраивали обмен данными в распределенной информационной базе конфигурации 1С:Зарплата и управление персоналом, ред. 3.1, то могли заметить, что с течением времени время обмена увеличивается, появляются аварийные завершения работы программы из-за нехватки оперативной памяти и пр.
Проблема заключается в том, что при выгрузке некоторых объектов (физических лиц и др.) регистрируются для обмена и их связанные данные, которые хранятся в регистрах сведений. Например, для справочника «Физические лица» это - ФИО физических лиц, воинский учет, гражданство, документы, профессии и т.д.
При выполнении обмена, к тому моменту, когда выполняется выгрузка физических лиц и отрабатывают правила регистрации, ранее зарегистрированная связанная информация уже выгружена, но регистрация выполняется повторно. В результате - хотя данные и выгружены, но регистрироваться они будут вновь и вновь.
Для обхода проблемы найдите процедуру ЗарегистрироватьСвязанныеРегистрыСведенийОбъекта() общего модуля ОбменДаннымиЗарплатаКадрыРасширенный и замените ее текст на следующий:
Если Выгрузка Или Получатели.Количество() = 0 Тогда
Возврат;
КонецЕсли;
СвязанныеРегистрыСведенийОбъекта = ОбменДаннымиПовтИспЗарплатаКадрыРасширенный.СвязанныеРегистрыСведенийОбъекта(ИмяПланаОбмена, СсылкаНаОбъект);
Для Каждого СвязанныеДанные Из СвязанныеРегистрыСведенийОбъекта Цикл
МетаданныеРС = Метаданные.РегистрыСведений[СвязанныеДанные.Ключ];
ИзмеренияРС = МетаданныеРС.Измерения;
НаборЗаписей = РегистрыСведений[СвязанныеДанные.Ключ].СоздатьНаборЗаписей();
Выборка = СвязанныеДанные.Значение.Выбрать();
Пока Выборка.Следующий() Цикл
Для каждого ИзмерениеРС Из ИзмеренияРС Цикл
Если ИзмерениеРС.ОсновнойОтбор Тогда
НаборЗаписей.Отбор[ИзмерениеРС.Имя].Установить(Выборка[ИзмерениеРС.Имя]);
КонецЕсли;
КонецЦикла;
Если МетаданныеРС.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда
НаборЗаписей.Отбор.Период.Установить(Выборка.Период);
КонецЕсли;
НаборЗаписей.Прочитать();
ИзмененияНеЗарегистрированы = Ложь;
Для каждого Получатель ИЗ Получатели Цикл
Если НЕ ПланыОбмена.ИзменениеЗарегистрировано(Получатель, НаборЗаписей) Тогда
ИзмененияНеЗарегистрированы = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ИзмененияНеЗарегистрированы Тогда
ПланыОбмена.ЗарегистрироватьИзменения(Получатели, НаборЗаписей);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Второй вариант - воспользоваться расширением из прикрепленного файла. В нем заимствована и отредактирована вышеописанная процедура. При подключении расширения необходимо снять флажок «Безопасный режим», т.к. выполняется программный код общего модуля. Главное - не забыть отключить это расширение, когда будет выпущен релиз ЗУП с исправлением этой странной ситуации.