Что делать, если при обновлении данных для среднего заработка в ЗУП возникает ошибка 'Значение не является значением объектного типа 'НайтиСтроки''?

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

При работе в 1С:Зарплата и Управление Персоналом иногда возникает необходимость массово обновить данные для расчета среднего заработка, например, после изменения алгоритмов расчета премий. Для этого используется стандартная обработка "Обновить данные для расчета среднего заработка". Однако в процессе ее выполнения можно столкнуться с ошибкой "Значение не является значением объектного типа 'НайтиСтроки'", которая прерывает работу, обработав лишь часть документов.

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

Выясним причину ошибки

Сама по себе ошибка "Значение не является значением объектного типа 'НайтиСтроки'" говорит нам о том, что в коде программы происходит попытка использовать метод НайтиСтроки() для переменной, которая не является таблицей значений или табличной частью документа. Этот метод предназначен для поиска строк в коллекциях, и если переменная, к которой он применяется, пуста (Неопределено) или имеет другой тип, платформа 1С сгенерирует исключение.

В контексте обработки по обновлению среднего заработка это обычно происходит по одной из следующих причин:

  1. Ошибки в доработанном коде (расширениях). Это самая частая причина. Если в вашей базе есть расширения, которые изменяют логику проведения расчетных документов, они могут конфликтовать со стандартным механизмом. Обработка, по сути, перепроводит документы по определенным регистрам, и если в этот момент срабатывает измененный код, он может привести к ошибке.
  2. Некорректные данные в документах. В базе могут существовать "проблемные" документы. Например, документы, созданные путем переноса данных, или старые документы с незаполненными табличными частями, которые стандартный алгоритм не может корректно обработать.
  3. Ошибка в конкретном релизе конфигурации. Хотя и редко, но такая вероятность существует. Иногда в типовой конфигурации могут быть недочеты, которые исправляются в последующих обновлениях или патчах.

Разберем по шагам, как найти и исправить проблему

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

1. Проверка на наличие доработок (расширений)

Как показала практика, именно пользовательские доработки чаще всего вызывают подобные сбои. Поэтому первым делом стоит проверить их влияние.

  1. Перейдите в раздел "Администрирование" – "Печатные формы, отчеты и обработки" – "Расширения".
  2. Снимите флажок "Активно" у всех расширений, которые могут влиять на расчет зарплаты или проведение документов. Если вы не уверены, можно временно отключить все пользовательские расширения.
  3. Перезапустите сеанс 1С и снова запустите обработку "Обновить данные для расчета среднего заработка".

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

2. Отладка кода для точной локализации ошибки

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

  1. Запустите 1С в режиме конфигуратора.
  2. В главном меню выберите "Отладка" – "Остановка по ошибке". В открывшемся окне установите флажок "Останавливаться по ошибке".
  3. Запустите режим отладки (клавиша F5) и в пользовательском режиме снова запустите обработку.
  4. В момент возникновения ошибки выполнение кода будет прервано, и конфигуратор автоматически откроет модуль, в котором произошел сбой, указав на проблемную строку.

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

3. Альтернативный способ: Групповое перепроведение документов

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

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

  1. Перейдите в раздел "Администрирование" – "Обслуживание".
  2. Выберите пункт "Групповое перепроведение документов".
  3. Укажите период, за который нужно обновить данные. Вы можете также установить отбор по конкретным видам документов (например, "Начисление зарплаты и взносов", "Отпуск", "Премия").
  4. Запустите выполнение. Процесс может быть длительным, особенно на больших базах.

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

4. Проверка периода и "проблемных" документов

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

Попробуйте запустить обработку "Обновить данные для расчета среднего заработка" не за весь период сразу, а по месяцам. Это поможет локализовать, в каком именно месяце возникает сбой. После этого можно будет более пристально изучить документы этого периода.

5. Обновление конфигурации

Не забывайте про самый базовый шаг — убедитесь, что ваша конфигурация 1С:ЗУП обновлена до последнего актуального релиза. Возможно, вы столкнулись с уже известной ошибкой, которая была исправлена фирмой "1С" в одном из последних обновлений или в виде патча (исправления).

Проверить наличие обновлений можно в пользовательском режиме: "Администрирование" – "Интернет-поддержка и сервисы" – "Обновление версии программы".

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

← На главную