Переключение на Главную Страницу Страницы: [1] 2 3 4 ОтправитьПечать
Очень популярная тема (более 25 ответов) Перехватчик и ФормаПослеЗаписи (число прочтений - 17995 )
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 записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 4
ОтправитьПечать