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