ЗУП 3.1.7-3.1.8. Решаем проблему "неснимаемой" регистрации связанных регистров сведений

Частный случай решения проблемы обмена в распределенной базе ЗУП 3.1.7 — 3.1.8.

Если Вы настраивали обмен данными в распределенной информационной базе конфигурации 1С:Зарплата и управление персоналом, ред. 3.1, то могли заметить, что с течением времени время обмена увеличивается, появляются аварийные завершения работы программы из-за нехватки оперативной памяти и пр.

Проблема заключается в том, что при выгрузке некоторых объектов (физических лиц и др.) регистрируются для обмена и их связанные данные, которые хранятся в регистрах сведений. Например, для справочника «Физические лица» это — ФИО физических лиц, воинский учет, гражданство, документы, профессии и т.д.

При выполнении обмена, к тому моменту, когда выполняется выгрузка физических лиц и отрабатывают правила регистрации, ранее зарегистрированная связанная информация уже выгружена, но регистрация выполняется повторно. В результате — хотя данные и выгружены, но регистрироваться они будут вновь и вновь.

Для обхода проблемы найдите процедуру ЗарегистрироватьСвязанныеРегистрыСведенийОбъекта() общего модуля ОбменДаннымиЗарплатаКадрыРасширенный и замените ее текст на следующий:

Если Выгрузка Или Получатели.Количество() = 0 Тогда
Возврат;
КонецЕсли;

СвязанныеРегистрыСведенийОбъекта = ОбменДаннымиПовтИспЗарплатаКадрыРасширенный.СвязанныеРегистрыСведенийОбъекта(ИмяПланаОбмена, СсылкаНаОбъект);
Для Каждого СвязанныеДанные Из СвязанныеРегистрыСведенийОбъекта Цикл
МетаданныеРС = Метаданные.РегистрыСведений[СвязанныеДанные.Ключ];
ИзмеренияРС = МетаданныеРС.Измерения;

НаборЗаписей = РегистрыСведений[СвязанныеДанные.Ключ].СоздатьНаборЗаписей();
Выборка = СвязанныеДанные.Значение.Выбрать();
Пока Выборка.Следующий() Цикл
Для каждого ИзмерениеРС Из ИзмеренияРС Цикл
Если ИзмерениеРС.ОсновнойОтбор Тогда
НаборЗаписей.Отбор[ИзмерениеРС.Имя].Установить(Выборка[ИзмерениеРС.Имя]);
КонецЕсли;
КонецЦикла;
Если МетаданныеРС.ПериодичностьРегистраСведений <> Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.Непериодический Тогда
НаборЗаписей.Отбор.Период.Установить(Выборка.Период);
КонецЕсли;
НаборЗаписей.Прочитать();

ИзмененияНеЗарегистрированы = Ложь;

Для каждого Получатель ИЗ Получатели Цикл

Если НЕ ПланыОбмена.ИзменениеЗарегистрировано(Получатель, НаборЗаписей) Тогда

ИзмененияНеЗарегистрированы = Истина;
Прервать;

КонецЕсли;

КонецЦикла;

Если ИзмененияНеЗарегистрированы Тогда

ПланыОбмена.ЗарегистрироватьИзменения(Получатели, НаборЗаписей);

КонецЕсли;

КонецЦикла;

КонецЦикла;

Второй вариант — воспользоваться расширением из прикрепленного файла. В нем заимствована и отредактирована вышеописанная процедура. При подключении расширения необходимо снять флажок «Безопасный режим», т.к. выполняется программный код общего модуля. Главное — не забыть отключить это расширение, когда будет выпущен релиз ЗУП с исправлением этой странной ситуации.

14 Comments

  1. СуперСтар

    Для нас тема весьма актуальна. Спасибо за разбор проблемы.

    Reply
  2. Mihasya

    А кто в курсе, в каком релизе исправят эту странную ситуацию?

    Reply
  3. teller

    больше года назад писал на хотлайн, реакции нет,

    пользуюсь самодельным костылем

    Reply
  4. Mihasya

    (3) Странно, у нас эта проблема вылезла только когда обновились до 3.1.8…

    Reply
  5. teller

    В ОбменДаннымиЗарплатаКадры.ЗарегистрироватьСвязанныеРегистрыСведенийОбъекта

    не записывался номер сообщения.

    файл распухал но в подчиненном узле изменения не принимались.

    «Ваше письмо, зарегистрированное под номером SW1229554,

    будет рассмотрено в ближайшее время.»

    Reply
  6. chesnokov-a-v

    При установке исправления РИБ_1021.cfe возникла ошибка:

    {Обработка.УстановкаОбновлений.Форма.Форма.Форма(594)}: Расширение не является патчем.

    ВызватьИсключение НСтр(«ru = ‘Расширение не является патчем.'»);

    конфигурация хочет видеть имя расширения начинающееся на EF…

    P.S. Устанавливал в режиме Предприятия

    Reply
  7. tomvlad

    (6) Подключайте расширение в разделе «Администрирование» в форме «Печатные формы, отчеты и обработки — Расширения».

    Reply
  8. chesnokov-a-v

    (7) Спасибо.

    Reply
  9. ShootNICK

    3.1.9.188 — а воз и ныне там .

    Reply
  10. NetDozor

    вот что интересно, данные по регистрам копятся только в центральном узле, а на удаленном все нормально ничего не копится, странно как то.

    Reply
  11. NetDozor

    и еще может у кого такая же проблема, когда на каком-либо узле оформляют документ «Прием на работу» и проводят его, то по обменам он как то кривовато ходит, а именно не все движения документа выгружаются, и из-за этого в других узлах не видно что сотрудник принят на работу, приходится перепроводить приемы на работы с других узлов, но в этом случае задваивается информация в регистре сведений «Данные для подбора сотрудников»

    Reply
  12. Taxes

    (11) Добрый день. С проблемой приема на работу в РИБ как боретесь? Возникла такая же ситуация — поиск ссылок на документ «Прием на работу» в периферийной БД и центральной показывает, что движения документа не все переносятся. Перепроведение пока помогает, но хочется убрать ручной труд))

    Спасибо

    Reply
  13. NetDozor

    (12) Пока также продолжаем перепроводить, другого решения еще не нашли.

    Reply
  14. ZhiharevDmitriy

    В 3.1.10 все также проблема актуальна. А кто-нибудь сможет мне объяснить, зачем вообще в РИБ нужно регистрировать связанные регистры сведений?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *