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