Переход на версию Зарплата и управление персоналом 3.1.8 стал одним из самых сложных этапов для многих администраторов и разработчиков 1С. Этот релиз ознаменовал собой переход на БСП 3.0 и радикальное изменение многих внутренних механизмов, включая архитектуру прав доступа (RLS), структуру хранения лицевых счетов и логику работы справочника подразделений. Разберем наиболее острые проблемы и методы их решения, выявленные в ходе практической эксплуатации и обсуждений профессионального сообщества.
Одной из первых проблем, с которой сталкиваются пользователи после обновления, является ошибка отображения подразделений в формах списка сотрудников или документов (вместо названия подразделения выводится текст «Не оформлен» или объект не найден). Выясним причину этого поведения.
Проанализируем ситуацию: в версии 3.1.8 был переработан механизм хранения иерархии подразделений. Теперь за отображение структуры отвечает регистр сведений Подчиненность подразделений организаций. Если при обновлении или переносе данных из версии 2.5 этот регистр не заполнился корректно, возникают проблемы с видимостью.
Решение: необходимо восстановить записи в регистре. Рассмотрим способ дозаполнения регистра через проверку существующих данных:
Подчиненность подразделений организаций.Подразделения.Также обратим внимание на обработчик ПередЗаписью в справочнике Подразделения. В версии 3.1.8 появилась жесткая проверка на смену владельца (организации):
Процедура ПередЗаписью(Отказ)
Если ЗарплатаКадры.ОтключитьБизнесЛогикуПриЗаписи(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
Если НЕ ЭтоНовый() Тогда
Если ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Ссылка, "Владелец") <> Владелец Тогда
ВызватьИсключение НСтр("ru='Нельзя менять организацию - владельца элемента справочника ""Подразделения""'");
КонецЕсли;
КонецЕсли;
// ... дальнейшая логика заполнения реквизитов упорядочивания
КонецПроцедуры
Если вы выполняете загрузку данных и сталкиваетесь с этой ошибкой, используйте функцию ЗарплатаКадры.ОтключитьБизнесЛогикуПриЗаписи, чтобы временно обойти проверку при массовой загрузке.
В версии 3.1.8 регистр сведений Лицевые счета сотрудников перестал быть периодическим. Это изменение было продиктовано логикой, согласно которой у сотрудника в рамках одного зарплатного проекта не может быть нескольких действующих счетов одновременно.
Разберем последствия: при обновлении системы старый периодический регистр переименовывается в УдалитьЛицевыеСчетаСотрудников, а данные переносятся в новый непериодический регистр. Если в истории сотрудника было несколько записей по одному проекту (например, перевыпуск карты с изменением номера счета), механизм обновления может дать сбой или выбрать некорректную «последнюю» запись.
Что нужно сделать:
УдалитьЛицевыеСчетаСотрудников, если обнаружили пустоту в ведомостях в банк.Переход на БСП 3.0 внедрил «производительный режим» разграничения прав доступа. Рассмотрим типичную ситуацию: кадровик с ограниченными правами не может записать физическое лицо или видит ошибку «Объект не найден» в полях штатного расписания.
Выясним причину: в некоторых типовых запросах (например, при проверке возраста или медосмотров) параметр ТолькоРазрешенные перестал отрабатывать корректно или был жестко установлен в Ложь в программном коде. Посмотрим на пример исправления в общем модуле МедицинскиеОсмотры:
// В процедуре ЗарегистрироватьИзменениеВозрастаФизическогоЛица
// Исходный код:
КадровыйУчет.СоздатьВТТекущиеКадровыеДанныеСотрудников(МенеджерВТ, Ложь, ОтборыМассив, "ГоловнаяОрганизация");
// Исправленный код (второй параметр ТолькоРазрешенные установлен в Истина):
КадровыйУчет.СоздатьВТТекущиеКадровыеДанныеСотрудников(МенеджерВТ, Истина, ОтборыМассив, "ГоловнаяОрганизация");
Также после обновления обязательно запустите регламентное задание Заполнение данных для ограничения доступа. Пока это задание не выполнится полностью, пользователи могут видеть пустые списки или получать ошибки прав доступа, так как таблицы «разрешенных» объектов еще не сформированы.
При обмене данными между ЗУП 3.1.8 и БП 3.0 часто возникает ошибка: Object field not found (СоответствуетСудамЗарегистрированнымВРоссийскомМеждународномРеестреСудов).
Проанализируем ситуацию: в ЗУП 3.1.8 этот реквизит в справочнике Подразделения был помечен префиксом Удалить, так как его функционал изменился. Однако правила обмена на стороне Бухгалтерии могут все еще ожидать старое имя поля.
Варианты решения:
Удалить) или скорректируйте правила обмена через DataExchangeXSLT.В 3.1.8 многие печатные формы (Т-1, Т-5 и др.) были переведены на использование Системы компоновки данных (СКД). Это позволяет пользователям настраивать макеты без изменения конфигурации (в версии КОРП возможности еще шире), но это часто ломает внешние печатные формы (ВПФ).
Посмотрим, как изменился программный интерфейс: многие функции в модулях ЗарплатаКадры, которые раньше возвращали структуру данных для печати, теперь используют представления (Представление_КадровыеДанныеСотрудников). Если ваша ВПФ обращается к удаленным экспортным процедурам, ее придется переписать, используя новые механизмы запросов через менеджеры временных таблиц 1С.
Рекомендация: при создании новых отчетов и обработок старайтесь использовать программный интерфейс КадровыйУчет.КадровыеДанныеСотрудников, который более устойчив к изменениям релизов, чем прямое обращение к регистрам сведений.
Несмотря на обилие «детских болезней» релиза 3.1.8, он принес и долгожданные функции, такие как полноценная работа с несколькими лицевыми счетами и расширенные возможности настройки печатных форм. Проанализировав вышеописанные кейсы, мы видим, что большинство проблем решается либо запуском сервисных процедур обновления данных, либо точечной правкой кода в расширениях для обхода ошибок RLS.