Имя: Пароль:
1C
1С v8
Посмотреть, какие события вызываются при работе
0 Dmitriy_
Kolesnikov
 
21.11.12
14:32
Добрый день! Существует ли возможность в реальном времени посмотреть, какие события и каких объектов вызываются при действиях пользователя? Типа монитора событий.
Задача такая. В форме элемента справочника Контрагенты есть табличное поле БанковскиеСчета. Я хочу перехватить момент окончания добавления нового счета из этой формы (и сделать с ним кое-что), но не могу понять, какое событие происходит при окончании добавления нового элемента.
1 Maxus43
 
21.11.12
14:36
замер производительности
2 Maxus43
 
21.11.12
14:37
+ если надо знать на какие кнопки нажал юзер - логирование
3 Лефмихалыч
 
21.11.12
14:38
+(2) ключ запуска предприятия /logui
4 Maxus43
 
21.11.12
14:38
но всё это не в реальном времени. в реальном времени - отладчик
5 Dmitriy_
Kolesnikov
 
21.11.12
14:50
Отладчик показывает, что кроме события ПередЗаписью справочника Банковские счета, ничего больше не вызывается :(
Обидно, придется сочинять свою кнопку "Добавить новый счёт"
6 Maxus43
 
21.11.12
14:59
(5) клиент-сервер? отладчик может соврать в этом случае
7 Maxus43
 
21.11.12
14:59
замер производительности на файловой - точно покажет ВСЁ
8 Dmitriy_
Kolesnikov
 
21.11.12
15:18
SQL
9 Maxus43
 
21.11.12
15:20
(8) тогда ключ debug и замер производительности, а лучше на файловой разверни
10 Maxus43
 
21.11.12
15:22
з.ы. а может ничего больше и не вызывается, кроме ПередЗаписью?
11 Dmitriy_
Kolesnikov
 
21.11.12
15:38
(9) на файловой её не развернешь, база огромная.
Ды я уже свою кнопку делаю.
(10) вероятно, вы правы. Просто удивительно, что в форме списка добавляется новая строка (в результате создания нового элемента справочника), она выводится, становится текущей, а никаких событий это не вызывает.
12 Maxus43
 
21.11.12
15:41
(11) что что?
>>Просто удивительно, что в форме списка добавляется новая строка (в результате создания нового элемента справочника), она выводится, становится текущей, а никаких событий это не вызывает.

это платформенное, поведение списка справочника. Что вы хотите там изменить то?
13 motkot
 
21.11.12
15:49
(0) а какая версия платформы и формы какие?
14 Dmitriy_
Kolesnikov
 
21.11.12
15:52
(11) ОсновнойБанковскийСчет = НовыйСчет;
(0) 8.1
15 motkot
 
21.11.12
15:59
(14) я вот честно говоря не помню, когда появилось "ОповеститьОЗаписиНовогоОбъекта", но может в эту сторону посмотреть?
16 НЕА123
 
21.11.12
16:01
(14)
ПриИзменении
?
вопрос теперь в том что НовыйСчет это действительно Новый?
17 НЕА123
 
21.11.12
16:03
(15)
в
81 было уже, по-крайней мере оповестить() точно.
18 vmv
 
21.11.12
16:04
(0) в последней бетта-версии платфомы 8.2
19 Dmitriy_
Kolesnikov
 
21.11.12
16:05
Чота не соображу, как правильно получить ссылку на созданный счет. Вот что происходит при нажатии кнопки СоздатьНовыйСчетПоУмолчанию:


   ФормаЭлемента = Справочники.БанковскиеСчета.ПолучитьФормуНовогоЭлемента(, ЭтотОбъект.Ссылка);
   ФормаЭлемента.Владелец = ЭтотОбъект.Ссылка;
   БанковскийСчет = ФормаЭлемента.ОткрытьМодально();
   ОсновнойБанковскийСчет = БанковскийСчет;



Получаем: БанковскийСчет = Неопределено.
Как же мне узнать, какой счет создал пользователь?
20 motkot
 
21.11.12
16:06
(19) посмотреть в (14) и (17) можно?
21 motkot
 
21.11.12
16:07
* в (15)
22 vmv
 
21.11.12
16:09
+(0) в вашей постановке задачи надо переопределять обработчики модификации списка и открывать формы элементов(записей) модально, тогда можно будет "Я хочу перехватить момент окончания добавления нового счета из этой формы (и сделать с ним кое-что)"

для РС, например, аналогично сделать для списка справочника пустяк, мне лень искать в своих

&НаКлиенте
Процедура ДсУчетПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
   
   Отказ = Истина;
   
   ВызываемаяФормаИмя       = "РегистрСведений.Add_IR_УчетСБ.Форма.ФормаЗаписи";
   ВызываемаяФормаПараметры = Новый Структура;
   
   Если Копирование И Элемент.ТекущиеДанные <> Неопределено Тогда
       
       ВызываемаяФормаПараметры.Вставить("ЗначениеКопирования", Элемент.ТекущаяСтрока);
       
   Иначе
       
       СтрокаБ = Элементы.Список.ТекущаяСтрока;
       Если НЕ ЗначениеЗаполнено(СтрокаБ) Тогда
           Предупреждение("Не выбрана текущая статья Баланса", 10);
           Возврат;
       КонецЕсли;
               
       СтруктураЗначенияЗаполнения = Новый Структура;
       // Измерения
       СтруктураЗначенияЗаполнения.Вставить("СтрокаБ", СтрокаБ);
       // Ресурсы
       СтруктураЗначенияЗаполнения.Вставить("Действует", Истина);
               
       ВызываемаяФормаПараметры.Вставить("ЗначенияЗаполнения", СтруктураЗначенияЗаполнения);
       
   КонецЕсли;
   
   ВызываемаяФорма = ПолучитьФорму(ВызываемаяФормаИмя, ВызываемаяФормаПараметры, ЭтаФорма);
   ВызываемаяФорма.ОткрытьМодально();
   
   // Обработчики после закрытия модальной формы
   ОбновитьТзРасчета();
   
КонецПроцедуры

&НаКлиенте
Процедура ДсУчетПередНачаломИзменения(Элемент, Отказ)
   
   Отказ = Истина;
   
   ВызываемаяФормаИмя       = "РегистрСведений.Add_IR_УчетСБ.Форма.ФормаЗаписи";
   ВызываемаяФормаПараметры = Новый Структура;
   
   Если Элемент.ТекущиеДанные <> Неопределено Тогда
       
       ВызываемаяФормаПараметры.Вставить("Ключ", Элемент.ТекущаяСтрока);
       
       ВызываемаяФорма = ПолучитьФорму(ВызываемаяФормаИмя, ВызываемаяФормаПараметры, ЭтаФорма);
       ВызываемаяФорма.ОткрытьМодально();
       
       // Обработчики после закрытия модальной формы
       ОбновитьТзРасчета();
       
   Иначе
       
       Предупреждение("Не выбрана текущая строка списка", 10);
       Возврат;
       
   КонецЕсли;
   
КонецПроцедуры
23 Dmitriy_
Kolesnikov
 
21.11.12
16:12
(21) да, есть такое в 8.1, уже разбираюсь
24 vmv
 
21.11.12
16:15
Оповещения тоже можно, но там легко проколоться с иденификатором события - я предпочитаю переопределять обработчики модификации списков
25 Dmitriy_
Kolesnikov
 
21.11.12
16:16
(22) да, событие ПередНачаломДобавления вызывается. Но как из него получить ссылку на вновь созданный объект, я не знаю (см. мой код - его можно было бы вставить в это событие)
26 motkot
 
21.11.12
16:17
(25) самое простое - понять оповещения между формами
27 vmv
 
21.11.12
16:24
(25) в (19) у тебя практичитески готовый код с полученной ссылкой для этого обработчика
28 vmv
 
21.11.12
16:27
Получаем: БанковскийСчет = Неопределено.

там так потому-что модальные формы возвращают значащее значение если они в режиме выбора, но ведь можно получить ссылку прямо из переменной формы в случае не включения режима выбора, хотя модальная форма и закрылать но конца метода где ее вызвали она содержит в себе все данные
29 vmv
 
21.11.12
16:31
на 8.1 проверить ссылку "зашитую" в форму можно через ФормаЭлемента.Ссылка.Пустая() или ФормаЭлемента.Ссылка.ПолучитьОбъект()
Независимо от того, куда вы едете — это в гору и против ветра!