ЗУП 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 не будет опубликован. Обязательные поля помечены *