Недостаточно фактических параметров в 1С 8.3

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

Рассмотрим примеры на доработанной конфигурации 1С Бухгалтерия 8.3.

Параметры процедур и функций

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

После имени процедуры/функции в скобках указываются переменные, в которые передаются данные для выполнения. Число передаваемых параметров должно совпадать с перечисленными при вызове процедуры/функции. Наименования не сравниваются, важен только порядок.

image002

Если ничего не указано, значит, дополнительных параметров для выполнения не требуется.

image004

В программном коде 1С программисты используют как стандартные процедуры/функции/методы (далее — «процедура»), так и создают свои.

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

image006

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

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

image008

На рисунке у встроенной функции ПоказатьВопрос три обязательных параметра.

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

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

image010

Исправление ошибки

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

image012

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

  1. Отыщите строку, где возникает сбой:
    image014

    • модуль формы ФормаДокументаТовары документа РеализацияТоваровУслуг;
    • строка 616;
    • имя процедуры ПодготовитьПараметры, расположение — общей модуль РеализацияТоваровУслугФормыКлиент.
  2. Обратите внимание на количество параметров, передаваемых процедуре.image016
  3. Перейдите к описанию процедуры, для этого выделите имя, вызовите контекстное меню и выполните команду Перейти к определению.image018
  4. В программном коде будет найдена требуемая процедура. Если она расположена в другом модуле, откроется его окно. Сопоставьте количество передаваемых параметров с указанными в описании процедуры. Убедитесь, что их меньше.image020
  5. Определите данные, которые должны содержать параметры. Имена могут не совпадать, но по ним можно понять, что передается в процедуру:
    • Форма — объект типа ТипФорма;
    • СтрокаТабличнойЧасти — текущая строка таблицы формы.
      Если названия параметров не имеют смыслового значения, попробуйте установить их состав через анализ выполняемых с ними действий, например:
      image022
    • Параметр1 разыменовывают: Объект.Список, такое обращение подходит для элементов формы, следовательно Параметр1 — форма;
    • Параметр2 передают в качестве параметра встроенного метода НайтиПоИдентификатору, тип Число, которое идентифицирует элемент коллекции формы.
      Кроме этого определить содержание помогут имена модулей, процедур, анализ действий в пользовательском режиме, приводящих к ошибке.
  6. Укажите в вызове процедуры недостающие параметры, которые содержат необходимые данные.

В рассмотренном примере в процедуру должны передаваться два параметра: форма и текущая строка табличной части. При вызове процедуры второй параметр не был указан.

image024

В качестве второго параметра была указана переменная ТекущиеДанные, полученная до вызова процедуры и содержащая строку табличной части.

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

Недостаточно параметров в типовой процедуре/функции/методе

Если выполнение команды Перейти к определению не дало результата, значит, используется встроенная процедура/функция/метод (далее — «процедура»). Алгоритмы их выполнения заложены в платформу, и вся обработка данных ведется в фоновом режиме. Поэтому применить способ с поиском тела процедуры и сравнением параметров не получится.

image026

Наименование встроенной процедуры указывается в скобках после фразы «Недостаточно фактических параметров». Для устранения ошибки:

  1. Найдите описание процедуры в Синтакс-Помощнике, выделив наименование и нажав кнопку Поиск строки в Синтакс-Помощнике. Аналогичная команда есть в контекстном меню.
    image028
  2. В описании процедуры просмотрите раздел Параметры в открывшемся окне Синтакс-Помощника. Найдите обязательные параметры и сравните их с перечисленными в коде.image030
  3. Добавьте в процедуру недостающие параметры.image032
    В примере не хватает третьего обязательного параметра с типом РежимДиалогаВопрос — это системное перечисление, которое можно сразу указать в качестве параметра. Если предварительно требуется получить данные и привести их к нужному типу, используют переменные.
    image034

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

image036

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


Поставьте вашу оценку этой статье:
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Загрузка...
Добавить комментарий или вопрос: