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