Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Re: icpp 3.2.3.x (число прочтений - 4595 )
CaSH
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: icpp 3.2.3.x
03. Мая 2011 :: 07:02
Печать  
Если в 1С++ встроен FormEx как его подключить? А то я подкдлючаю 2 компоненты. Или лучше их подключать как 2 компоненты?
И еще подскажите как можно отловить Перехватчиком событие ПриИзмененииРазмераОкна который генерирует FormEx?
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: icpp 3.2.3.x
Ответ #1 - 03. Мая 2011 :: 08:13
Печать  
В 1с++, начиная с версии 2.5, FormEx не встроен.
Лучше подключать две компоненты.
  

1&&2&&3
Наверх
 
IP записан
 
CaSH
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: icpp 3.2.3.x
Ответ #2 - 08. Мая 2011 :: 09:44
Печать  
Спасибо. А подскажите, потребовалось отловить событие документа "ОбработкаПроведения" добавил в класс
Функция Событие_ОбработкаПроведения(Параметр) Экспорт
  Сообщить("поймал");
  Возврат 1;
КонецФункции
но ничего не поймал
в доках сказано что перехватчик позволяет "Перехват событий модулей форм и групповых контекстов" - т.е. к модулю документа это отношения не имеет? и отловить проведение документа невозможно что ли?
Помогите плиз!
  
Наверх
 
IP записан
 
CaSH
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: icpp 3.2.3.x
Ответ #3 - 08. Мая 2011 :: 11:05
Печать  
Также попробовал перехватить вот такие вот события
Функция ВводНового(ФлагКопирования, ОбъектКопирования) Экспорт
Сообщить "поймал";
Возврат 1;
КонецФункции

и опять ничего не поймал, что я не правильно делаю?
с глобальным модулем все работает при ловле функций c параметрами
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: icpp 3.2.3.x
Ответ #4 - 10. Мая 2011 :: 11:29
Печать  
CaSH писал(а) 08. Мая 2011 :: 11:05:
Также попробовал перехватить вот такие вот события
Функция ВводНового(ФлагКопирования, ОбъектКопирования) Экспорт
Сообщить "поймал";
Возврат 1;
КонецФункции

и опять ничего не поймал, что я не правильно делаю?
с глобальным модулем все работает при ловле функций c параметрами

Выложи свой класс-перехватчик и опиши как перехватываешь.Тогда можно будет сказать что не так. У меня все прекрасно работает, все предопределенные методы перехватываются.
  
Наверх
 
IP записан
 
CaSH
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: icpp 3.2.3.x
Ответ #5 - 11. Мая 2011 :: 16:49
Печать  
Вот вытащил все что относится к перехватчику:
1. В ГМ указываю:
Перем глПерехватчик Экспорт; // модуль Перехватчика событий

Процедура ПриНачалеРаботыСистемы()
     Класс_УправлениеНастройками = СоздатьОбъект("УправлениеНастройками");
     Класс_УправлениеНастройками.Установить("Оптимизация", 1);
     Класс_УправлениеНастройками.Установить("Проверка типов", 0);
     Класс_УправлениеНастройками.Установить("Отладка", 0);
     Класс_УправлениеНастройками.Установить("ПерехватитьСобытияГК", 1);
     Модуль_ПерехватСобытий = СоздатьОбъект("ПерехватСобытий");
     глПерехватчик = СоздатьОбъект("Перехватчик");
     глПерехватчик.ПерехватитьСобытияГлобальногоМодуля(Модуль_ПерехватСобытий);
     глПерехватчик.ПодключитьСобытие_ЗаписьСобытияЖурналаРегистрации();
КонецПроцедуры
     
2. в файле "defcls.prm" указываю в дополнение к другим модулям модуль перехватчика:
class ПерехватСобытий = classes\ПерехватСобытий.ert {}

3. в обработке "ПерехватСобытий.ert" указываю:
Перем КонтФормы;

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

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

4. Ну и конечно пытаюсь получить
Функция Событие_ОбработкаПроведения(Параметр) Экспорт
     Сообщить("-> Событие_ОбработкаПроведения()");
     Возврат 1;
КонецФункции

Функция Событие_ОбработкаУдаленияПроведения() Экспорт // это можно заменить перехватом СобытиеГМ_ПриУдаленииДокумента(), но ведь тоже должно перехватывать
     Сообщить("-> Событие_ОбработкаУдаленияПроведения()");
     Возврат 1;
КонецФункции

Функция Событие_ВводНового(ФлагКопирования, ОбъектКопирования) Экспорт
     Сообщить("-> Событие_ВводНового()");
     Возврат 1;
КонецФункции      // Событие_ПриВводеСтроки()

ничего из п.4 не отлавливает,а очень нужно, особенно ОбработкаПроведения(), но и с остальным бы хотелось прояснить
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: icpp 3.2.3.x
Ответ #6 - 12. Мая 2011 :: 05:43
Печать  
А хелп все-так пристальнее почитать?
ты юзаешь как события проведения, так и события группового контекста.
а подключаешь только перехват событий глобального модуля Печаль
  

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


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: icpp 3.2.3.x
Ответ #7 - 13. Мая 2011 :: 00:08
Печать  
Да, спасибо, что то увлексия практикой и забыл полистать теорию Печаль
я отловил Событие_ОбработкаПроведения() после следующей модификации:

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


вместо Событие_ВводНового() и Событие_ВводНаОсновании() используем специальные события глобального модуля СобытиеГМ_ВводНового() и СобытиеГМ_ВводНаОсновании()
Не стал пытаться отловить Событие_ОбработкаУдаленияПроведения() т.к. его вполне замещает СобытиеГМ_ПриОтменеПроведенияДокумента()
Если я где не прав, поправьте меня

Интересно а можно ли при помощи 1С++ решить давн мучающий меня проблемы:
1. в открытом документе сделать его непроведенным и опять провести (как в 1С 8)
2. можно ли при проведении одного документа организовать проведение другого документа, штатно - запрещает
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: icpp 3.2.3.x
Ответ #8 - 13. Мая 2011 :: 11:57
Печать  
CaSH писал(а) 13. Мая 2011 :: 00:08:
Процедура СобытиеГМ_ПриОткрытии(Конт, ФлагЧтенияНастройки) Экспорт
     Модуль_ПерехватСобытий = СоздатьОбъект("ПерехватСобытий");
     Модуль_ПерехватСобытий.Инициализация(Конт);
       глПерехватчик.ПерехватитьСобытияПроведенияДокумента(Конт.Вид(), Контекст); // делаем это только для Документов определяя по Контексту
КонецПроцедуры

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

CaSH писал(а) 13. Мая 2011 :: 00:08:
Интересно а можно ли при помощи 1С++ решить давн мучающий меня проблемы:
1. в открытом документе сделать его непроведенным и опять провести (как в 1С 8)
2. можно ли при проведении одного документа организовать проведение другого документа, штатно - запрещает

[/quote]
Оба этих вариант можно сделать и без 1С++, но с ограничениями.
1. используется схема с программным закрытием документа, снятия проведения и повторного открытия документа.
2. если нужно тупо - сначала основной. а сразу потом второй связанный док, то можно сделать через асинхронный вызов ВнешнегоСобытия в конце проведения модуля основного документа.
  

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


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: icpp 3.2.3.x
Ответ #9 - 13. Мая 2011 :: 14:09
Печать  
я так потом и сделал
           Модуль_ПерехватСобытий = СоздатьОбъект("ПерехватСобытий"); // Имя класса объявленного в файле "defcls.prm"
           // Для всех видов документов включим контроль проведения
           Для Счетчик=1 По Метаданные.Документ() Цикл
                 .Идентификатор, Модуль_ПерехватСобытий);
           КонецЦикла;

А где читать как организовать Асинхронный вызов события?
  
Наверх
 
IP записан
 
CaSH
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 43
Зарегистрирован: 02. Мая 2011
Re: icpp 3.2.3.x
Ответ #10 - 16. Мая 2011 :: 07:29
Печать  
А подскажите плиз, почкму если я перехватываю событие Событие_ПриВыбореСтроки() то даже если я делаю возврат 1 то все равно типовое событие 1С не отрабатывается, и документ в журнале не открывается, приходится либо делать одно из двух:
- ОткрытьФорму(КонтФормы.ТекущийДокумент)
- глПерехватчик.ВыполнитьОригинальноеСобытиеГК(КонтФормы, "ПриВыбореСтроки")
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать