Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.
Отличная штука. Сильно помогает при программном создании документов, когда надо заполнить кучу зависимых реквизитов, а прописывать каждый руками утомительно.
Жирный плюс !!! Можешь помочь с обработкой таблицы управляемой формы ?
Делаю так:
ФормаДок.Элементы.Товары.ТекущаяСтрока = 0;
Получилось в качестве колонки пока только это скормить: ФормаДок.Товары.ПодчиненныеЭлементы.ТоварыЦенаСоСкидкой Но значение на форме не появилось
На управляемых формах это тоже работает.
Кстати про тестирование форм (обычных и управляемых) рекомендую посмотреть инструмент "Тестирование метаданных" из подсистемы Инструменты разработчика, где этот прием используется.
Все таки не ясно, как должна выглядеть процедура 2 для УФ, там используется вместо ТабличногоПоля, ТаблицаФормы. Методы конечно похожие, но что-то до конца не получилось у меня разобраться. Проверял на УТ 11.2. Вторую процедуру сделал так:
В результате на форме заполнилось: Партнер,Контрагент
Номенклатура - пустое поле, Цена=100,Количество=100,Сумма=10 000.
Мне не понятен момент почему не заполнилась Номенклатура и не сработало событие "ПриИзменении", ведь для "Цены" и "Количества" это событие сработало.
Хотя воспроизвел, в чистой базе создал документ "РеализациятоваровУслуг" с Партнером и табличной частью Номенклатура,НоменклатураНаименование-строка, Цена, Количество, Сумма
сделал обработчики событий для Номенклатуры при изменении заполняется поле НоменклатураНаименование, для Цены и Количества обработчики при изменении расчета Суммы.
Запустил эту обработку НоменклатураНаименование заполнилось и сумма рассчиталась. Все обработчики событий сработали.
Странно, почему в УТ 11.2 не отработало
(19) uri1709, аналогичная проблема
В ЗУП 3 при заполнении дополнительного отпуска в табличной части вид не проставляется, а даты нормально
пока не разобрался
(29) Так обработчика может не быть. К тому же есть внутренние обработчики платформы при изменении значения в поле ввода. Они не вызываются при вызове прикладного обработчика.
(33) Если приложение аварийно завершается, то надо сделать пример для воспроизведения проблемы. Тогда возможно я чем то помогу. Но такую проблему читаю впервые. А по поводу табличного поля и колонки все описано в комментариях перед методом.
И вообще, тут, по - моему, опечатка - в функции идут 4 параметра - табличноеполе, колонка, значение, инициатор и два левых булёвых
А во внутренней функции их уже три... может из за этого - все сдвигается и поэтому глючит
(40) разобрался в чем проблема. Если целевая форма не открыта, то теперь обработчик не вызывается. Ранее форму можно было не открывать. Поведение изменилось где-то между 8.3.12 и 8.3.16
(44) Думаю он имел ввиду именно это. Я сам не проверял для управляемой формы. Но по крайней мере до 8.3.18 включительно, если использовать обычную не открытую форму в качестве отправителя, то работает для доставки и в обычные и в управляемые формы.
(45)Сейчас потестил. если форма целевого документа, где изменяем реквизит открыта - то все ок. У меня у контрагента заполняется договор. А если не открывать то ничего не происходит. А хотелось бы не открывать и использовать эту вещь для заполнения всяких там счетов и пр. в ТЧ документа
(46) Теперь ясно, что ты имел ввиду под "целевая форма". Ты так назвал форму, получающую оповещение об изменении реквизита. С не открытой формой-получателем оповещения я вообще не проверял. Кстати в подобных случаях принято указывать версию платформы.
(47)Ваш код замечателен, я даже нашел ему применение. Спасибо. Жаль всё таки нельзя получить управляшку и там инициировать вызов "ПриИзменении" с вашим кодом. Эх...столько бы времени мы все сэкономили)))