Как исправить ошибку «Значение поля "Организация" не заполнено или заполнено неверно» при переносе из ЗУП 2.5 в ЗУП 3.1?

Программист 1С v8.3 (Управляемые формы) 1С:Зарплата и Управление Персоналом IT и автоматизация бизнеса
← На главную

При переходе с конфигурации «Зарплата и Управление Персоналом» редакции 2.5 на редакцию 3.1 пользователи и специалисты часто сталкиваются с ошибками загрузки данных. Одна из распространенных проблем — сбой при записи элементов штатного расписания со следующим сообщением:

Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ПередЗаписью': {Справочник.ШтатноеРасписание.МодульОбъекта(78)}: Ошибка при вызове метода контекста (Записать): Значение поля "Организация" не заполнено или заполнено неверно

В этой статье мы подробно проанализируем причины возникновения данной ошибки, разберем особенности архитектуры обеих конфигураций и рассмотрим проверенные способы решения проблемы.

Причины возникновения ошибки

Выясним, почему возникает данная проблема. Архитектура хранения штатного расписания в ЗУП 2.5 и ЗУП 3.1 принципиально отличается:

В ЗУП 2.5 штатное расписание хранилось в регистре сведений ШтатноеРасписаниеОрганизаций. В ЗУП 3.1 позиции штатного расписания представляют собой элементы справочника ШтатноеРасписание. В модуле объекта этого справочника в обработчике ПередЗаписью заложена жесткая проверка: реквизиты Организация и Подразделение обязательно должны быть заполнены и соответствовать друг другу.

Основные причины, из-за которых реквизит Организация оказывается незаполненным при переносе:

  1. Некорректные или устаревшие записи в регистре сведений: В исходной базе ЗУП 2.5 в регистре сведений ШтатноеРасписаниеОрганизаций присутствуют «зависшие» записи без указания организации или с битыми ссылками на подразделения и должности.
  2. Незаполненная организация в иерархии подразделений: В ЗУП 2.5 у подчиненных подразделений реквизит Организация мог оставляться пустым с расчетом на наследование от вышестоящей группы. При конвертации данных алгоритм обмена не может определить организацию-владельца для позиции такого подразделения.
  3. Проблемы с филиальной структурой: У обособленных подразделений не заполнен или некорректно указан реквизит ГоловнаяОрганизация.
  4. Использование устаревших правил обмена: Встроенные правила конвертации не соответствуют точным релизам источников или приемников.

Способ 1. Проверка и очистка регистра сведений штатного расписания в ЗУП 2.5

Рассмотрим порядок действий по поиску и исправлению проблемных данных в исходной базе ЗУП 2.5:

  1. Откроем консоль запросов в базе ЗУП 2.5 и выполним запрос к регистру сведений ШтатноеРасписаниеОрганизаций, чтобы найти записи с незаполненной организацией или подразделением.
  2. Запрос для проверки данных может выглядеть следующим образом:

ВЫБРАТЬ
    ШР.Организация КАК Организация,
    ШР.Подразделение КАК Подразделение,
    ШР.Должность КАК Должность
ИЗ
    РегистрСведений.ШтатноеРасписаниеОрганизаций КАК ШР
ГДЕ
    ШР.Организация ЕСТЬ NULL
    ИЛИ ШР.Подразделение ЕСТЬ NULL

Если в результате выполнения запроса найдены строки с незаполненной организацией или битыми ссылками, исправим их вручную или удалим устаревшие записи из регистра.

Способ 2. Проверка и заполнение организации во всей иерархии подразделений

Проанализируем справочник ПодразделенияОрганизаций в базе ЗУП 2.5:

  1. Перейдем в справочник ПодразделенияОрганизаций.
  2. Проверим все элементы справочника, включая вложенные группы и узлы-родители.
  3. Убедимся, что реквизит Организация явно заполнен у каждого подразделения. Если поле пустое, проставим соответствующую организацию.

Способ 3. Использование внешних правил переноса и отладка

Если данные в базе-источнике корректны, но ошибка продолжается, разберем технический способ отладки выгрузки:

  1. Убедимся, что используются самые свежие правила обмена. Актуальный файл правил обычно поставляется в составе дистрибутива обновления ЗУП 3.1 в каталоге с правилами переноса.
  2. Выполним перенос с помощью обработки УниверсальныйОбменДаннымиXML, задействовав внешние правила обмена.
  3. Если ошибка сохраняется, установим точку останова с условием в модуле объекта справочника ШтатноеРасписание приемника в обработчике ПередЗаписью, чтобы выяснить, какой конкретно элемент переносится с пустым значением реквизита.

Способ 4. Альтернативный вариант переноса кадровых данных

Посмотрим на вариант решения, если историю изменения штатного расписания переносить в автоматическом режиме не требуется:

  1. В помощнике перехода или настройках выгрузки снимем флаг переноса штатного расписания.
  2. Выполним перенос сотрудников, физических лиц и кадровой истории.
  3. После завершения загрузки в ЗУП 3.1 сформируем штатное расписание автоматически на основе перенесенных кадровых документов и текущей расстановки сотрудников.
← На главную