При переходе с конфигурации «Зарплата и Управление Персоналом» редакции 2.5 на редакцию 3.1 пользователи и специалисты часто сталкиваются с ошибками загрузки данных. Одна из распространенных проблем — сбой при записи элементов штатного расписания со следующим сообщением:
Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ПередЗаписью': {Справочник.ШтатноеРасписание.МодульОбъекта(78)}: Ошибка при вызове метода контекста (Записать): Значение поля "Организация" не заполнено или заполнено неверно
В этой статье мы подробно проанализируем причины возникновения данной ошибки, разберем особенности архитектуры обеих конфигураций и рассмотрим проверенные способы решения проблемы.
Выясним, почему возникает данная проблема. Архитектура хранения штатного расписания в ЗУП 2.5 и ЗУП 3.1 принципиально отличается:
В ЗУП 2.5 штатное расписание хранилось в регистре сведений ШтатноеРасписаниеОрганизаций. В ЗУП 3.1 позиции штатного расписания представляют собой элементы справочника ШтатноеРасписание. В модуле объекта этого справочника в обработчике ПередЗаписью заложена жесткая проверка: реквизиты Организация и Подразделение обязательно должны быть заполнены и соответствовать друг другу.
Основные причины, из-за которых реквизит Организация оказывается незаполненным при переносе:
ШтатноеРасписаниеОрганизаций присутствуют «зависшие» записи без указания организации или с битыми ссылками на подразделения и должности.Организация мог оставляться пустым с расчетом на наследование от вышестоящей группы. При конвертации данных алгоритм обмена не может определить организацию-владельца для позиции такого подразделения.ГоловнаяОрганизация.Рассмотрим порядок действий по поиску и исправлению проблемных данных в исходной базе ЗУП 2.5:
ШтатноеРасписаниеОрганизаций, чтобы найти записи с незаполненной организацией или подразделением.
ВЫБРАТЬ
ШР.Организация КАК Организация,
ШР.Подразделение КАК Подразделение,
ШР.Должность КАК Должность
ИЗ
РегистрСведений.ШтатноеРасписаниеОрганизаций КАК ШР
ГДЕ
ШР.Организация ЕСТЬ NULL
ИЛИ ШР.Подразделение ЕСТЬ NULL
Если в результате выполнения запроса найдены строки с незаполненной организацией или битыми ссылками, исправим их вручную или удалим устаревшие записи из регистра.
Проанализируем справочник ПодразделенияОрганизаций в базе ЗУП 2.5:
ПодразделенияОрганизаций.Организация явно заполнен у каждого подразделения. Если поле пустое, проставим соответствующую организацию.Если данные в базе-источнике корректны, но ошибка продолжается, разберем технический способ отладки выгрузки:
УниверсальныйОбменДаннымиXML, задействовав внешние правила обмена.ШтатноеРасписание приемника в обработчике ПередЗаписью, чтобы выяснить, какой конкретно элемент переносится с пустым значением реквизита.Посмотрим на вариант решения, если историю изменения штатного расписания переносить в автоматическом режиме не требуется: