Если Вы настраивали обмен данными в распределенной информационной базе конфигурации 1С:Зарплата и управление персоналом, ред. 3.1, то могли заметить, что с течением времени время обмена увеличивается, появляются аварийные завершения работы программы из-за нехватки оперативной памяти и пр.
Проблема заключается в том, что при выгрузке некоторых объектов (физических лиц и др.) регистрируются для обмена и их связанные данные, которые хранятся в регистрах сведений. Например, для справочника «Физические лица» это — ФИО физических лиц, воинский учет, гражданство, документы, профессии и т.д.
При выполнении обмена, к тому моменту, когда выполняется выгрузка физических лиц и отрабатывают правила регистрации, ранее зарегистрированная связанная информация уже выгружена, но регистрация выполняется повторно. В результате — хотя данные и выгружены, но регистрироваться они будут вновь и вновь.
Для обхода проблемы найдите процедуру ЗарегистрироватьСвязанныеРегистрыСведенийОбъекта() общего модуля ОбменДаннымиЗарплатаКадрыРасширенный и замените ее текст на следующий:
Если Выгрузка Или Получатели.Количество() = 0 Тогда
Возврат;
КонецЕсли;
СвязанныеРегистрыСведенийОбъекта = ОбменДаннымиПовтИспЗарплатаКадрыРасширенный.СвязанныеРегистрыСведенийОбъекта(ИмяПланаОбмена, СсылкаНаОбъект);
Для Каждого СвязанныеДанные Из СвязанныеРегистрыСведенийОбъекта Цикл
МетаданныеРС = Метаданные.РегистрыСведений[СвязанныеДанные.Ключ];
ИзмеренияРС = МетаданныеРС.Измерения;
НаборЗаписей = РегистрыСведений[СвязанныеДанные.Ключ].СоздатьНаборЗаписей();
Выборка = СвязанныеДанные.Значение.Выбрать();
Пока Выборка.Следующий() Цикл
Для каждого ИзмерениеРС Из ИзмеренияРС Цикл
Если ИзмерениеРС.ОсновнойОтбор Тогда
НаборЗаписей.Отбор[ИзмерениеРС.Имя].Установить(Выборка[ИзмерениеРС.Имя]);
КонецЕсли;
КонецЦикла;
Если МетаданныеРС.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда
НаборЗаписей.Отбор.Период.Установить(Выборка.Период);
КонецЕсли;
НаборЗаписей.Прочитать();
ИзмененияНеЗарегистрированы = Ложь;
Для каждого Получатель ИЗ Получатели Цикл
Если НЕ ПланыОбмена.ИзменениеЗарегистрировано(Получатель, НаборЗаписей) Тогда
ИзмененияНеЗарегистрированы = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если ИзмененияНеЗарегистрированы Тогда
ПланыОбмена.ЗарегистрироватьИзменения(Получатели, НаборЗаписей);
КонецЕсли;
КонецЦикла;
КонецЦикла;
Второй вариант — воспользоваться расширением из прикрепленного файла. В нем заимствована и отредактирована вышеописанная процедура. При подключении расширения необходимо снять флажок «Безопасный режим», т.к. выполняется программный код общего модуля. Главное — не забыть отключить это расширение, когда будет выпущен релиз ЗУП с исправлением этой странной ситуации.
Для нас тема весьма актуальна. Спасибо за разбор проблемы.
А кто в курсе, в каком релизе исправят эту странную ситуацию?
больше года назад писал на хотлайн, реакции нет,
пользуюсь самодельным костылем
(3) Странно, у нас эта проблема вылезла только когда обновились до 3.1.8…
В ОбменДаннымиЗарплатаКадры.ЗарегистрироватьСвязанныеРегистрыСведенийОбъекта
не записывался номер сообщения.
файл распухал но в подчиненном узле изменения не принимались.
«Ваше письмо, зарегистрированное под номером SW1229554,
будет рассмотрено в ближайшее время.»
При установке исправления РИБ_1021.cfe возникла ошибка:
{Обработка.УстановкаОбновлений.Форма.Форма.Форма(594)}: Расширение не является патчем.
ВызватьИсключение НСтр(«ru = ‘Расширение не является патчем.'»);
конфигурация хочет видеть имя расширения начинающееся на EF…
P.S. Устанавливал в режиме Предприятия
(6) Подключайте расширение в разделе «Администрирование» в форме «Печатные формы, отчеты и обработки — Расширения».
(7) Спасибо.
3.1.9.188 — а воз и ныне там .
вот что интересно, данные по регистрам копятся только в центральном узле, а на удаленном все нормально ничего не копится, странно как то.
и еще может у кого такая же проблема, когда на каком-либо узле оформляют документ «Прием на работу» и проводят его, то по обменам он как то кривовато ходит, а именно не все движения документа выгружаются, и из-за этого в других узлах не видно что сотрудник принят на работу, приходится перепроводить приемы на работы с других узлов, но в этом случае задваивается информация в регистре сведений «Данные для подбора сотрудников»
(11) Добрый день. С проблемой приема на работу в РИБ как боретесь? Возникла такая же ситуация — поиск ссылок на документ «Прием на работу» в периферийной БД и центральной показывает, что движения документа не все переносятся. Перепроведение пока помогает, но хочется убрать ручной труд))
Спасибо
(12) Пока также продолжаем перепроводить, другого решения еще не нашли.
В 3.1.10 все также проблема актуальна. А кто-нибудь сможет мне объяснить, зачем вообще в РИБ нужно регистрировать связанные регистры сведений?