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