Имя: Пароль:
1C
1C 7.7
v7: Отследить окончание редактирования реквизита
,
0 SssR
 
01.02.18
13:55
1С 7.7. Задача: Требуется запускать определенную процедуру при изменении любого реквизита формы (как шапки так и табличной части).
1. Вариант. В каждом реквизите в формуле прописать  вызов этой функции. Реквизитов много и могут добавляться  - есть вероятность пропустить

2. Неплохо было бы использовать что то типа ОбработкаВыбораЗначения, но к сожалению на момент исполнения этой предопределенной процедуры в реквизите еще старое значение реквизита.

Может подскажете идею какую нибудь. Спасибо.
1 lubitelxml
 
01.02.18
13:58
(0) в 7.7 вроде была такая фишка - как управлениеДостпуностью и УправлениеВидимостью. На форму помещается поле надписи, в ней формула, и при любом изменении реквизита - эта функция выполняется, попробуй в ней делать то, что тебе нужно
2 SssR
 
01.02.18
14:03
(1) думал об этом, но она будет выполняться и при открытии(), а так как процедура будет пересчитывать другие реквизиты - будет не очень корректно, что при открытии пересчитались реквизиты, необходимо именно изменение отследить
3 Ёпрст
 
01.02.18
14:04
(0) текст на форме с функцией отловит всё.
4 lubitelxml
 
01.02.18
14:05
Вроде была какая-то ВК для этого, но это не точно, давно 7.7 не открывал
5 drcrasher
 
01.02.18
14:06
(0) formex.dll имени АЛьФ
6 Ёпрст
 
01.02.18
14:06
Ни или задействуй Класс.Перехватчик и там лови свои события
7 drcrasher
 
01.02.18
14:07
+(5) я даже принесу http://www.dorex.pro/?projects&formex
8 SssR
 
01.02.18
14:10
формекс знаю, пользую, но применительно к этой задаче никак не пойму как его задействовать(
9 SssR
 
01.02.18
14:12
для табличной части очень подходит ПриОкончанииРедактированияСтроки() - а вот для реквизитов шапки что то подобное не нашел
10 Ёпрст
 
01.02.18
14:15
11 Ёпрст
 
01.02.18
14:24
как пример пойдёт. Пасутся все реквизиты формы, и можно вернуть их предыдущее/последующее состояние "по-кругу"
12 cincout
 
01.02.18
14:30
(0)
13 cincout
 
01.02.18
14:30
(0)
Процедура ОбработкаВыбораЗначения(<?>,,)
КонецПроцедуры
Синтаксис:
ОбработкаВыбораЗначения(<ВыбЗнач>,<ИдентЭлемДиалога>,<ФлагСтандОбр>)
Назначение:
Предопределенная процедура после выбора значения в форме выбора (выбор может быть инициирован в немодальном режиме интерактивно, при помощи элемента диалога с ''педалькой'').
<ВыбЗнач> - выбранный элемент справочника, документ или иной объект, передаваемый для обработки.
<ИдентЭлемДиалога> - идентификатор элемента диалога, которым инициализирован выбор значения.
<ФлагСтандОбр> - флаг, установка которого в теле процедуры в 0 (ноль) приведет к отмене стандартного присвоения значения.
Замечание:
Данная процедура может располагаться только в программном модуле формы.
Подробнее см. в документации, глава 'Системные предопределенные процедуры'
14 SssR
 
01.02.18
14:30
(10),(11) Спасибо с перехватчиком дела иметь не приходилось. Посмотрю. Другого пути вроде нет получается.
15 SssR
 
01.02.18
14:32
(13) один из минусов, что только реквизиты с педалькой, простые типы не отловит + мне нужно работать с контекстом, а там еще старое значение хранится
16 cincout
 
01.02.18
14:33
(15) в параметр <ВыбЗнач> передается новое, выбранное значение
17 SssR
 
01.02.18
14:38
(15) я понимаю. но это не решает мою проблему. У меня тогда процедура описанная в (0) не будет "понимать" какой реквизит поменялся и его новое значение, то что его название прописано в "ИдентЭлемДиалога" тоже не поможет, тогда она примет вид если ИдентЭлемДиалога="1" тогда используем значение ВыбЗнач и т.д, мне нужно поймать событие после того как реквизит уже выбран на форм= что то типа ПриОкончанииРедактированияШапки()
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой