Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
14 дек 2024, 15:40

Немотивированный вызов процедуры в документе

Автор reliance_com, 24 мар 2022, 10:36

0 Пользователей и 1 гость просматривают эту тему.

reliance_com

Люди добрый, умные, опытные, ПОМОГИТЕ!

Вкратце о проблеме.

При работе с таблицей «Услуги» документа «Расходная накладная» происходит следующее:

1. Выполняются все процедуры, связанные с действием в таблице формы (ПриИзменении цены, стоимости, количества, номенклатуры) – это ОК, это не проблема, так и должно быть :-))).
2. После выполнения процедур п.1, выполнение (автоматом, само, без вызова со стороны пользователя) переходит к процедуре СписокУслугНоменклатураПриИзменении(Элемент) - вот это вот проблема, так как все изменения цены, суммы, проведенные в п.1, откатываются назад.

В чем косяк – не понимаю. Проверил все, что можно и просто не вижу, почему запускается эта процедура (п.2 списка выше).

LexaK

reliance_com, а дело в том что, у вас на форме с разными элементами связан один обработчик
СписокУслугНоменклатураПриИзменении

при изменении Цена, Количество - сначала отрабатывает обработчик этих элементов
а затем отрабатывает обработчик ПриИзменении всей таблицы СписокУслуг а ему как раз и назначена ваша процедура
СписокУслугНоменклатураПриИзменении

как вариант, просто уберите вызов этой процедуры из обработчика ПриЗменении всей таблицы СписокУслуг
если помогло нажмите: Спасибо!

reliance_com

LexaK,
Ох ты! Есть такое.
Спасибо огромное!

Хм, прошу прощение, но такой вопрос (просто я реально новичок), а есть ли, в добавление к Вашему, несомненно, огромному опыту, еще какие-либо механизмы поиска того, где какая-либо процедура может использоваться (что-то наподобии Alt+F12, но чтобы пробежалась и показала, в каком элементе есть ссылки на данную процедуру/функцию)?

LexaK

reliance_com, механизмы есть, но они сложные и вам будут не понятны.
проще придерживаться каких-то правил при программировании тогда и таких непоняток не было бы!

разберем ваш пример

в элементе формы когда создаете обработчик события 1С сама генерит имя процедуры в этом имени процедуры добавлено и имя элемента
в котором это событие возникает и обрабатывается.
и если бы какой-то умник не заменил обработчик на совершенно другой а просто вызвал бы его в этой, автоматически созданной,
то при отладке, по кн.СтекВызовов было бы сразу видно, откуда идет вызов процедуры ПриИзмененииНоменклатуры()

если было бы так
&НаКлиенте
Процедура СписокУслугПриИзменении(Элемент)
СписокУслугНоменклатураПриИзменении(Элемент);
КонецПроцедуры
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск