Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Перехватчик и ФормаПослеЗаписи (число прочтений - 17985 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Перехватчик и ФормаПослеЗаписи
19. Августа 2010 :: 14:13
Печать  
Хочется, чтобы перехватчик мог ловить событие контекста "ФормаПослеЗаписи"

На текущий момент, если в перехватчике есть код:
Код
Выбрать все
ОбъектФорма			= СоздатьОбъект("Форма");
ОбъектФорма.УстановитьФорму(КонтекстПерехваченнойФормы.Форма) 


а в модуле этого контекста есть
Код
Выбрать все
Процедура ФормаПослеЗаписи(ИсточникСобытия, флРезультат)
	Сообщить("После записи в Документе!");
КонецПроцедуры // ФормапослеЗаписи 


то мы увидим это сообщение. (это я к тому, что в модуле документа/справочника.. не обязательно создавать объект класса "Форма" ПриОткрытии, чтобы отловить ПослеЗаписи, достаточно сделать это в Перехватчике).

В багзилле
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #1 - 19. Августа 2010 :: 14:31
Печать  
А как должно работать  если установлен
ПриЗаписиПерепроводить(1);
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #2 - 19. Августа 2010 :: 17:17
Печать  
А в чем именно проблема?
Вызов идет в таком порядке:
- ПриЗаписи
- ПослеЗаписи
- ОбработкаПроведения
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #3 - 20. Августа 2010 :: 04:38
Печать  
Речь об  sql
главное чтобы в этом модуле не было
НачатьТранзакцию()
ОтменитьТранзакцию()

или просто
ОтменитьТранзакцию()

иначе изменения документа откатятся и что после этого проведется непонятно.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #4 - 20. Августа 2010 :: 06:22
Печать  
Z1, ты говоришь про ОтменитьТранзакцию() в "ПослеЗаписи"?
Если да, то это проблема того программиста, который так сделал. Ничего страшного здесь не вижу.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Перехватчик и ФормаПослеЗаписи
Ответ #5 - 23. Августа 2010 :: 15:22
Печать  
JohnyDeath писал(а) 19. Августа 2010 :: 14:13:
Хочется, чтобы перехватчик мог ловить событие контекста "ФормаПослеЗаписи"

Жень, значит результат такой:
События объектов "Форма", "ТабличноеПоле" и "АктивИкс", по моим данным, не перехватываются - здесь надо дорабатывать перехватчик.
К сожалению, я эту тему сейчас развивать не в силах.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #6 - 23. Августа 2010 :: 17:04
Печать  
Печально.
А хоть от падения при перехвате ОбработкиПроведения можешь вылечить? В 3.0 было ж все нормально.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Перехватчик и ФормаПослеЗаписи
Ответ #7 - 23. Августа 2010 :: 17:25
Печать  
JohnyDeath писал(а) 23. Августа 2010 :: 17:04:
Печально.
А хоть от падения при перехвате ОбработкиПроведения можешь вылечить? В 3.0 было ж все нормально.

Пока не знаю.
На 3.0.1.x радикально отличается порядок инициализации и деинициализации компоненты.
Я помню про эту задачу.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #8 - 24. Августа 2010 :: 04:19
Печать  
Михаил, а можешь мне прислать текущие исходники icpp из репозитария, т.к. у меня пока не получается подключиться к репозитарию.
Я бы попытался посмотреть проблемы Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Перехватчик и ФормаПослеЗаписи
Ответ #9 - 24. Августа 2010 :: 05:17
Печать  
Да, конечно.
  

Source-2010-08-24.rar ( 1101 KB | Загрузки )

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #10 - 24. Августа 2010 :: 09:38
Печать  
Михаил, ты мне прислал исходники версии 3.0.1.19 Печаль
На ней бага с падением после использования Перехватчика ведь нету Печаль
Дай мне свежие ПОСЛЕДНИЕ исходники от версии 3.2 (или 3.3 если есть)
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #11 - 24. Августа 2010 :: 09:46
Печать  
JohnyDeath писал(а) 19. Августа 2010 :: 14:13:
Хочется, чтобы перехватчик мог ловить событие контекста "ФормаПослеЗаписи"

На текущий момент, если в перехватчике есть код:
Код
Выбрать все
ОбъектФорма			= СоздатьОбъект("Форма");
ОбъектФорма.УстановитьФорму(КонтекстПерехваченнойФормы.Форма) 


а в модуле этого контекста есть
Код
Выбрать все
Процедура ФормаПослеЗаписи(ИсточникСобытия, флРезультат)
	Сообщить("После записи в Документе!");
КонецПроцедуры // ФормапослеЗаписи 


то мы увидим это сообщение. (это я к тому, что в модуле документа/справочника.. не обязательно создавать объект класса "Форма" ПриОткрытии, чтобы отловить ПослеЗаписи, достаточно сделать это в Перехватчике).

В багзилле

Тестовую конфу можешь предоставить?
ИМХО Перехватчик вполне штатно перехватывает это событие
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #12 - 24. Августа 2010 :: 10:24
Печать  
Все-таки я был прав, и Перехватчик спокойно перехватывает подобные события. Улыбка

Достаточно в коде модуля класса-перехватчика ГК написать
Цитата:
Функция ФормаПослеЗаписи(ИсточникСобытия, флРезультат) Экспорт
     Сообщить("После записи в классе!");
     
     Перехватчик=СоздатьОбъект("Перехватчик");
     Возврат Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтФормы, "ФормаПослеЗаписи", ИсточникСобытия, флРезультат);
КонецФункции

Открываем документ, изменяем, записываем, получаем
Цитата:
Записали Новый1 2
После записи в классе!
После записи в Документе!

Без вызова оригинального события последнее сообщения не появляется.

Это первый вариант.
Но есть и второй - создаем наследника от Форма, этот наследник передает полученные им события классу-перехватчику. вполне штатный способ.

Жень, устроят подобные решения?

ЗЫ баг с падением еще не смотрел, жду последние исходники от Миши.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #13 - 24. Августа 2010 :: 10:32
Печать  
У меня не получается.
Пробовал и "Функция ФормаПослеЗаписи" и "Функция Событие_ФормаПослеЗаписи"
Вот тестовая конфа. 1С++ положить в каталог ИБ
  

1cpp302_________.rar ( 11 KB | Загрузки )
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #14 - 24. Августа 2010 :: 10:34
Печать  
Я взял тестовую конфу из ветки "Вылет при перехвате ОбработкиПроведения" (12 пост)
в модуле класса ПерехватПроведенияДокументов сделал добавления
1.
Цитата:
Процедура Инит(КонтекстФормы) Экспорт
     КонтФормы=КонтекстФормы;
     // -- Артур --
     ОбъектФорма                  = СоздатьОбъект("Форма");
     ОбъектФорма.УстановитьФорму(КонтФормы.Форма);            
     // завершение
КонецПроцедуры


2. Цитата:
Функция Событие_ФормаПослеЗаписи(ИсточникСобытия, флРезультат) Экспорт
     Сообщить("После записи в классе!");
     
     Перехватчик=СоздатьОбъект("Перехватчик");
     Возврат Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтФормы, "ФормаПослеЗаписи", ИсточникСобытия, флРезультат);
КонецФункции


Этого уже достаточно.
Код работает независимо от наличия/отсутствия процедуры ФормаПослеЗаписи в модуле формы документа
ЗЫ лично протестил на 1С++ 3.2.2 - не поленился скачал ее только что.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #15 - 24. Августа 2010 :: 10:41
Печать  
Вроде бы делаю всё как ты говоришь. Не пашет.
А не прикрепленной здесь конфе пашет?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик и ФормаПослеЗаписи
Ответ #16 - 24. Августа 2010 :: 10:41
Печать  
artbear, всегда интересовал следующий вопрос:
а обязательно в классе создавать каждый раз объект
перехватчика в методах класса:
Код
Выбрать все
Функция Событие_......
     Перехватчик=СоздатьОбъект("Перехватчик");
     ....
    Возврат Перехватчик.ВыполнитьОригинальноеСобытиеГК 



или достаточно объявить
Перем Перехватчик; и в конструкторе 1 раз создать объект Перехватчик... ?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #17 - 24. Августа 2010 :: 10:43
Печать  
JohnyDeath писал(а) 24. Августа 2010 :: 10:32:
У меня не получается.
Пробовал и "Функция ФормаПослеЗаписи" и "Функция Событие_ФормаПослеЗаписи"
Вот тестовая конфа. 1С++ положить в каталог ИБ

Вот ошибка - следующий код лишний Печаль
Цитата:
Перем ОбъектФорма Экспорт;

Время жизни объекта типа Форма совпадает со временем жизни самой формы.
Поэтому не нужно объявлять этот объект!
Комментируешь этот код, и все как у меня Улыбка

ЗЫ я даже не пытался объявлять эту переменную, поэтому у меня сразу все заработало Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #18 - 24. Августа 2010 :: 10:45
Печать  
Eprst писал(а) 24. Августа 2010 :: 10:41:
artbear, всегда интересовал следующий вопрос:
а обязательно в классе создавать каждый раз объект
перехватчика в методах класса:
Код
Выбрать все
Функция Событие_......
     Перехватчик=СоздатьОбъект("Перехватчик");
     ....
    Возврат Перехватчик.ВыполнитьОригинальноеСобытиеГК 



или достаточно объявить
Перем Перехватчик; и в конструкторе 1 раз создать объект Перехватчик... ?

Один раз достаточно, конечно Улыбка

ЗЫ здесь, конечно, нужно было сделать красиво - типа спец.метод любого класса Перехватчик() по аналогии с вирт()
может быть, как-нибудь еще сделаем Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #19 - 24. Августа 2010 :: 10:47
Печать  
artbear писал(а) 24. Августа 2010 :: 10:43:
Вот ошибка - следующий код лишний Печаль
Цитата:
Перем ОбъектФорма Экспорт;

Время жизни объекта типа Форма совпадает со временем жизни самой формы.
Поэтому не нужно объявлять этот объект!
Комментируешь этот код, и все как у меня Улыбка

Не помогает (
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #20 - 24. Августа 2010 :: 10:50
Печать  
А у кого как работает конфа из 13-го поста?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #21 - 24. Августа 2010 :: 10:51
Печать  
Вот мой код класса ПерехватГлобальника из теста
Цитата:
//Перем ОбъектФорма Экспорт; // одно единственное изменение
Перем КонтекстФормы Экспорт;
=====
Процедура Конструктор()
     
КонецПроцедуры      // Конструктор

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

//--------------------------------------------
Функция контВид(Конт) Экспорт
     стрТип=контТип(Конт);
     Если стрТип="Документ" Тогда Возврат Конт.Вид();
     ИначеЕсли стрТип="Справочник" Тогда Возврат Конт.Вид();
     ИначеЕсли стрТип="СписокЗначений" Тогда Возврат Конт.Получить("Вид");
     КонецЕсли;
     Попытка Возврат Конт.Вид(); Исключение КонецПопытки; // гр контекст
     Попытка Возврат Конт.Вид; Исключение КонецПопытки; // форма, класс, ТЗ
     Возврат "";
КонецФункции

//======================================================================
Функция Перехватчик()
     Возврат СоздатьОбъект("Перехватчик");;
КонецФункции // Перехватчик

//======================================================================
Процедура Инит(Конт) Экспорт
     КонтекстФормы=Конт;      
     ОбъектФорма                  = СоздатьОбъект("Форма");
     ОбъектФорма.УстановитьФорму(КонтекстФормы.Форма);
     
     Перехватчик=СоздатьОбъект("Перехватчик");            
     Перехватчик.ПерехватитьСобытияГК(КонтекстФормы, вирт());

КонецПроцедуры // Инит

=====
Функция СобытиеГМ_СозданиеКонтекста(вхКонтФормы) Экспорт            
     текПерехватчик = Перехватчик().ПолучитьПерехватчикСобытийГК(вхКонтФормы);
     Если ПустоеЗначение(текПерехватчик)=1 Тогда
           ПерехватВсего = СоздатьОбъект("ПерехватГлобальника");
           ПерехватВсего.Инит(вхКонтФормы);
     КонецЕсли;
КонецФункции

//======================================================================
Функция Событие_ПриЗаписи() Экспорт
     Сообщить("Событие ПриЗаписи в Перехватчике");
     Возврат Перехватчик().ВыполнитьОригинальноеСобытиеГК(КонтекстФормы,"ПриЗаписи");
КонецФункции // Событие_ПриЗаписи

//======================================================================
Функция ФормаПослеЗаписи(ИсточникСобытия, флРезультат) Экспорт
     Сообщить("После записи в классе!","!");
    
     Перехватчик=СоздатьОбъект("Перехватчик");
     Возврат Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтекстФормы, "ФормаПослеЗаписи", ИсточникСобытия, флРезультат);
КонецФункции
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #22 - 24. Августа 2010 :: 10:59
Печать  
Да, всё так и есть. Символ в символ. Но не вижу я сообщения о перехвате события После записи в перехватчике. Вижу только:
Цитата:
Событие ПриЗаписи в Перехватчике
Отрабатывает модуль проведения документа.
После записи в Документе!
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #23 - 24. Августа 2010 :: 11:00
Печать  
Еще может быть глюк из-за неверной расстановки кода
Цитата:
ОбъектФорма                  = СоздатьОбъект("Форма");
     ОбъектФорма.УстановитьФорму(КонтекстФормы.Форма);
    
     Перехватчик=СоздатьОбъект("Перехватчик");            
     Перехватчик.ПерехватитьСобытияГК(КонтекстФормы, вирт());

на самом деле сначала нужно сделать перехват ГК, а уж потом создавать объект Форма Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик и ФормаПослеЗаписи
Ответ #24 - 24. Августа 2010 :: 11:02
Печать  
у меня тоже не работает в моём классе Печаль
Только теперь, если включено ПерехватитьСобытияПроведенияДокумента
и вставлен код

Код
Выбрать все
ОбъектФорма			= СоздатьОбъект("Форма");
 ОбъектФорма.УстановитьФорму(КонтФормы.Форма);
...
Функция Событие_ФормаПослеЗаписи(ИсточникСобытия, флРезультат) Экспорт
     Сообщить("После записи в классе!");
     Возврат Перехватчик.ВыполнитьОригинальноеСобытиеГК(КонтФормы, "ФормаПослеЗаписи", ИсточникСобытия, флРезультат);
КонецФункции 



При закрытии 1с вылета нет, но в процессах остается висеть процесс от 1с-ины!!!
Печаль
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #25 - 24. Августа 2010 :: 11:03
Печать  
С такой процедурой:
Код
Выбрать все
Процедура Инит(Конт) Экспорт
     КонтекстФормы=Конт;

	 Перехватчик=СоздатьОбъект("Перехватчик");
     Перехватчик.ПерехватитьСобытияГК(КонтекстФормы, вирт());

     ОбъектФорма			= СоздатьОбъект("Форма");
     ОбъектФорма.УстановитьФорму(КонтекстФормы.Форма);
КонецПроцедуры // Инит 


Ничего не поменялось  Печаль

мне интересно, почему у тебя работает, а у меня нет?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик и ФормаПослеЗаписи
Ответ #26 - 24. Августа 2010 :: 11:04
Печать  
artbear писал(а) 24. Августа 2010 :: 11:00:
на самом деле сначала нужно сделать перехват ГК, а уж потом создавать объект Форма Улыбка


Ты прав на все 100 !
Поменял местами - событие появилось!
Улыбка

ЗЫ: зато ошибка с вылетом при закрытии 1с осталась..
Печаль
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #27 - 24. Августа 2010 :: 11:04
Печать  
Жень, еще раз выложи свою конфу - последний вариант.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #28 - 24. Августа 2010 :: 11:10
Печать  
ЕЕЕС! Всё заработало после перестановки местами создания объекта Формы и перехвата контекста!!!! (просто в последний раз класс не тот сохранил)
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #29 - 24. Августа 2010 :: 11:10
Печать  
Eprst писал(а) 24. Августа 2010 :: 11:04:
artbear писал(а) 24. Августа 2010 :: 11:00:
на самом деле сначала нужно сделать перехват ГК, а уж потом создавать объект Форма Улыбка


Ты прав на все 100 !
Поменял местами - событие появилось!
Улыбка

Вот, а я что говорю - Перехватчик все хавает Улыбка

Eprst писал(а) 24. Августа 2010 :: 11:04:
ЗЫ: зато ошибка с вылетом при закрытии 1с осталась..
Печаль

Тут без исходников никак не обойтись Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #30 - 24. Августа 2010 :: 11:14
Печать  
Да, теперь бы победить вылет при закрытии 1С связанный с перехватом ОбработкиПроведения. (Миша вроде положил исходники в 9-м посте).

Артур, еще один маленький вопрос.
Возможно ли перехватить любую запись документа/справочника (не только интерактивную), учитываю тот факт что меняется поле verstamp таблицы журнала документов/справочника? Т.е. возможно ли отловить момент изменения этого флага?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #31 - 24. Августа 2010 :: 11:16
Печать  
JohnyDeath писал(а) 24. Августа 2010 :: 11:14:
Да, теперь бы победить вылет при закрытии 1С связанный с перехватом ОбработкиПроведения. (Миша вроде положил исходники в 9-м посте).

Это не те исходники Печаль - это исходники версии 3.0.1.19 Печаль
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #32 - 24. Августа 2010 :: 11:17
Печать  
Добавлю, что Перехватчик прекрасно ловит события объектов Форма, АктивИкс, ТабличноеПоле
аналогично решению в этой ветке.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Перехватчик и ФормаПослеЗаписи
Ответ #33 - 24. Августа 2010 :: 11:39
Печать  
artbear писал(а) 24. Августа 2010 :: 11:17:
Добавлю, что Перехватчик прекрасно ловит события объектов Форма, АктивИкс, ТабличноеПоле
аналогично решению в этой ветке.

Отличная новость, мне полегчало.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Перехватчик и ФормаПослеЗаписи
Ответ #34 - 24. Августа 2010 :: 11:42
Печать  
artbear писал(а) 24. Августа 2010 :: 11:16:
JohnyDeath писал(а) 24. Августа 2010 :: 11:14:
Да, теперь бы победить вылет при закрытии 1С связанный с перехватом ОбработкиПроведения. (Миша вроде положил исходники в 9-м посте).

Это не те исходники Печаль - это исходники версии 3.0.1.19 Печаль

Да нет, Артур, более новых исходников у меня нет.
Ты, конечно, прищурься недоверчиво, но присмотрись внимательнее: это 3.2.2.3.

http://www.1cpp.ru/forum/YaBB.pl?num=1282227205/9#9
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Перехватчик и ФормаПослеЗаписи
Ответ #35 - 24. Августа 2010 :: 11:58
Печать  
JohnyDeath писал(а) 24. Августа 2010 :: 11:10:
ЕЕЕС! Всё заработало после перестановки местами создания объекта Формы и перехвата контекста!!!! (просто в последний раз класс не тот сохранил)

Теперь бы в FAQ это последний рабочий вариант закинуть...
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #36 - 24. Августа 2010 :: 12:09
Печать  
kms писал(а) 24. Августа 2010 :: 11:58:
JohnyDeath писал(а) 24. Августа 2010 :: 11:10:
ЕЕЕС! Всё заработало после перестановки местами создания объекта Формы и перехвата контекста!!!! (просто в последний раз класс не тот сохранил)

Теперь бы в FAQ это последний рабочий вариант закинуть...

Ага, Жень, забрось, плиз.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #37 - 24. Августа 2010 :: 12:18
Печать  
В какой-такой Faq?
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #38 - 24. Августа 2010 :: 12:23
Печать  
И еще один вопрос про ПослеЗаписи (наверное это больше вопрос к Мише)
Я думал, что порядок событий такой:
Цитата:
ПриЗаписи
ПослеЗаписи
ОбработкаПроведения

На самом деле ПослеЗаписи отрабатывает ПОСЛЕ проведения документа. Так и должно быть?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Перехватчик и ФормаПослеЗаписи
Ответ #39 - 24. Августа 2010 :: 12:27
Печать  
JohnyDeath писал(а) 24. Августа 2010 :: 12:23:
На самом деле ПослеЗаписи отрабатывает ПОСЛЕ проведения документа. Так и должно быть?

Да, однозначно.
В процессе проведения запись может отмениться.
Поэтому и был добавлен соотв. параметр этого события.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #40 - 24. Августа 2010 :: 12:28
Печать  
kms писал(а) 24. Августа 2010 :: 12:27:
JohnyDeath писал(а) 24. Августа 2010 :: 12:23:
На самом деле ПослеЗаписи отрабатывает ПОСЛЕ проведения документа. Так и должно быть?

Да, однозначно.
В процессе проведения запись может отмениться.
Поэтому и был добавлен соотв. параметр этого события.

Ага, это не снеговик Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Перехватчик и ФормаПослеЗаписи
Ответ #41 - 24. Августа 2010 :: 12:28
Печать  
JohnyDeath писал(а) 24. Августа 2010 :: 12:18:
В какой-такой Faq?

Можно прямо сюда: http://www.1cpp.ru/forum/YaBB.pl?num=1157706754
  

De quelle planète es-tu?
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #42 - 24. Августа 2010 :: 13:00
Печать  
kms писал(а) 24. Августа 2010 :: 12:28:
JohnyDeath писал(а) 24. Августа 2010 :: 12:18:
В какой-такой Faq?

Можно прямо сюда: http://www.1cpp.ru/forum/YaBB.pl?num=1157706754

Сделал как смог.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик и ФормаПослеЗаписи
Ответ #43 - 24. Августа 2010 :: 13:11
Печать  
JohnyDeath писал(а) 24. Августа 2010 :: 13:00:
kms писал(а) 24. Августа 2010 :: 12:28:
JohnyDeath писал(а) 24. Августа 2010 :: 12:18:
В какой-такой Faq?

Можно прямо сюда: http://www.1cpp.ru/forum/YaBB.pl?num=1157706754

Сделал как смог.


Неудачный пример положил, в плане создания каждый раз
объекта перехватчик во всех событиях класса...

ЗЫ: странно, почему работает

Функция ФормаПослеЗаписи
и аналогично работает
Функция Событие_ФормаПослеЗаписи
?
И ежели они прописаны обе, то только вторая , через Событие_ которая Улыбка)

  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #44 - 24. Августа 2010 :: 14:08
Печать  
Eprst писал(а) 24. Августа 2010 :: 13:11:
JohnyDeath писал(а) 24. Августа 2010 :: 13:00:
Сделал как смог.

Неудачный пример положил, в плане создания каждый раз
объекта перехватчик во всех событиях класса...

+1

Eprst писал(а) 24. Августа 2010 :: 13:11:
ЗЫ: странно, почему работает

Функция ФормаПослеЗаписи
и аналогично работает
Функция Событие_ФормаПослеЗаписи
?
И ежели они прописаны обе, то только вторая , через Событие_ которая Улыбка)

В первую очередь в классе-обработчике перехвата ищется и обрабатывается именно обработчик Событие_НаименованиеСобытия, до обработчика НаименованиеСобытия дело в этом случае просто не дойдет Улыбка
Или я вопрос не понял.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехватчик и ФормаПослеЗаписи
Ответ #45 - 25. Августа 2010 :: 04:58
Печать  
artbear писал(а) 24. Августа 2010 :: 14:08:
В первую очередь в классе-обработчике перехвата ищется и обрабатывается именно обработчик Событие_НаименованиеСобытия, до обработчика НаименованиеСобытия дело в этом случае просто не дойдет Улыбка
Или я вопрос не понял.


Не .. я не понял, почему вообще срабатывает  метод
Функция ФормаПослеЗаписи ???
Когда в классе перехватчике все события должны начинаться со слова Событие_


А всё, в документации написано , что и так работает.Странно, то ли поправили, то ли читал не внимательно. Почему-то отпечаталось, что только с "Событие_ "все методы класса должны быть для перехвата.




  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #46 - 25. Августа 2010 :: 09:48
Печать  
Eprst писал(а) 25. Августа 2010 :: 04:58:
Не .. я не понял, почему вообще срабатывает  метод
Функция ФормаПослеЗаписи ???
Когда в классе перехватчике все события должны начинаться со слова Событие_


А всё, в документации написано , что и так работает.Странно, то ли поправили, то ли читал не внимательно. Почему-то отпечаталось, что только с "Событие_ "все методы класса должны быть для перехвата.

Всегда так было, вариант без "Событие_" оставлен для совместимости.
Я лично рекомендую вариант "Событие_", код потом намного легче читать Улыбка

  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #47 - 11. Декабря 2010 :: 20:16
Печать  
Подскажите как в перехватчике перехватывать события табличного поля?
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #48 - 13. Декабря 2010 :: 09:30
Печать  
artbear писал(а) 24. Августа 2010 :: 11:17:
Добавлю, что Перехватчик прекрасно ловит события объектов Форма, АктивИкс, ТабличноеПоле
аналогично решению в этой ветке.

Подскажите как ловить события объекта ТабличноеПоле. Не понимаю.
Хотя бы малюсенький пример.
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: Перехватчик и ФормаПослеЗаписи
Ответ #49 - 16. Октября 2018 :: 11:56
Печать  
Хотел сделать лог-запись при копировании объекта, так оказалось, что перехват ФормаПослеЗаписи почему-то срабатывает не всегда! Т.е. раза 2-3 сработает, а потом - нет. Соответственно у двух-трех элементов (документов) запись лог будет, а у одного - нет....

Проверял просто - делал вручную подряд несколько копий одного элемента (документа). В ФормаПослеЗаписи просто вывел Сообщить.

Что-бы еще можно было проверить? Почему может не всегда перехватываться событие?
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать