Почему возникает ошибка 'Недопустимое значение параметра (параметр номер 2)' при печати чека на удержание из зарплаты в 1С:Бухгалтерии?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет
← На главную

При работе с 1С:Бухгалтерией 3.0 пользователи могут столкнуться с ошибкой «Недопустимое значение параметра (параметр номер '2')» при попытке распечатать кассовый чек на удержание из заработной платы в документе «Отражение зарплаты в бухучете». Эта проблема обычно проявляется после очередного обновления конфигурации и может существенно затруднить работу, связанную с фискализацией удержаний.

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

Анализ проблемы и стека вызовов

Первоначально, при возникновении ошибки, система выдает сообщение:

Ошибка при подготовке группы чеков:
Недопустимое значение параметра (параметр номер '2')
{ОбщийМодуль.ПечатьФискальныхДокументовКлиент.Модуль(745)}:ВызватьИсключение Текст;
{ОбщийМодуль.ПечатьФискальныхДокументовКлиент.Модуль(716)}:ПоказатьОшибкуФормированияГруппыЧеков(ДлительнаяОперация);
{ОбщаяФорма.ДлительнаяОперация.Форма(119)}:Закрыть(РезультатВыполнения(Задание));

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

Событие: Фоновое задание. Ошибка выполнения
Коментарий:
Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств)
{ОбщийМодуль.ПечатьФискальныхДокументов.Модуль(37)}:ЗаполнитьЗначенияСвойств(Реквизиты, ДанныеОплатыСертификатНСПК);
{ОбщийМодуль.ПечатьФискальныхДокументов.Модуль(1043)}:МассивЧеков = ПечатьФискальныхДокументов.СобратьДанныеЧеков(
...
по причине:
Недопустимое значение параметра (параметр номер '2')
по причине:
Недопустимое значение параметра (параметр номер '2')

Из этих сообщений мы можем сделать несколько важных выводов:

  1. Проблема возникает в общем модуле ПечатьФискальныхДокументов.
  2. Непосредственной причиной является вызов функции ЗаполнитьЗначенияСвойств.
  3. Ошибка указывает на «Недопустимое значение параметра (параметр номер '2')». Анализируя строку ЗаполнитьЗначенияСвойств(Реквизиты, ДанныеОплатыСертификатНСПК);, мы приходим к выводу, что параметр номер '2' – это переменная ДанныеОплатыСертификатНСПК.
  4. Проблема характерна именно для чеков на удержание из заработной платы, тогда как другие типы чеков (например, на спецодежду) могут печататься корректно.

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

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

Обходной путь (временно, до официального исправления)

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

  1. Выносим общий модуль ПечатьФискальныхДокументов в расширение.
  2. В расширении переопределяем функцию СобратьДанныеЧеков с помощью директивы &Вместо.
  3. Находим строку вызова ЗаполнитьЗначенияСвойств(Реквизиты, ДанныеОплатыСертификатНСПК); и комментируем ее или добавляем проверку.

Первоначальная попытка просто закомментировать строку:

//ЗаполнитьЗначенияСвойств(Реквизиты, ДанныеОплатыСертификатНСПК);

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


Если ДанныеОплатыСертификатНСПК <> Неопределено Тогда
    ЗаполнитьЗначенияСвойств(Реквизиты, ДанныеОплатыСертификатНСПК);
КонецЕсли;

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

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

Самым надежным и рекомендованным способом решения проблемы является установка официального обновления от фирмы 1С. В данном случае, проблема была признана багом и для нее выпущено исправление с идентификатором EF_10238877.

Описание исправления гласит: «При печати чека на удержание из заработной платы выдается сообщение об ошибке». Это точно соответствует нашей ситуации.

Чтобы решить проблему окончательно и правильно, вам необходимо:

  1. Проверить наличие обновлений: Убедитесь, что ваша конфигурация 1С:Бухгалтерия предприятия, редакция 3.0 обновлена до последней версии, которая включает исправление EF_10238877. Обычно это происходит автоматически, если ваша база находится на поддержке и настроена на регулярные обновления.
  2. Установить обновление: Если обновление доступно, но еще не установлено, выполните процедуру обновления конфигурации. Это может потребовать обращения к вашему специалисту по 1С или системному администратору.
  3. Проверить работоспособность: После обновления попробуйте повторно распечатать чек на удержание из заработной платы в документе «Отражение зарплаты в бухучете». Ошибка должна исчезнуть.

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

Контекст печати чеков за удержания из зарплаты в 1С:Бухгалтерии

Рассмотрим дополнительный контекст, связанный с фискализацией удержаний из заработной платы. Согласно Федеральному закону № 54-ФЗ, с 01.07.2019 года при удержании из зарплаты по заявлению сотрудника для погашения долга за товары или услуги (например, за выданную ранее спецодежду, задолженность по ранее выданным займам или приобретенным товарам) необходимо пробивать кассовый чек.

В 1С:Бухгалтерии для корректного оформления таких удержаний выполняются следующие шаги:

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

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

Заключение

Ошибка «Недопустимое значение параметра (параметр номер '2')» при печати чеков на удержание из зарплаты в 1С:Бухгалтерии 3.0 является типовым багом, связанным с некорректной обработкой неопределенных значений в функции ЗаполнитьЗначенияСвойств. Мы видим, что в качестве временного решения можно было бы рассмотреть модификацию кода с добавлением проверки на Неопределено, но наиболее эффективным и правильным способом является установка официального обновления, включающего исправление EF_10238877. Регулярное обновление вашей конфигурации 1С гарантирует стабильность и соответствие законодательным требованиям.

← На главную