v7: Как отловить интерактивный ввод нового документа в журнале #701635


#0 by Duke1C
Чёй то в СП подходящих процедур не нашел, погуглив нарыл - , там Альф в конце темы привел ссылку с ответом, но она нерабочая :( Релиз платформы 27. 1C++, Formex заюзаны. Или тока через перехват событий ГК?
#1 by Ёпрст
Перехват..это не наш метод. Всё делается штатно.
#2 by Ёпрст
Ибо при перехвате, тебе придётся отлавливать события из контекстного меню, панели инструментов и меню из "Действия", помимо отлова нажатия Ins
#3 by Duke1C
Ёпрст, я тебя как мегаспеца оченно уважаю, поэтому давай сократим затягивание интриги :)
#4 by Ёпрст
Хотя, разве что, если не охота править конфу, то Класс.Перехватчик в помощь  и там событие
#5 by Duke1C
Про разные способы интерактивного ввода я в курсе
#6 by Duke1C
у меня свой самописный журнал, а задача примерно такая же как в ссылке в сабже
#7 by Ёпрст
+4 Событие_ВводНового или СобытиеГМ_СозданиеКонтекста
#8 by Ёпрст
короче, если штатно, то журнал общий, используется фича вот эта + служебный док + СтатусВозврата + открытие любой формы нового документа какой хочешь..
#9 by Ёпрст
Ну, или прямой правкой компаунда сделать то, что на синьоре написано.. Там просто ид документа в журнале остается (не очищается)..
#10 by Ёпрст
Хотя, мне проще через Перехватчик усё слепить, быстрее и конфа не изменяется.
#11 by Duke1C
(8,9) Понятно, лучше уж тады через Перехватчик, я думал может есть чё-нить штатно, типа как в форме списка справочника ПриВводеСтроки
#12 by Ёпрст
в вполне себе штатно.. раньше mszus эту фичу за 5 $ продавал..
#13 by Duke1C
Млин, чёт не перехватывается событие_ВводНового :(((
#14 by Duke1C
Хотя класс Перехватчик у меня используется, и события ПриОткрытии и ПриЗаписи ловятся нормально
#15 by Ёпрст
у тебя перехват реализован в одном классе или в 2-х ? Если че, это событие локального контекста.
#16 by varelchik
Не забудь еще про событие: ВводНаОсновании
#17 by Duke1C
В 2-х. Делал по твоему, образцу, выложенному на ИСе (Ctrl+Z для отмены действий в формах доков). Т.е. ПриНачалеРаботыСистемы: Настройки=СоздатьОбъект("УправлениеНастройками"); И уже в классе "ПерехватчикГК":
#18 by Duke1C
Упс, забыл. В классе "ПерехватчикГК" присутствует: КонецПроцедуры Может тут где собака порылась...
#19 by Ёпрст
На пример.. "всё в одном"
#20 by Duke1C
кстати, версия 1С++ 3.2.2.0, FormEx 2.0.5.107
#21 by Ёпрст
сам класс тут
#22 by Ёпрст
#23 by Duke1C
Спасибо, чуть попозжа попробую такой вариант, надо только будет все мои примочки перетащить А всё-таки чего ему в моём то варианте не хватает
#24 by Ёпрст
В твоём варианте - неверное создание перехватчика для локального контекста, нужно не в СобытиеГМ_ПриОткрытии создавать перехват, а в СобытиеГМ_СозданиеКонтекста(Конт) ибо ПриОткрытии возникает позже, чем вводНового..
#25 by Duke1C
Аааа, Семен Семеныч... Вот что значит делать по шаблону А что за функция/процедура такая "вирт" в твоём классе?
#26 by Ёпрст
позволяет получить контекст самого базового класса
#27 by Duke1C
Спасибо за помощь. Переписал все свои приблуды на твой вариант с одним классом. Все вроде работает. Теперь новый вопрос :) Как мне отменить этот ввод нового? Делаю так: Я, чессно говоря, думал что если не выполнять оригинальное событие, то будет что-то типа СтатусВозврата, ан нет форма нового документа все равно открывается
#28 by Duke1C
Хочу в итоге сделать следующее: Для избранных юзверей заполнять некоторые реквизиты нового документа предопределенными значениями и сделать их недоступными для редактирования
#29 by Duke1C
+28 либо вообще не давать вводить новый документ, типа: "какие вам накуй сандалики вы еще конечки не износили"
#30 by Ёпрст
Так сделай и привет
#31 by Duke1C
Упс, про возврат 0 не догадался Хотя у меня аналогично событие ПриОткрытии работает, т.е. если моя функция возвращает 0, то оригинальное событие не выполнялось и форма не открывалась
#32 by Duke1C
Кстати, переписав все на один класс, 1С-ина теперь постоянно требует переиндексацию, хотя завершаю работу корректно. Даже если просто запущу в режиме предприятия, и не совершая никаких действий, закрою её.
#33 by Mikeware
где-то ссылка на объект остается...
#34 by Duke1C
На какой объект? Перехватчик? И раньше не оставалась, а теперь вдруг начала... Хотя изменилось только подключение перехватчика (с 2-х классов на 1) А эта функция "Вирт" она какая-то предопределенная или в модуле перехватчика должна быть описана (типа как в функция "Сам")?
#35 by varelchik
Предопределенная. как и я
#36 by eshtrey
Решил изучить "Перехватчик", но что то не получается глобальный модуль: Почему не срабатывает СобытиеГМ_СозданиеКонтекста и функции Событие_....? пользовался и примером [Обучаловка] Преимущества класса «Перехватчик» внешней компоненты «1С++»
#37 by Duke1C
Ну, в принципе, я так и понял уже. Иначе бы в осадок выпало при компиляции. А все-таки по поводу , может при таком подключении перехватчика теперь "обнулить" че-нить надо в ПриЗавершенииРаботы например скачай и подключи как в , заодно скажешь будет ли у тебя такая трабла, как у меня в
#38 by eshtrey
все так и скачано и подключено было(просто почищено для изучения) ошибки как у тебя не вылетало
#39 by eshtrey
не подскажешь, где у меня ошибка?
#40 by Ёпрст
1cpp какой хоть версии ?
#41 by Ёпрст
у тебя нет нигде опрделения перехватчика для локального контекста, поэтому локальные события не работают
#42 by eshtrey
3.2.4.1
#43 by eshtrey
это не то?
#44 by eshtrey
почему у меня в СобытиеГМ_ПриОткрытии заходит а в СобытиеГМ_СозданиеКонтекста(Конт) нет?
#45 by eshtrey
проблема частично решилась Как было ЗагрузитьВнешнююКомпоненту("1cpp.dll"); регистрацию TurboMD сделал первой
#46 by eshtrey
теперь последовательность правильная СобытиеГМ_СозданиеКонтекста СобытиеГМ_ПриОткрытии Событие_ПриОткрытии Событие_ПриЗакрытии
#47 by Ёпрст
turbomd у теббя не той версии
#48 by Ёпрст
а так, 1cpp должна быть всегда первой.
#49 by Mikeware
Ёп, напомни, как продцепить классы и в МД, и внешние, плз... а то чойто я отупел...
#50 by eshtrey
1.0.1.1
#51 by Ёпрст
в мд обработку с идентификатором Defcls и унутри и пути к классам в мд. а в самом Defcls.prm, который в каталоге  .Classes ужо пути к классам наружним
#52 by Ёпрст
я и грю не верная, правильная 1.0.0.1 и валяется она тут..
#53 by Ёпрст
#54 by Mikeware
так и сделал. чой-то не видит внешние. наеборот вообще не получилось Спаибо, проверю сейчас первый способ еще раз
#55 by Ёпрст
не, всё видит..
#56 by Duke1C
Вобчем, ежели кому интересно, опосля продолжительных мытарств выяснилось, что 1С-ина валится в ПриЗавершенииРаботыСистемы на: ОткрытьФормуМодально("Обработка.ТорговоеОборудование", "Отключить"); где именно валится в этой обработке пока не выяснял, заремил эту строку все стало нормуль. Будем продолжать изыскания попозжа
#57 by Duke1C
Упс, оказывается Обработка.ТорговоеОборудование ни причем. Валится при открытии любого модального окна. :((( Епрст, что скажешь по сему поводу? проверь у себя тоже, плиз
#58 by Duke1C
Кстати, а разве турбомд не включена в состав 1С++?
#59 by Duke1C
Апну, ибо проблема актуальна
#60 by Mikeware
какая проблема-то нынче?
#61 by Duke1C
см , ,
#62 by Ёпрст
в зависимости от версии формекса, не срабатывает предопределенное событие ПослеОткрытия в модальных формах , нужно искать формекс подревнее.. в состав 1cpp включена turboBL, turboMD - это для динамического обновления форм и модулей..
#63 by Duke1C
А у тебя с какой работает? :)
#64 by Ёпрст
последний.. я избавился от события ПослеОткрытия.. переписав его на ПослеСозданияФормы
#65 by Duke1C
Кстати, а в "Обработка.ТорговоеОборудование" нет там ничего "криминального" такого (типа ПослеОткрытия и пр. прибамбасов), тупо штатная, и все равно на ней падает
#66 by Duke1C
+ падает вообще при открытии любого отчета или обработки
#67 by Mikeware
Значит, ссылка на контекст уже несуществующей формы где-то остается...
#68 by Duke1C
Млин, и как её искать? Тем более, пробую сразу после запуска 1С-ины в режиме предприятия открыть какую-либо обработку или отчет и привет. Журналы, справочники, документы открываются нормально и перехватчик свои действия отрабатывает. Пробовал даже закомментить функцию Событие_ПриОткрытии в перехватчике, всё равно вылет
#69 by Duke1C
Чуть позже попробую переписать обратно на 2 класса, с учетом
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям