Хочу запускать собственный интерфейс при старте Галактики(по принципу: Загрузилась Галактика , отработал интерфейс, Галактика продолжает работать). Судя по найденным на форуме сообщениям:
Есть така хитрая штука в Галке 1.Открываешь galnet.cfg 2. Смотришь, есть ли у тебя в нем секция Compilers 3. Если есть, добавляешь в ней параметр RunIdent = ИМЯ_ИНТЕРФЕЙСА, если нет, то создаешь эту секцию и опять же прописываешь RunIdent = ИМЯ_ИНТЕРФЕЙСА 4. В результате после старта галки первым ...
и
попробуйте параметр RunIdent кажется
Назначение : Имя интерфейса для запуска (напр. VASIA)
Вид параметра : Строковый (значения - строки, можно в любых кавычках)
Примечание : Записывается в файл конфигурации пользователя.
Синоним : /RI _ ключ (пример /RI=строка или /RI:строка)
все очень просто, но у меня интерфейс автоматически не запускается(Работоспособность интерфейса проверена). Может кто знает какие-нибудь особенности использования этого параметра.
Последний раз редактировалось congos 08 июл 2010, 01:08, всего редактировалось 1 раз.
Сделайте подписку на точку расширения epAppInit. И там попробуйте вызвать свой интерфейс
Выдержки из документации.
extensionPoint epAppInit;
Вызывается после загрузки приложения непосредственно перед стартом. Можно предотвратить запуск приложения, если из обработчика вернуть false.
extensionPoint epBeforeEnterModule (aContour: string; aModule: string);
Уведомляет о начале входа в модуль.
Параметры:
aContour - имя контура.
aModule - имя модуля.
Подписка обработчика на точку расширения
В обработчике точки расширения допускается любой код кроме доступа к БД. Это ограничение вызвано тем, что механизм точек расширения использован при реализации триггеров. Поэтому обработка точки расширения должна выполняться как можно быстрее. Если в точке расширения все-таки необходимо работать с БД, то этот код следует вынести из обработчика. Т.е. необходимо написать интерфейс, реализующий необходимую обработку, и вызвать его из обработчика точки расширения.
Подписка на точку расширения производится по следующиму синтаксису:
#include epSystem.vih
handler with replace NIOKR_InitApp on ExtensionPoint epAppInit
Action
{
Result := TRUE;
dSetTune('OPER.DATECLOSEPERIOD', date(01,01,2013));
}
Что дописать в этом коде и как вызвать его из nowrun?
Где взять (не смогла найти у себя) epSystem.vih
"В обработчике точки расширения допускается любой код кроме доступа к БД." (с)
Наверное, непосредственно нельзя делать dsettune в прямо в точке расширения. Нужно через интерфейс это реализовать и дергать метод этого интерфейса с нужной Вам обработкой. NowRun для точки расширения вообще не нужен.
epSystem.vih - из поставки Атлантиса вроде как. Попросите в техподдержке - не должны отказать в такой мелочи...
#ifndef _EPSYSTEM_
#define _EPSYSTEM_
#Component ""
ExtensionPoint epAppInit // #docl Точка расширения. </brief> Инициализация приложения.
;
ExtensionPoint epAppQueryDone // #docl Точка расширения. </brief> Завершение запроса.
;
ExtensionPoint epAppDone // #docl Точка расширения. </brief> Завершение приложения.
;
ExtensionPoint epBeforeCaptureLic // #docl Точка расширения. </brief> Признак начала захвата лицензии.
(aModule // #docl Имя модуля. </brief>
: string);
ExtensionPoint epBeforeReleaseLic // #docl Точка расширения. </brief> Признак начала освобождения захвченной лицензии.
(aModule // #docl Имя модуля. </brief>
: string);
ExtensionPoint epAfterCaptureLic // #docl Точка расширения. </brief> Признак завершения захвата лицензии.
(aModule // #docl Имя модуля. </brief>
: string);
ExtensionPoint epAfterReleaseLic // #docl Точка расширения. </brief> Признак завершения освобождения захвченной лицензии.
(aModule // #docl Имя модуля. </brief>
: string);
ExtensionPoint epBeforeEnterModule // #docl Точка расширения. </brief> Признак начала входа в модуль.
(aContour // #docl Имя контура. </brief>
: string; aModule // #docl Имя модуля. </brief>
: string);
ExtensionPoint epBeforeExitModule // #docl Точка расширения. </brief> Признак начала выхода из модуля.
(aContour // #docl Имя контура. </brief>
: string; aModule // #docl Имя модуля. </brief>
: string);
ExtensionPoint epAfterEnterModule // #docl Точка расширения. </brief> Признак завершения входа в модуль.
(aContour // #docl Имя контура. </brief>
: string; aModule // #docl Имя модуля. </brief>
: string);
ExtensionPoint epBeforeInterfaceClose // #docl Точка расширения. </brief> Признак начала закрытия интерфейса.
(aClientSelf // #docl "Self" для клиента. </brief>
: LongInt);
ExtensionPoint epBeforeSetBranches // #docl Точка расширения. </brief> Признак начала входа в функцию SetBranches.
;
ExtensionPoint epAfterSetBranches // #docl Точка расширения. </brief> Признак окончания работы функции SetBranches.
;
#endif
. Вообще то он есть в viper. Удобней для регулярных операций всего все таки nowrun. Падение галактики бывают - я стал выходить из этого вставкой таймера с 5 секудной задержкой закрытия интерфейса - падения сократились в десятки раз, далее уже виноват внутренний функционал галактики - типа расчета сальдо.
Во-первых, при компиляции ругается "В таблице Test нет полей. Это очень ПЛОХО, ребята".
Во-вторых, если добавляю поля, то интерфейс открывается, но настройка не меняется.
Для фейса без полей нужно какой то атрибут указывать. А чтобы посмотреть обновление настройки фейс с ними нужно закрыть. Вставите мессагу -сразу увидите
Вы бы все подробно расписали..как компиляете файл(строчник,випер, комплятор интерфейсов..)..какой компилятор версии..настройки cfg можно тоже.
Потому как Ваш пример собирается без проблем.