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