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