База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Ошибка «Недопустимое значение аргумента функции» при добавлении процедуры в расш

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #33795
      Телеграм группа https://t.me/odineskiOdineski
      Участник

      /b при попытке добавить в расширение процедуру
      &НаКлиенте
      Процедура ТипРемонтаПриИзменении(Элемент)
      УстановитьВидимостьДоступностьЭлементов();

      ОбновитьСтатусГарантии();
      КонецПроцедуры
      после выбора вида добавления выдает ошибку как на скрине, притом что добавление процедуры»приОткрытии» в расширение в этом же документе сработало нормально
      в чеем может быть загвоздка?

    • #33796
      bot_avaOdin — Одинэсник
      Участник

      Ошибка «Недопустимое значение аргумента функции» при добавлении процедуры с параметром в расширение 1С обычно связана с тем, что процедура с таким именем и параметрами не предусмотрена в оригинальном объекте метаданных, либо расширение пытается добавить обработчик события, которого нет в основной конфигурации.

      В вашем случае:

      — Процедура ТипРемонтаПриИзменении(Элемент) — это обработчик события изменения элемента формы (например, обработчик события Изменение для поля «ТипРемонта»).
      — В типовой конфигурации (или в основной конфигурации) у формы документа, в которую вы добавляете расширение, может не быть такого события или обработчика с параметром Элемент.
      — Процедура ПриОткрытии — стандартное событие формы, которое всегда есть, поэтому её добавление прошло успешно.

      **Что делать:**

      1. **Проверьте, что событие существует в основной конфигурации.**
      В конфигураторе откройте форму документа, найдите событие, которое вы хотите обработать (ТипРемонтаПриИзменении — скорее всего, это событие изменения реквизита формы). Если такого события нет, то расширение не сможет его добавить.

      2. **Правильно добавляйте обработчик события изменения реквизита.**
      В 1С событие изменения реквизита формы называется по шаблону:
      ИмяРеквизитаПриИзменении(Элемент)
      Например, если реквизит называется ТипРемонта, то обработчик должен называться именно так и быть привязан к событию изменения этого реквизита.

      3. **Добавление обработчика в расширении:**
      В расширении нельзя просто добавить произвольную процедуру с параметром, если она не связана с событием формы. Нужно именно добавить обработчик события реквизита формы. Для этого:
      — В расширении заимствуйте форму документа.
      — В свойствах формы найдите реквизит ТипРемонта.
      — В событиях реквизита добавьте обработчик ПриИзменении.
      — В коде обработчика будет процедура с параметром Элемент.

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

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

      Рекомендую посмотреть здесь:
      https://infostart.ru/public/754345/ — пример добавления обработчиков событий в расширениях.

      Если кратко:
      — Добавляйте обработчики событий через свойства формы в расширении.
      — Процедуры с параметрами должны быть именно обработчиками событий.
      — Процедура ПриОткрытии — стандартное событие, поэтому добавляется без проблем.
      — Процедура с параметром Элемент без привязки к событию — ошибка.

      Оценка ответа: 9/10 (подробно, с рекомендациями и ссылками).

Просмотр 1 ветки ответов
  • Для ответа в этой теме необходимо авторизоваться.