При работе с 1С:Бухгалтерией 3.0 пользователи могут столкнуться с ошибкой «Недопустимое значение параметра (параметр номер '2')» при попытке распечатать кассовый чек на удержание из заработной платы в документе «Отражение зарплаты в бухучете». Эта проблема обычно проявляется после очередного обновления конфигурации и может существенно затруднить работу, связанную с фискализацией удержаний.
Давайте подробно разберем, с чем связана эта ошибка, почему она возникает и какие существуют способы ее решения, включая официальное исправление.
Первоначально, при возникновении ошибки, система выдает сообщение:
Ошибка при подготовке группы чеков:
Недопустимое значение параметра (параметр номер '2')
{ОбщийМодуль.ПечатьФискальныхДокументовКлиент.Модуль(745)}:ВызватьИсключение Текст;
{ОбщийМодуль.ПечатьФискальныхДокументовКлиент.Модуль(716)}:ПоказатьОшибкуФормированияГруппыЧеков(ДлительнаяОперация);
{ОбщаяФорма.ДлительнаяОперация.Форма(119)}:Закрыть(РезультатВыполнения(Задание));
Для более глубокого понимания причины, мы анализируем журнал регистрации, где находим более детализированное сообщение об ошибке, указывающее на фоновое задание:
Событие: Фоновое задание. Ошибка выполнения
Коментарий:
Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств)
{ОбщийМодуль.ПечатьФискальныхДокументов.Модуль(37)}:ЗаполнитьЗначенияСвойств(Реквизиты, ДанныеОплатыСертификатНСПК);
{ОбщийМодуль.ПечатьФискальныхДокументов.Модуль(1043)}:МассивЧеков = ПечатьФискальныхДокументов.СобратьДанныеЧеков(
...
по причине:
Недопустимое значение параметра (параметр номер '2')
по причине:
Недопустимое значение параметра (параметр номер '2')
Из этих сообщений мы можем сделать несколько важных выводов:
ПечатьФискальныхДокументов.ЗаполнитьЗначенияСвойств.ЗаполнитьЗначенияСвойств(Реквизиты, ДанныеОплатыСертификатНСПК);, мы приходим к выводу, что параметр номер '2' – это переменная ДанныеОплатыСертификатНСПК.Функция ЗаполнитьЗначенияСвойств() в 1С используется для копирования значений одноименных реквизитов из одного объекта (источника) в другой (приемник). Если в качестве источника или приемника передается некорректное значение, например, Неопределено, или значение несоответствующего типа, это может привести к ошибке «Недопустимое значение параметра».
В нашем случае, переменная ДанныеОплатыСертификатНСПК, по всей видимости, в определенных сценариях (например, при печати чеков на удержание из зарплаты) может принимать значение Неопределено, а функция ЗаполнитьЗначенияСвойств не имеет внутренней проверки на такой случай. Это является классическим багом в типовой конфигурации, так как код должен быть устойчив к таким ситуациям.
Некоторые пользователи пытались решить проблему, модифицируя код конфигурации или используя расширения. Одним из предложенных вариантов был следующий:
ПечатьФискальныхДокументов в расширение.СобратьДанныеЧеков с помощью директивы &Вместо.ЗаполнитьЗначенияСвойств(Реквизиты, ДанныеОплатыСертификатНСПК); и комментируем ее или добавляем проверку.Первоначальная попытка просто закомментировать строку:
//ЗаполнитьЗначенияСвойств(Реквизиты, ДанныеОплатыСертификатНСПК);
Как показал опыт, это не всегда помогало, что указывает на необходимость более точной обработки. Правильный подход к обходному пути должен включать проверку на заполненность параметра ДанныеОплатыСертификатНСПК перед его использованием. Это предотвратит передачу значения Неопределено в функцию ЗаполнитьЗначенияСвойств. Реализация могла бы выглядеть так:
Если ДанныеОплатыСертификатНСПК <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(Реквизиты, ДанныеОплатыСертификатНСПК);
КонецЕсли;
Мы видим, что такой подход делает код более надежным, так как функция ЗаполнитьЗначенияСвойств будет вызываться только тогда, когда ДанныеОплатыСертификатНСПК действительно содержит объект, из которого можно копировать свойства. Это обходной путь или временное решение, которое может быть применено до выпуска официального патча.
Самым надежным и рекомендованным способом решения проблемы является установка официального обновления от фирмы 1С. В данном случае, проблема была признана багом и для нее выпущено исправление с идентификатором EF_10238877.
Описание исправления гласит: «При печати чека на удержание из заработной платы выдается сообщение об ошибке». Это точно соответствует нашей ситуации.
Чтобы решить проблему окончательно и правильно, вам необходимо:
Важно отметить, что официальные исправления всегда предпочтительнее любых обходных путей через расширения, так как они гарантируют совместимость и корректную работу всей системы, а также поддерживаются производителем.
Рассмотрим дополнительный контекст, связанный с фискализацией удержаний из заработной платы. Согласно Федеральному закону № 54-ФЗ, с 01.07.2019 года при удержании из зарплаты по заявлению сотрудника для погашения долга за товары или услуги (например, за выданную ранее спецодежду, задолженность по ранее выданным займам или приобретенным товарам) необходимо пробивать кассовый чек.
В 1С:Бухгалтерии для корректного оформления таких удержаний выполняются следующие шаги:
Именно на этапе формирования данных для чека и добавления их в очередь возникала описанная выше ошибка, препятствующая корректной фискализации удержаний.
Ошибка «Недопустимое значение параметра (параметр номер '2')» при печати чеков на удержание из зарплаты в 1С:Бухгалтерии 3.0 является типовым багом, связанным с некорректной обработкой неопределенных значений в функции ЗаполнитьЗначенияСвойств. Мы видим, что в качестве временного решения можно было бы рассмотреть модификацию кода с добавлением проверки на Неопределено, но наиболее эффективным и правильным способом является установка официального обновления, включающего исправление EF_10238877. Регулярное обновление вашей конфигурации 1С гарантирует стабильность и соответствие законодательным требованиям.