Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Перехвадчик событий, помогите разобраться! (число прочтений - 10404 )
Александр84
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 30. Сентября 2011
Перехвадчик событий, помогите разобраться!
18. Января 2012 :: 08:38
Печать  
1cv77 как при помощи перехватчика событий изменять время создаваемого документа
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Перехвадчик событий, помогите разобраться!
Ответ #1 - 18. Января 2012 :: 08:41
Печать  
Перехватывай событие Призаписи()
и проверяй на сохраненность
а там АвтовремяВыключить()
ну и устанавливай какое тебе надо.
  
Наверх
 
IP записан
 
Александр84
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 30. Сентября 2011
Re: Перехвадчик событий, помогите разобраться!
Ответ #2 - 18. Января 2012 :: 08:46
Печать  
Вот код обработки "КлассПерехватСобытия"
Делал по примеру в интернете: Правильно?

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

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


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Перехвадчик событий, помогите разобраться!
Ответ #3 - 18. Января 2012 :: 08:52
Печать  
И каков результат?
  
Наверх
 
IP записан
 
Александр84
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 30. Сентября 2011
Re: Перехвадчик событий, помогите разобраться!
Ответ #4 - 18. Января 2012 :: 09:01
Печать  
Ни какого!
Не пойму пока куда надо прописать само изменение времени
АвтовремяВыключить()
УстановитьВремя()
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехвадчик событий, помогите разобраться!
Ответ #5 - 18. Января 2012 :: 09:24
Печать  
Сработает !только! для нового, не записанного документа.

ЗЫ: если док уже записан и НЕ проведен, то поменять ему время можно только черз СоздатьОбъект + УстановитьВремя, или править 1sjourn прямым запросом (ну и сопутствующие таблички, типа ссылок)
  
Наверх
 
IP записан
 
Александр84
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 30. Сентября 2011
Re: Перехвадчик событий, помогите разобраться!
Ответ #6 - 18. Января 2012 :: 09:26
Печать  
Я знаю, мне это подайдет! Необходимо реализовать механизм который при записи нового документа (как в ручную так и программно) ставил документ в определенное время.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехвадчик событий, помогите разобраться!
Ответ #7 - 18. Января 2012 :: 09:27
Печать  
Само изменение времени проще прописать в событие ВводНового..
ЗЫ: тока вот, если документ будет при проведении толкать ТА, всё это филькина грамота.

  
Наверх
 
IP записан
 
Александр84
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 30. Сентября 2011
Re: Перехвадчик событий, помогите разобраться!
Ответ #8 - 18. Января 2012 :: 09:28
Печать  
Как его перехватить?
  
Наверх
 
IP записан
 
Александр84
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 30. Сентября 2011
Re: Перехвадчик событий, помогите разобраться!
Ответ #9 - 18. Января 2012 :: 09:28
Печать  
Можно пример?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехвадчик событий, помогите разобраться!
Ответ #10 - 18. Января 2012 :: 09:41
Печать  
На вот, мой класс для перехвата, в глобальник воткнешь это:
Код
Выбрать все
Процедура ПриНачалеРаботыСистемы()

	ЗагрузитьВнешнююКомпоненту("1cpp.dll");
	Настройки=СоздатьОбъект("УправлениеНастройками");
	Настройки.Сбросить("Проверка типов");
	Настройки.Сбросить("Отладка");
	//Настройки.Сбросить("Оптимизация");
	Настройки.Включить("Оптимизация");
	Настройки.Включить("TurboBL");

	Настройки.Включить("ПерехватитьСобытияГК");
	Перехватчик = СоздатьОбъект("Перехватчик");
	ПерехватчикСобытийГМ = СоздатьОбъект("ПерехватСобытий");
	Перехватчик.ПерехватитьСобытияГлобальногоМодуля(ПерехватчикСобытийГМ);
	ПерехватчикСобытийГМ.ПерехватитьПроведение();
	ЗагрузитьВнешнююКомпоненту("formex.dll"); 



сам класс во вложении с примером установки времени на 6 утра.
  

________________002.rar ( 7 KB | Загрузки )
Наверх
 
IP записан
 
Александр84
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 30. Сентября 2011
Re: Перехвадчик событий, помогите разобраться!
Ответ #11 - 18. Января 2012 :: 10:23
Печать  
Ругается на глобальник
ПерехватчикСобытийГМ = СоздатьОбъект("ПерехватСобытий");
{Глобальный модуль(5523)}: Неудачная попытка создания объекта (ПерехватСобытий)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехвадчик событий, помогите разобраться!
Ответ #12 - 18. Января 2012 :: 10:28
Печать  
едрена батона..
создаешь каталог в ИБ, обзываешь его Классы, к примеру, в неём еще один каталог, обзываешь его ПерехватСобытий, в этот каталог кидаешь файлы из архива, далее в корне ИБ создаешь текстовый файлик - описалово классов с содержанием:
//#include Классы\ПерехватСобытий\Defcls.prm

имя этому файлу задаешь как Defcls.prm

перезапускаешь 1с - наслаждаешься.



  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Перехвадчик событий, помогите разобраться!
Ответ #13 - 18. Января 2012 :: 10:36
Печать  
На всякий, почитай про реализацию ООП в 1с и про формат файла  определение КОП в частности:
http://www.1cpp.ru/docum/icpp/html/classes.html#id33
  
Наверх
 
IP записан
 
Александр84
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 17
Зарегистрирован: 30. Сентября 2011
Re: Перехвадчик событий, помогите разобраться!
Ответ #14 - 18. Января 2012 :: 10:39
Печать  
Получилось, только при интерактивном вводе документа, если делать создание документа обработкой (Док.Новый();Док.Записать()) то не срабатывает
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать