Как исправить ошибку «Неверное количество параметров при использовании шаблона 'ПоЗначениямРасширенный'» в документе «Ввод остатков товаров»?

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием IT и автоматизация бизнеса
← На главную

В процессе работы с конфигурациями на базе 1С:ERP Управление предприятием и 1С:Комплексная автоматизация (версии 2.5.6.х и выше) специалисты часто сталкиваются с критической ошибкой при попытке формирования отчетов или открытия журналов документов. Сообщение об ошибке выглядит следующим образом: «Ошибка в ограничении доступа к данным. Объект: Документ.ВводОстатковТоваров, поле: Проведен; право: Чтение. Синтаксическая ошибка "Неверное количество параметров при использовании шаблона ПоЗначениямРасширенный"». Проблема осложняется тем, что она проявляется даже в тех случаях, когда в самом отчете данные по вводу остатков могут отсутствовать, но система анализирует права доступа ко всем возможным регистраторам.

В данной статье мы подробно разберем природу этой ошибки и рассмотрим несколько эффективных способов её решения — от временных «обходов» до внесения изменений в метаданные и установки официальных патчей.

Выясним причину возникновения ошибки

Для начала проанализируем ситуацию с технической точки зрения. Механизм RLS (Record Level Security) в современных типовых решениях 1С строится на базе БСП (Библиотеки стандартных подсистем). Для упрощения написания запросов ограничения доступа используются специальные шаблоны, одним из которых является ПоЗначениямРасширенный.

Суть синтаксической ошибки заключается в том, что ядро БСП было обновлено, и состав параметров этого шаблона изменился (добавились новые разрезы доступа или служебные поля). Однако в метаданных конкретного объекта — в нашем случае Документ.ВводОстатковТоваров — текст ограничения в ролях остался старым, с меньшим количеством параметров. Когда платформа пытается скомпилировать запрос ограничения доступа, она обнаруживает несоответствие ожидаемого и фактического количества аргументов, передаваемых в шаблон, и прерывает работу с ошибкой.

Способ 1. Установка официальных патчей (рекомендуемый)

Поскольку проблема носит массовый характер и признана разработчиками фирмы «1С», самым правильным и безопасным решением для конфигураций, находящихся на поддержке, является установка специального исправления (патча). Рассмотрим подробнее, как это сделать:

  1. Перейдем в раздел Администрирование — Обслуживание — Обновление программы.
  2. Выберем пункт Установка исправлений (патчей).
  3. Если база подключена к интернет-поддержке, система сама предложит список доступных патчей. Нам необходимо найти исправление, в описании которого фигурирует ошибка RLS для документа ВводОстатковТоваров.
  4. После установки патча необходимо перезагрузить сеанс работы с базой данных.

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

Способ 2. Ручная корректировка роли в конфигураторе

Если по каким-то причинам установка патча невозможна (например, отсутствует доступ к интернету или используется сильно доработанная конфигурация), мы можем самостоятельно исправить текст ограничения. Рассмотрим этот процесс по шагам:

  1. Откроем конфигурацию и найдем роли, связанные с документом ВводОстатковТоваров. Обычно это ЧтениеВводаОстатковТоваров или ДобавлениеИзменениеВводаОстатковТоваров.
  2. Перейдем на закладку Права, выберем наш документ и найдем право Чтение (а также Добавление и Изменение).
  3. В окне ограничения доступа мы увидим вызов шаблона. Нам нужно добавить недостающие пустые параметры (строки в кавычках или просто запятые), чтобы их общее количество соответствовало требованиям новой версии БСП.

Пример изменения текста ограничения:


#ПоЗначениямРасширенный("Документ.ВводОстатковТоваров", "Чтение", "", "", 
"Организация", "Склад", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "")

Проанализируем ситуацию: если текущая версия шаблона требует, например, 25 параметров, а в коде их всего 20, система будет выдавать ошибку. Добавление пустых значений в конце вызова решает проблему. Экспериментальным путем в версиях 2.5.6 было выявлено, что добавление 5-6 пустых параметров устраняет синтаксический конфликт.

Способ 3. Использование расширения конфигурации

Чтобы не вносить изменения непосредственно в типовую конфигурацию (не снимать «замок»), создадим расширение. Разберем алгоритм действий:

  1. Создадим новое расширение (тип «Адаптация»).
  2. Добавим в расширение проблемную роль (например, ЧтениеВводаОстатковТоваров).
  3. В расширении для этой роли полностью скопируем состав прав и изменим текст ограничения RLS, добавив недостающие параметры в шаблон ПоЗначениямРасширенный, как это было описано в предыдущем способе.
  4. Применим расширение.

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

Способ 4. Обновление служебных данных и кэша прав

Иногда после обновления конфигурации или внесения правок в роли ошибка продолжает «залипать» из-за старых данных в регистрах сведений БСП. Проанализируем, как принудительно обновить информацию о правах доступа:

  1. Воспользуемся обработкой «Заполнение данных для ограничения доступа» (её можно запустить через функции для технического специалиста).
  2. Также полезно выполнить команду «Обновить данные справочника» в справочнике ИдентификаторыОбъектовМетаданных.
  3. Если ошибка сохраняется у конкретного пользователя, попробуем удалить его из группы доступа и добавить заново. Это инициирует перезапись данных в регистре КлючиДоступаКОбъектам.

Способ 5. Оперативное решение через настройку профилей

Если отчет нужен бухгалтеру «здесь и сейчас», а времени на кодинг нет, рассмотрим административный способ обхода. Как мы выяснили, ошибка возникает при проверке RLS. Если пользователю назначить роль, которая дает полные права на документ ВводОстатковТоваров (без ограничений доступа), то система проигнорирует шаблон RLS для этого объекта, и отчет сформируется корректно.

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

Итоги и рекомендации

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

← На главную