При приеме на работу или ведении кадрового учета в программе 1С:Зарплата и Управление Персоналом часто возникает ситуация, когда необходимо внести данные о семейном положении, которые фактически относятся к прошлому. Однако система блокирует запись, так как дата события попадает в период, закрытый Датой запрета изменения. Давайте разберем, как грамотно решить эту задачу, не нарушая целостность данных и не создавая лишних сложностей.
Прежде всего, важно проанализировать, как работают механизмы 1С. В конфигурации сведения о брачном статусе хранятся в регистре сведений. Поле Период (или «Действует с») в этом регистре означает дату, начиная с которой статус становится актуальным для системы. Это не обязательно дата фактического заключения брака в свидетельстве, а дата, с которой программа начинает учитывать это состояние.
Если вы пытаетесь ввести данные, которые физически произошли в прошлом, но период уже закрыт для редактирования, система будет выдавать ошибку. Рассмотрим способы решения проблемы.
Чаще всего для целей расчета зарплаты или кадрового учета нет необходимости хранить дату свадьбы десятилетней давности. Если законодательство или внутренние регламенты не требуют обязательного указания точной даты события в прошлом, воспользуйтесь следующим методом:
Дополнительные реквизиты и сведения.Этот подход позволяет избежать манипуляций с датами запрета и сохраняет корректность исторических данных в отчетности.
Если кадровому сотруднику необходимо вносить исторические сведения, возможно, текущие настройки Профилей групп доступа слишком строгие. Рассмотрим настройки разделов данных в запрете редактирования. Вы можете предоставить исключительные права для определенных пользователей, чтобы они могли редактировать сведения о физических лицах, несмотря на общую дату запрета.
Если бизнес-процессы требуют обязательного ввода именно «исторической» даты в регистр и иные способы не подходят, необходимо программно изменить логику проверки дат. Для этого в ЗУП предусмотрен общий модуль ДатыЗапретаИзмененияПереопределяемый.
Вы можете использовать процедуру ПриОпределенииОбъектовСДатамиЗапрета. В этой процедуре можно программно исключить ваш регистр сведений из-под действия запрета при определенных условиях.
Рассмотрим пример логики, которую можно добавить в модуль:
Процедура ПриОпределенииОбъектовСДатамиЗапрета(Объекты) Экспорт
// Исключаем возможность проверки даты для нашего регистра
Объекты.Удалить(Объекты.Найти("РегистрСведений.СемейноеПоложениеФизическихЛиц"));
КонецПроцедуры
Важно: Будьте осторожны при внесении изменений в типовой код. После таких правок рекомендуется внимательно протестировать систему, чтобы убедиться, что возможность изменения старых данных не приведет к нежелательным последствиям в отчетности или расчетах, которые уже были зафиксированы в закрытом периоде.
При решении данной задачи мы рекомендуем придерживаться следующей последовательности:
СемейноеПоложениеФизическихЛиц. Если нет — используйте дату приема.Дополнительный реквизит с типом «Дата». Это самый безопасный и быстрый способ.Датах запрета без изменения кода.Таким образом, вы сможете поддерживать чистоту данных в системе, не нарушая при этом финансовую дисциплину и требования по закрытию периодов.