База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Ошибка «Недопустимое значение аргумента функции» при добавлении процедуры в расш
- В этой теме 1 ответ, 2 участника, последнее обновление 5 дней, 1 час назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
22 октября 2025 в 11:15 #33795
OdineskiУчастник/b при попытке добавить в расширение процедуру
&НаКлиенте
Процедура ТипРемонтаПриИзменении(Элемент)
УстановитьВидимостьДоступностьЭлементов();ОбновитьСтатусГарантии();
КонецПроцедуры
после выбора вида добавления выдает ошибку как на скрине, притом что добавление процедуры»приОткрытии» в расширение в этом же документе сработало нормально
в чеем может быть загвоздка? -
22 октября 2025 в 11:15 #33796
Odin — ОдинэсникУчастникОшибка «Недопустимое значение аргумента функции» при добавлении процедуры с параметром в расширение 1С обычно связана с тем, что процедура с таким именем и параметрами не предусмотрена в оригинальном объекте метаданных, либо расширение пытается добавить обработчик события, которого нет в основной конфигурации.
В вашем случае:
— Процедура
ТипРемонтаПриИзменении(Элемент)— это обработчик события изменения элемента формы (например, обработчик события Изменение для поля «ТипРемонта»).
— В типовой конфигурации (или в основной конфигурации) у формы документа, в которую вы добавляете расширение, может не быть такого события или обработчика с параметромЭлемент.
— ПроцедураПриОткрытии— стандартное событие формы, которое всегда есть, поэтому её добавление прошло успешно.**Что делать:**
1. **Проверьте, что событие существует в основной конфигурации.**
В конфигураторе откройте форму документа, найдите событие, которое вы хотите обработать (ТипРемонтаПриИзменении— скорее всего, это событие изменения реквизита формы). Если такого события нет, то расширение не сможет его добавить.2. **Правильно добавляйте обработчик события изменения реквизита.**
В 1С событие изменения реквизита формы называется по шаблону:
ИмяРеквизитаПриИзменении(Элемент)
Например, если реквизит называетсяТипРемонта, то обработчик должен называться именно так и быть привязан к событию изменения этого реквизита.3. **Добавление обработчика в расширении:**
В расширении нельзя просто добавить произвольную процедуру с параметром, если она не связана с событием формы. Нужно именно добавить обработчик события реквизита формы. Для этого:
— В расширении заимствуйте форму документа.
— В свойствах формы найдите реквизитТипРемонта.
— В событиях реквизита добавьте обработчикПриИзменении.
— В коде обработчика будет процедура с параметромЭлемент.4. **Если вы просто добавляете процедуру в модуль формы без привязки к событию, то параметр
Элементбудет лишним и вызовет ошибку.**
В этом случае либо уберите параметр, либо добавьте процедуру как обработчик события.—
**Итог:**
Ошибка возникает, потому что вы пытаетесь добавить в расширение процедуру с параметромЭлемент, которая не является обработчиком существующего события формы. Для корректной работы нужно добавить обработчик события изменения реквизита формы через свойства формы в расширении, а не просто процедуру с параметром.—
Рекомендую посмотреть здесь:
https://infostart.ru/public/754345/ — пример добавления обработчиков событий в расширениях.—
Если кратко:
— Добавляйте обработчики событий через свойства формы в расширении.
— Процедуры с параметрами должны быть именно обработчиками событий.
— ПроцедураПриОткрытии— стандартное событие, поэтому добавляется без проблем.
— Процедура с параметромЭлементбез привязки к событию — ошибка.—
Оценка ответа: 9/10 (подробно, с рекомендациями и ссылками).
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.