#0
by Igorexa1C
Здравствуйте! Начал разбираться с созданием внешних компонент в 1С, вопрос в том, чтобы выполнить процедуру языка 1С из внешней компоненты, так как это делается в Формексе. Мне нужно по наступлению события (нажатия клавиши, мыши) выполнить процедуру языка 1С. Спасибо
#2
by Rie
Экспортируемые подпрограммы Глобального модуля можно выполнять через EvalExpr и ExecuteBatch.
#3
by Igorexa1C
Но для этого надо запускать 1С как сервер автоматизации, я правильно понимаю? А мне нужно выполнить произвольную процедуру из модуля формы
#4
by orefkov
Тебе в IInitDone передают IDispatch. У него получи свойство AppDispatch. Это и есть 1С как сервер автоматизации. Тока есть беда с подсчетом ссылок, гугли "iinitdone appdispatch"
#5
by orefkov
Из модуля формы штатно через интерфейс ВК процедуру не вызовешь. Максимум, можешь через IAsyncEvent послать событие, а в форме обработать в ОбработкаВнешнегоСобытия
#6
by Igorexa1C
С оброботкой внешнего события пробовал, но оно меня не устроило ввиду небольшой скорости обработки. Во внешней компоненте я ставил хук на клавиатуру, а ловил в процедуре ОбработкаВнешнегоСобытия так вот задержка была примерно пол секунды, причем задержка именно в 1С, может быть можно увеличить скорость?
#8
by Torquader
1С обрабатывает события примерно раз в секунду (если включить перехватчик событий Windows, то это даже можно увидеть). Быстрее можно сделать "хитрость", то есть на форму положить кнопочку или т.п. и потом "Нажать" её программно. Чтобы можно было что-то вызывать из модуля формы - нужно передавать тому, кто вызывает, контекст этой формы. P.S. после экспериментов с "прямыми" вызовами функций получил эффект, когда "умная" семёрка пересчитала бухгалтерские итоги в момент проведения документа - после чего понял, что нарушать стандартный хот событий в 1С - ЗЛО! ОбработкаВнешнегоСобытия - она не вызывается в момент постановки события в очередь (которая, кстати, может содержать несколько событий), а вызывается, когда 1С готова к обработке события, и уже не выполняет никакой код, что даёт гарантию правильности выполнения, но создаёт задержку.
#9
by Igorexa1C
Понял. Спасибо за ответы. Но все же интересно как сделано в Формексе, там ведь работает нормально?
#10
by Rie
В FormEx и в 1C++ народ немного поковырялся во внутренностях 1С. здесь регулярно бывает, спроси у него, как он это делал. Или скачай исходники 1С++ и погляди, что там внутри.
#12
by Igorexa1C
Да уж, исходники 1С++ скачал, но найти там фрагмент, который отвечает за вызов процедур внутреннего языка я так и не смог :( может быть авторы Формекс и 1с++ обратят внимание на мою ветку и подскажут решение проблемы? Заранее огромное спасибо :)
#13
by orefkov
На Дельфи огорчительно. А так смотри CBLModule7::CallAsFunc, CBLModule7::CallAsProc и где они вызываются.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Вызов процедуры
- вызов методов 1с из внешней компоненты.
- Вызов процедур (функций) 1С из внешней компоненты
- Как из внешней обработки запустить процедуру другой внешней обработки?
- Вызов функций 1С из внешней компоненты
- Подключенеи внешней компоненты. Ошибка "Ошибка при подключении внешней компоненты"
- Вызов метода внешней компоненты по расписанию
- Подключение внешней компоненты из макета внешней обработки в толстом клиенте
В этой группе 1С
- Как передать Границу Включая в СКД?!..
- Запуск нескольких клиентов 1с 8.1 на одном сервере
- v8: 1с8.1 выгрузка в DBF нужен DBase IV
- Задвоение справочников при обмене УТ -> БП
- УТ Ведомость по расчетам с контрагентами
- v8: СКД: Вычисляемые поля, проблема
- Документ доверенность, не проставляется должность, что делать?
- Как выбрать различные типы регистраторов из регистра?
- 8.2 + postgreSQL. Не могу создать ИБ на сервере 1С
- Изменение ТА через файл 1SSYSTEM
- Не выбран счет дебета по начислению облагаемому ЕСН. Шаблон проводки "Не отражать в б
- АвтоВремяНачалоДня
- как запаковать xml файл в http пакет
- ЗУП Профессионал
- Как выгрузить регламентированный отчёт в формате xml ?
- Как в зависимости от значения реквизита в шапке менять тип значения в табличной части
- Куда делась "Библиотека стандартных подсистем"?
- Оплата ночных часов при работе в выходной день
- mail и одноклассники.ру
- Как средствами экселя из 1С скопировать диапазон ячеек в другое место