Как исправить ошибку "Недопустимое значение параметра" в документе "НачислениеЗарплатыРаботникамОрганизаций" после обновления УПП 1.3?

Программист 1С v8.3 (Обычные формы) Налоговый учет
← На главную

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

Симптомы и проявление ошибки

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


{Документ.НачислениеЗарплатыРаботникамОрганизаций.МодульОбъекта(15043)}: ЗаполнитьЗначенияСвойств(СтруктураНДФЛКЗачету,ВыборкаПоНДФЛКЗачету);
по причине:
Недопустимое значение параметра (параметр номер '1')

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

Первоначальная диагностика и выявление причины

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

  1. Установка точки останова: Откроем конфигурацию в режиме отладки. Найдем модуль объекта документа НачислениеЗарплатыРаботникамОрганизаций. Установим точку останова непосредственно на строке, указанной в сообщении об ошибке: ЗаполнитьЗначенияСвойств(СтруктураНДФЛКЗачету,ВыборкаПоНДФЛКЗачету);.
  2. Воспроизведение ошибки: Попробуем провести любой документ "НачислениеЗарплатыРаботникамОрганизаций", который вызывает данную ошибку. Выполнение программы остановится на установленной нами точке останова.
  3. Проверка значений переменных: В окне отладчика (например, в табло или локальных переменных) внимательно изучим значение переменной СтруктураНДФЛКЗачету. Мы обнаружим, что ее значение равно Неопределено. Это критически важная информация, так как функция ЗаполнитьЗначенияСвойств() ожидает в качестве первого параметра объект типа Структура (или Соответствие), а не Неопределено. Именно это и вызывает ошибку "Недопустимое значение параметра".

После того как мы выяснили, что переменная СтруктураНДФЛКЗачету принимает значение Неопределено, нашей задачей становится понять, почему она не была корректно инициализирована. Внимательное изучение кода вокруг строки 15043 позволяет нам выявить следующую логическую ошибку, допущенную разработчиками в данных релизах:

Переменная СтруктураНДФЛКЗачету должна быть инициализирована как новая структура со списком необходимых полей перед использованием в функции ЗаполнитьЗначенияСвойств(). Строка инициализации выглядит так:


СтруктураНДФЛКЗачету = Новый Структура("НДФЛКЗачетуУчтено,НДФЛСПревышенияКЗачетуУчтено,НДФЛСПревышенияКЗачетуУчтено18,НДФЛСПревышенияКЗачетуУчтено20,НДФЛСПревышенияКЗачетуУчтено22");

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

Решение проблемы: ручная корректировка кода

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

Подготовка к изменениям: снятие с поддержки

Конфигурация УПП, как правило, находится на поддержке. Чтобы внести изменения в модуль объекта документа, нам необходимо временно снять его с поддержки или отредактировать с сохранением возможности обновления:

  1. Откроем конфигурацию в режиме "Конфигуратор".
  2. Перейдем в меню "Конфигурация" -> "Открыть конфигурацию".
  3. Найдем документ "НачислениеЗарплатыРаботникамОрганизаций" в дереве объектов конфигурации.
  4. Развернем его, найдем "Модуль объекта" и откроем его.
  5. Если модуль защищен "замочком" (находится на полной поддержке), система предложит вам изменить его. Выберите пункт "Редактировать с сохранением поддержки". Это позволит вам внести изменения, при этом сохранив возможность штатного обновления конфигурации в будущем.

Пошаговое исправление кода

Теперь, когда модуль открыт для редактирования, приступим к изменению кода:

  1. Найдем проблемный участок: В модуле объекта документа НачислениеЗарплатыРаботникамОрганизаций найдем строку, содержащую вызов функции ЗаполнитьЗначенияСвойств(СтруктураНДФЛКЗачету,ВыборкаПоНДФЛКЗачету);. Она находится примерно на строке 15043, но лучше ориентироваться по тексту.
  2. Найдем инициализацию структуры: Выше этой строки мы должны найти объявление и инициализацию структуры СтруктураНДФЛКЗачету. Искомая строка выглядит так:
    
    СтруктураНДФЛКЗачету = Новый Структура("НДФЛКЗачетуУчтено,НДФЛСПревышенияКЗачетуУчтено,НДФЛСПревышенияКЗачетуУчтено18,НДФЛСПревышенияКЗачетуУчтено20,НДФЛСПревышенияКЗачетуУчтено22");
    
    Мы видим, что эта строка находится перед циклом, который обрабатывает данные по физическим лицам. Ориентиром для начала цикла служит строка: Пока ВыборкаПоНДФЛуд.СледующийПоЗначениюПоля("ФизЛицо") Цикл
  3. Переместим строку инициализации: Необходимо вырезать строку инициализации структуры СтруктураНДФЛКЗачету, которая находится перед циклом, и вставить ее внутрь этого цикла, сразу после строки Пока ВыборкаПоНДФЛуд.СледующийПоЗначениюПоля("ФизЛицо") Цикл.

Пример кода до изменений (упрощенно):


// ... какой-то код перед циклом ...
// Строка, которая вызывает ошибку, если цикл не выполняется или пропускает инициализацию
СтруктураНДФЛКЗачету = Новый Структура("НДФЛКЗачетуУчтено,НДФЛСПревышенияКЗачетуУчтено,НДФЛСПревышенияКЗачетуУчтено18,НДФЛСПревышенияКЗачетуУчтено20,НДФЛСПревышенияКЗачетуУчтено22");

Пока ВыборкаПоНДФЛуд.СледующийПоЗначениюПоля("ФизЛицо") Цикл
    // ... другой код внутри цикла ...
    // Здесь СтруктураНДФЛКЗачету уже должна быть инициализирована
    ЗаполнитьЗначенияСвойств(СтруктураНДФЛКЗачету, ВыборкаПоНДФЛКЗачету);
    // ...
КонецЦикла;
// ...

Пример кода после изменений:


// ... какой-то код перед циклом ...

Пока ВыборкаПоНДФЛуд.СледующийПоЗначениюПоля("ФизЛицо") Цикл
    // Инициализация структуры перенесена сюда,
    // чтобы она гарантированно создавалась для каждого физлица в цикле
    СтруктураНДФЛКЗачету = Новый Структура("НДФЛКЗачетуУчтено,НДФЛСПревышенияКЗачетуУчтено,НДФЛСПревышенияКЗачетуУчтено18,НДФЛСПревышенияКЗачетуУчтено20,НДФЛСПревышенияКЗачетуУчтено22");
    // ... другой код внутри цикла ...
    // Теперь СтруктураНДФЛКЗачету гарантированно будет структурой
    ЗаполнитьЗначенияСвойств(СтруктураНДФЛКЗачету, ВыборкаПоНДФЛКЗачету);
    // ...
КонецЦикла;
// ...

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

Официальное решение проблемы от 1С

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

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

Дополнительные проверки и нюансы

Даже после исправления основной ошибки, будь то ручная корректировка или обновление до версии 1.3.244.1, рекомендуем выполнить следующие дополнительные проверки:

  1. Проверка движений по НДФЛ: Некоторые пользователи отмечали, что в проблемных релизах могли некорректно формироваться движения по регистру "НДФЛ расчеты с бюджетом". После применения исправления обязательно проверьте корректность формирования движений по НДФЛ для нескольких документов "НачислениеЗарплатыРаботникамОрганизаций". Возможно, потребуется перепровести или даже перезаполнить некоторые документы за спорный период (например, за 2025 год), чтобы удостовериться в правильности данных.
  2. Особенности воспроизведения ошибки: Отметим, что ошибка могла проявляться не у всех и не всегда. В демонстрационных базах с устаревшими данными (например, 2009 года) воспроизвести ее не удалось. Это указывает на зависимость от специфики данных, настроек расчетов НДФЛ, наличия или отсутствия больших вычетов и других факторов. Если в вашей базе ошибка не проявлялась, это не значит, что ее нет, но это могло быть связано с особенностями ваших данных.
  3. Проблемы в последующих версиях: Обратите внимание, что даже после исправления одной ошибки, в новой версии могут появиться другие. Например, в версии 1.3.244.1 пользователи сообщали о проблемах с некорректным расчетом среднего заработка в документе "Начисление отпуска" (задваивание/затраивание отработанных дней и коэффициентов индексации). Всегда тестируйте новые релизы на копии базы данных перед внедрением на рабочую.
  4. Поддержка УПП: Не забывайте, что поддержка 1С:УПП будет прекращена в 2027 году. Хотя обновления для поддержки законодательства и исправления критических ошибок будут выпускаться до конца 2026 года, развитие функциональности будет происходить только в современных конфигурациях (например, 1С:ERP). Это может означать более длительные сроки выпуска обновлений и потенциальную необходимость ручных доработок для пользователей, которые продолжают активно эксплуатировать УПП.

Заключение

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

← На главную