Как исправить ошибку «Поле объекта не обнаружено (ВыполнятьПредварительныйРасчетДокументов)» при отключении расчета зарплаты в 1С:ЗУП 3.1

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

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

Однако при попытке снять флажок «Использовать программу для расчета заработной платы» в настройках расчета зарплаты пользователи определенных релизов (ветки 3.1.10 и 3.1.12) сталкиваются с критической ошибкой: Поле объекта не обнаружено (ВыполнятьПредварительныйРасчетДокументов). В результате настройка не сохраняется, и функционал остается активным. Разберем подробно, почему это происходит и как решить проблему несколькими способами.

Причина возникновения проблемы

Проанализируем техническую сторону вопроса. Данная ошибка является зарегистрированным программным дефектом (багом) конфигурации. Она возникает в модуле менеджера обработки ПанельНастроекЗарплатаКадры. При попытке сохранить изменения в интерфейсе настроек система вызывает функцию СтруктураПараметровНастроек. В коде этой функции формируется структура параметров, которые передаются между клиентом и сервером. В проблемных релизах разработчики забыли включить в эту структуру инициализацию ключа ВыполнятьПредварительныйРасчетДокументов.

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

Способ 1: Использование программного кода для отключения функционала

Если вы не планируете обновлять конфигурацию в ближайшее время, наиболее быстрым и эффективным способом будет принудительное изменение значения константы, которая отвечает за использование подсистемы расчета зарплаты. Рассмотрим, как это сделать с помощью внешней обработки «Консоль кода» или стандартного функционала «Групповое изменение реквизитов».

Нам необходимо программно установить значение константы ИспользоватьНачислениеЗарплаты в значение Ложь. Проанализируем пример кода, который решает эту задачу:


// Установка константы напрямую через встроенный язык 1С
Константы.ИспользоватьНачислениеЗарплаты.Установить(Ложь);
ИнформационнаяОбновление.Обновить(); // Рекомендуется вызвать обновление параметров сеанса

Для выполнения этого кода выполним следующие шаги:

  1. Запустим программу в режиме 1С:Предприятие от имени пользователя с правами администратора.
  2. Перейдем в раздел Администрирование — Обслуживание — Корректировка данных.
  3. Если у вас есть внешняя консоль кода, откроем её и выполним вышеуказанную команду.
  4. Если консоли нет, можно воспользоваться обработкой «Групповое изменение реквизитов», выбрав в ней выполнение произвольного алгоритма (доступно в режиме разработчика).

Способ 2: Корректировка расширенных настроек через регистр сведений

Иногда простого изменения константы может быть недостаточно, так как форма настроек при открытии может синхронизировать данные с регистром сведений НастройкиРасчетаЗарплатыРасширенный. Посмотрим, как внести изменения в этот регистр напрямую.

Рассмотрим порядок действий:

  1. Откроем Функции для технического специалиста (ранее — Все функции).
  2. Найдем в списке регистров сведений Настройки расчета зарплаты расширенный.
  3. Найдем запись, относящуюся к настройкам организации (или общую запись, если организация не указана).
  4. Установим ресурс «Использовать программу для расчета зарплаты» в значение Ложь.

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

Способ 3: Обновление конфигурации до исправленного релиза

Выясним, в каких версиях разработчики 1С устранили данную ошибку. Если ваша текущая версия 3.1.10.78 или аналогичная из ветки 3.1.12, вам необходимо выполнить обновление. По официальным данным, исправление включено в следующие релизы:

Проанализируем ситуацию с обновлением для разных типов лицензий. Если вы используете Базовую версию программы, обновление для вас бесплатно и доступно на портале техподдержки 1С. Для версий ПРОФ или КОРП потребуется действующий договор 1С:ИТС (Информационно-технологическое сопровождение). Если договора нет, а ошибка блокирует работу, рекомендуется воспользоваться Способом 1 как временным решением.

Что произойдет после отключения расчета зарплаты?

Разберем последствия выполнения данной операции. Важно понимать, что это действие не просто снимает галочку, а серьезно меняет интерфейс и логику работы системы 1С:ЗУП:

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

Таким образом, мы выяснили, что ошибка Поле объекта не обнаружено (ВыполнятьПредварительныйРасчетДокументов) является чисто техническим упущением разработчиков. Наиболее правильным долгосрочным решением является обновление конфигурации. В экстренных случаях, когда обновление невозможно, использование прямой записи константы через Константы.ИспользоватьНачислениеЗарплаты.Установить(Ложь) полностью решает проблему и позволяет продолжать работу в кадровом режиме.

← На главную