Обновление программных продуктов «1С:Предприятие» — процесс ответственный, и, к сожалению, иногда он сопровождается возникновением непредвиденных ошибок. Одной из наиболее резонансных проблем в релизах Зарплата и Управление Персоналом (ЗУП) 3.1.30.116 и 3.1.30.117 стала ошибка при проведении кадровых документов, таких как Увольнение или Регистрация трудовой деятельности. Ошибка проявляется в процедуре ПередЗаписью модуля набора записей регистра сведений МероприятияТрудовойДеятельности.
Ситуация осложняется тем, что на тестовых базах обновление может проходить успешно, а на рабочей базе пользователи сталкиваются с невозможностью провести документы, влияющие на отчетность ЕФС-1. В этой статье мы подробно разберем, почему возникает ошибка «Неверные параметры "НовыйНабор"» и какими способами можно восстановить работоспособность системы.
Давайте проанализируем техническую сторону вопроса. В новой версии ЗУП 3.1.30 разработчики существенно переработали механизмы учета трудовой деятельности для корректного формирования отчетности в Социальный фонд России (СФР). Основное изменение коснулось того, как данные передаются в запросы внутри программного кода.
Ошибка Ошибка при вызове метода контекста (Выполнить) с уточнением Неверные параметры "НовыйНабор" означает, что в запрос, выполняемый в модуле набора записей регистра МероприятияТрудовойДеятельности, передается таблица значений (параметр &НовыйНабор), структура которой не соответствует ожидаемой метаданными конфигурации. Это может происходить из-за конфликта версий платформы, кэша или расширений.
Рассмотрим по шагам все возможные способы решения проблемы, начиная от самых простых и заканчивая сложными административными манипуляциями.
Проанализируем ситуацию: если на тестовой базе (где обычно нет расширений) всё работает, а на рабочей (где расширения установлены) возникает ошибка — корень проблемы, скорее всего, именно в них. В версии 3.1.30 изменилась структура регистра МероприятияТрудовойДеятельности. Если ваше расширение заимствует этот регистр или его модуль, возникает несоответствие типов.
Увольнение.Важно: Даже если расширение не содержит программного кода, а просто заимствует объект для добавления реквизита, платформа может использовать устаревшее описание структуры таблицы из расширения при формировании параметра &НовыйНабор.
Часто после масштабных обновлений конфигурации сервер 1С:Предприятия продолжает использовать старые скомпилированные фрагменты кода или кэшированные описания метаданных. Обычная очистка кэша на клиентском компьютере здесь не поможет, так как ошибка происходит на сервере в модуле набора записей.
Выполним полную очистку серверного кэша по следующему алгоритму:
C:\Program Files\1cv8\srvinfo для Windows).reg_1541) и внутри нее удалим содержимое папки snccntx.Этот метод заставляет платформу заново перечитать структуру метаданных из базы данных и корректно типизировать параметры запроса.
Для релизов ветки 3.1.30 установлены повышенные требования к версии технологической платформы. Если вы используете устаревшую версию платформы (например, ниже 8.3.21.1775 или 8.3.22.2239), механизмы работы с временными таблицами и типизированными параметрами в запросах могут работать некорректно.
Проверим текущую версию платформы и при необходимости обновим ее до рекомендуемых значений (например, последние патчи веток 8.3.23 или 8.3.24). Особое внимание стоит уделить тому, чтобы версия платформы на сервере и у клиента совпадала.
Разберем ситуацию, когда ошибка вызвана «мусорными» данными. В версии 3.1.30 ужесточен контроль уникальности идентификаторов мероприятий. Если в регистре МероприятияТрудовойДеятельности есть записи с пустыми уникальными идентификаторами (GUID), запрос в процедуре ПередЗаписью может завершиться ошибкой.
Для диагностики можно воспользоваться консолью запросов и выполнить поиск записей с пустым ИдентификаторПрограммы или ИдентификаторМероприятия:
ВЫБРАТЬ
Мероприятия.Период,
Мероприятия.Регистратор,
Мероприятия.Сотрудник
ИЗ
РегистрСведений.МероприятияТрудовойДеятельности КАК Мероприятия
ГДЕ
Мероприятия.ИдентификаторМероприятия = ЗНАЧЕНИЕ(Справочник.ИдентификаторыМероприятийТрудовойДеятельности.ПустаяСсылка)
Если такие записи найдены, их необходимо исправить или перепровести соответствующие документы-основания.
Если ваша база работает в клиент-серверном варианте, проблема может скрываться в настройках СУБД. При выполнении запроса 1С передает таблицу НовыйНабор в SQL-сервер как типизированный параметр. Старые уровни совместимости (Compatibility Level) в MS SQL Server могут некорректно обрабатывать такие структуры.
Если уровень совместимости стоит слишком низкий (например, 2008 или 2012), рекомендуется его повысить после создания резервной копии.
Если стандартное «Тестирование и исправление» (ТиИ) с галочкой «Реструктуризация таблиц» не помогло, проанализируем возможность полной физической пересборки таблиц. Метод выгрузки базы в файл .dt и последующей загрузки в новую пустую базу заставляет платформу заново создать все индексы и описания полей в словаре данных СУБД.
Этот радикальный, но эффективный метод часто устраняет ошибки «Неверные параметры», связанные с нарушением логической целостности структуры таблиц на уровне платформы.
Если документ Увольнение нужно провести срочно для расчета зарплаты и выплат, а техническое решение затягивается, можно временно воспользоваться следующим методом: в документе снимите флажок «Отразить в трудовой книжке». В этом случае запись в проблемный регистр не производится, и документ проводится успешно. Однако помните, что после решения технической проблемы флажок нужно будет вернуть и провести документ снова, чтобы данные попали в ЕФС-1.
Мы рекомендуем начинать исправление с отключения расширений и очистки серверного кэша, так как в 90% случаев в релизе 3.1.30.116 проблема вызвана именно этими факторами.