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

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

При работе в программе «1С:Зарплата и управление персоналом 3.1» расчетчики и системные администраторы часто сталкиваются со следующей проблемой: при попытке заполнить или рассчитать документы Начисление зарплаты и взносов, Начисление за первую половину месяца, либо межрасчетные документы (такие как Отпуск или Больничный лист) программа выдает аварийную ошибку: «Поле объекта не обнаружено (СуммаДополнения)». При этом расчет останавливается, и документ невозможно провести.

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

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

Для того чтобы понять, почему программа выдает эту ошибку, обратимся к внутренней архитектуре расчета удержаний по исполнительным листам. В конфигурации Зарплата и Управление Персоналом расчет алиментов и других принудительных взысканий тесно связан с определением расчетной базы и расчетом НДФЛ.

Служебное поле СуммаДополнения является частью внутренней структуры Строка.Дополнительно, которая формируется динамически в общем модуле расчета удержаний (например, в модуле ИсполнительныеЛисты или в обработке Менеджер расчета зарплаты). Эта переменная отвечает за хранение промежуточных сумм, необходимых для корректного расчета базы удержания, когда у сотрудника присутствуют сложные вычеты, расчеты по прогрессивной шкале НДФЛ или межрасчетные выплаты.

Сбой происходит в тот момент, когда программа пытается обратиться к свойству СуммаДополнения у объекта, который по какой-то причине не инициализировал данную структуру или не содержит этого реквизита. Рассмотрим подробнее основные ситуации, которые приводят к такому состоянию базы данных:

  1. Некорректный откат (даунгрейд) конфигурации. Очень часто сбой проявляется после того, как базу данных сначала обновили на более новый релиз (например, ветки 3.1.4 или более поздней 3.1.21), а затем из-за критических ошибок или проблем с расчетом НДФЛ вернули («откатили») назад на более старый релиз (например, 3.1.3 или 3.1.20). При этом новые показатели расчета (такие как РасчетнаяБазаИсполнительногоЛиста и ИсчисленныйПоИсполнительномуЛистуНДФЛ) уже записались в виды расчетов базы данных, а программный код старого релиза не умеет с ними работать и не создает для них структуру СуммаДополнения.
  2. Перенос данных и синхронизация. Проблема может заявить о себе после переноса данных из конфигурации 1С:Бухгалтерия или при синхронизации, когда предопределенные виды удержаний переносятся с поврежденной или незаполненной структурой показателей.
  3. Внутренний баг релиза платформы или конфигурации. Ошибка официально регистрировалась разработчиками фирмы «1С» как в старых версиях программы (3.1.3 / 3.1.4), так и при выпуске обновлений весной 2022 года в релизах 3.1.21.75 и 3.1.21.76. Сбой происходил из-за конфликта алгоритмов расчета удержаний и прогрессивного НДФЛ при установке временных патчей исправлений.

Ниже мы подробно рассмотрим проверенные на практике варианты решения этой проблемы, начиная с самых безопасных и простых.

Способ 1. Инициализация и перевыбор назначения удержания в пользовательском режиме (Рекомендуемый способ)

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

  1. Перейдите в раздел меню «Настройка» и откройте справочник «Удержания».
  2. Найдите в списке предопределенное удержание Исполнительный лист (в некоторых базах оно может называться Удержание по исполнительному документу) и откройте его карточку double-click'ом.
  3. Обратите внимание на поле «Назначение удержания». Сейчас там установлено значение Исполнительный лист, но при этом вкладка Расчет базы может быть неактивной (заблокированной для редактирования).
  4. Временно измените значение в поле «Назначение удержания» на любое другое случайное значение (например, Прочее удержание в пользу третьих лиц).
  5. Сразу после этого верните назначение обратно, выбрав исходное значение — «Исполнительный лист». Данное действие заставит платформу перезапустить внутренний обработчик обновления показателей и пересоздать структуру служебных полей в базе данных.
  6. Внимание! Очень важный нюанс: при смене назначения удержания программа полностью очистит вкладку Расчет базы. Обязательно перейдите на вкладку «Расчет базы» и проверьте список базовых начислений (таких как оклад, премии, надбавки), с которых должны удерживаться алименты. Если список пуст, заполните его заново в соответствии с вашим учетом. Если этого не сделать, программа при начислении зарплаты перестанет видеть базу для расчета и начнет выдавать неверные (или даже отрицательные) суммы удержаний по исполнительным листам!
  7. Нажмите кнопку «Записать и закрыть».

После выполнения этой несложной процедуры попробуйте вернуться в документ Начисление зарплаты и взносов и нажать кнопку «Заполнить». В большинстве случаев ошибка исчезает.

Способ 2. Удаление конфликтующих показателей из вида расчета

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

При обновлении до более новых версий система автоматически добавляет к удержанию по исполнительному листу показатели РасчетнаяБазаИсполнительногоЛиста и ИсчисленныйПоИсполнительномуЛистуНДФЛ. При откате на старый релиз эти показатели остаются «висеть» в базе данных как пользовательские или некорректно сопоставленные элементы, вызывая сбой при расчете.

Для исправления ситуации выполните следующие действия:

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

Способ 3. Перевыбор вида расчета в документах-основаниях

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

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

Способ 4. Программное исправление в конфигураторе (для разработчиков)

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

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

В процедуре расчета базы удержаний программа обращается к свойству напрямую:

РасчетнаяБазаИсполнительногоЛиста = Строка.Дополнительно.СуммаДополнения;

Если структура Дополнительно не содержит свойства СуммаДополнения, платформа аварийно завершает работу. Чтобы предотвратить этот сбой, мы можем добавить безопасную проверку наличия свойства перед обращением к нему. Изменим код следующим образом:


Если Строка.Дополнительно.Свойство("СуммаДополнения") Тогда
    РасчетнаяБазаИсполнительногоЛиста = Строка.Дополнительно.СуммаДополнения;
Иначе
    РасчетнаяБазаИсполнительногоЛиста = 0;
КонецЕсли;

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

Способ 5. Очистка кэша конфигурации и тестирование базы данных

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

  1. Закройте программу 1С:Предприятие.
  2. Откройте список информационных баз в окне запуска.
  3. Выберите вашу базу данных, нажмите кнопку «Удалить» (при этом сама база с диска не удалится, сотрется только ее регистрация в списке запуска).
  4. Нажмите кнопку «Добавить», выберите «Добавление в список существующей информационной базы» и укажите путь к ней заново. При этом локальный кэш этой базы на вашем компьютере будет полностью пересоздан.

Дополнительно рекомендуется выполнить процедуру «Тестирование и исправление» в режиме Конфигуратора:

  1. Запустите информационную базу в режиме «Конфигуратор» (предварительно обязательно создайте резервную копию базы данных!).
  2. Откройте меню «Администрирование» — «Тестирование и исправление».
  3. Установите флажки напротив пунктов Реиндексация таблиц информационный базы и Реструктуризация таблиц информационной базы.
  4. Нажмите кнопку «Выполнить» и дождитесь окончания процесса. Это восстановит логическую и физическую целостность всех таблиц показателей и видов расчетов в базе данных.

Резюме

Мы подробно проанализировали системную ошибку Поле объекта не обнаружено (СуммаДополнения) в программе 1С:ЗУП 3.1. Самым быстрым, надежным и безопасным методом ее устранения для рядового пользователя является перевыбор назначения удержания в карточке «Исполнительный лист» с последующим восстановлением состава расчетной базы. Если же вы столкнулись с массовым проявлением этой ошибки на типовом релизе без кастомизаций, лучшим решением будет обновление программы до актуального стабильного релиза (например, выше 3.1.22.25), где эта проблема была полностью решена разработчиками фирмы «1С» на уровне платформенного кода.

← На главную