После нескольких дней попыток и, в итоге, обхода проблем, всё нижесказанное
не претендует на баг, но неприятно, поэтому всё-таки доведу до сведения...
Тестирование проводилось на 1срр 3.0.1.12 (и частично на 2.5.0.6 от 01.08.08), 1С 27-й релиз, ХРпроф СП2.
Некоторые наблюдения, по-поводу Перехватчика:
1. Реализацию класса-перехватчика ГМ нужно описывать только в текстовом файлеиз минусов - синтаксический контроль, из плюсов, ниже:
а) если описать в модуле обработки (внешней или в конфе – не важно), то при включенном режиме «Отладки» из 1С выйти можно только через диспетчер задач. Это относится только к классу-перехватчику ГМ, в перехватчиках ГК всё в порядке где-то с 05.06.08
http://www.1cpp.ru/forum/YaBB.pl?num=1212479640/15.
б) вариант, если предусмотреть выполнять метод СнятьПерехватСобытийГлобальногоМодуля() перед закрытием 1С, но тогда это не режим отладки…
в) выполнять этот метод ПриЗавершенииРаботыСистемы() или СобытиеГМ_ПриЗавершенииРаботыСистемы() – в режиме Отладка до него не доходит выполнение.
г) перед созданием класса-перехватчика или в реализации класса, перед установкой перехвата, с помощью класса «УправлениеНастройками» переводить в режим «Оптимизация» - ничего не дает. Наверное, необходимо некоторое время для перевода системы в новый режим – не уточнял, но не работает сразу (можно попробовать в прилагаемой конфе)
2.
Если класс-перехватчик устанавливает перехват на себя, то в СобытиеГМ_ВводНового(Конт) нужно описывать один входной параметр, а не два, как в описании, и не три, как хотелось бы. Но тогда теряется смысл этого события – можно использовать СобытиеГМ_ПриОткрытии(Конт).
а) использование двух параметров, даже как описано в доке – вылет 1С
б) метод из документации - тоже не работает, но в прилагаемой конфе я не сделал пример.
в) вариант,
как можно использовать все три параметра в СобытиеГМ_ВводНового (см. Тест 1), но бесит использование класса-пустышки. Но работает! Посмотришь, Артур, может можно что-то малой кровью придумать, чтобы без «пустышки» работать.
3. В классе-перехватчике ГМ нельзя описывать Деструктор(), даже ничего не выполняющий – уже после выхода из 1С, выскакивает ошибка (хотя, он совсем не нужен).
Единственная необходимость, если в процессе работы программы менять перехватчики ГМ, но логики в этом - никакой.4. Зачем нужен метод ВыполнитьСобытиеГлобальногоМодуля(), если нельзя два класса-перехватчика ГМ использовать? Единственное, что пришло в голову, это вызывать процедуры/функции ГМ и КОП, без проверки: есть они или нет.
5. Не относящееся к Перехватчику:
если в модуле обработки хранить код нескольких классов, то, при создании экземпляра одного из классов, включается синтаксический контроль 1С. Т.е. если у двух классов есть одинаковые методы или во втором классе описываем переменные, то сыпятся ошибки, и класс не создается. С внешним текстовым файлом такой проблемы нет.
Зараннее, спасибо.