Страница 1 из 2
Автоматический старт интерфейса вместе с Галактикой
Добавлено: 06 июл 2010, 17:56
congos
Хочу запускать собственный интерфейс при старте Галактики(по принципу: Загрузилась Галактика , отработал интерфейс, Галактика продолжает работать). Судя по найденным на форуме сообщениям:
Есть така хитрая штука в Галке 1.Открываешь galnet.cfg 2. Смотришь, есть ли у тебя в нем секция Compilers 3. Если есть, добавляешь в ней параметр RunIdent = ИМЯ_ИНТЕРФЕЙСА, если нет, то создаешь эту секцию и опять же прописываешь RunIdent = ИМЯ_ИНТЕРФЕЙСА 4. В результате после старта галки первым ...
и
попробуйте параметр RunIdent кажется
Назначение : Имя интерфейса для запуска (напр. VASIA)
Вид параметра : Строковый (значения - строки, можно в любых кавычках)
Примечание : Записывается в файл конфигурации пользователя.
Синоним : /RI _ ключ (пример /RI=строка или /RI:строка)
все очень просто, но у меня интерфейс автоматически не запускается(Работоспособность интерфейса проверена). Может кто знает какие-нибудь особенности использования этого параметра.
Re: Как работает параметр RunIdent.
Добавлено: 06 июл 2010, 18:52
edward_K
/Galaxy.Nowrun почему не рассматриваете? Галактика должна остаться после выполнения фейса?
Re: Как работает параметр RunIdent.
Добавлено: 07 июл 2010, 11:28
congos
Галактика должна остаться, поэтому nowrun не подходит, кстати nowrun этот фэйс замечательно запускает, но и галку валит четко.
Re: Автоматический старт интерфейса вместе с Галактикой
Добавлено: 09 июл 2010, 12:44
LaaLaa
Сделайте подписку на точку расширения epAppInit. И там попробуйте вызвать свой интерфейс
Выдержки из документации.
extensionPoint epAppInit;
Вызывается после загрузки приложения непосредственно перед стартом. Можно предотвратить запуск приложения, если из обработчика вернуть false.
extensionPoint epBeforeEnterModule (aContour: string; aModule: string);
Уведомляет о начале входа в модуль.
Параметры:
aContour - имя контура.
aModule - имя модуля.
Подписка обработчика на точку расширения
В обработчике точки расширения допускается любой код кроме доступа к БД. Это ограничение вызвано тем, что механизм точек расширения использован при реализации триггеров. Поэтому обработка точки расширения должна выполняться как можно быстрее. Если в точке расширения все-таки необходимо работать с БД, то этот код следует вынести из обработчика. Т.е. необходимо написать интерфейс, реализующий необходимую обработку, и вызвать его из обработчика точки расширения.
Подписка на точку расширения производится по следующиму синтаксису:
handler [ with replace ] <имя_обработчика> on extensionPoint <имя_точки_расширения>
[ (<список_параметров>) ] [ [ <приоритет> ] ]
[ action { <Action_код_на_языке_VIP> } ] [ rollback { <Rollback_код_на_языке_VIP> } ]
<имя_обработчика> - любой допустимый идентификатор Атлантиса.
Re: Автоматический старт интерфейса вместе с Галактикой
Добавлено: 09 июл 2013, 09:46
solkalin
Подскажите пожалуйста!
Нужно планировщиком запускать интерфейс, который закрывал бы период в складском учете.
Нашла на форуме код:
Код: Выделить всё
#include epSystem.vih
handler with replace NIOKR_InitApp on ExtensionPoint epAppInit
Action
{
Result := TRUE;
dSetTune('OPER.DATECLOSEPERIOD', date(01,01,2013));
}
Что дописать в этом коде и как вызвать его из nowrun?
Где взять (не смогла найти у себя) epSystem.vih
Re: Автоматический старт интерфейса вместе с Галактикой
Добавлено: 09 июл 2013, 10:51
RAJAH
solkalin писал(а):как вызвать его из nowrun?
В nowrun надо указать имя интерфейса, в котором содержится ваш код.
solkalin писал(а):Нужно планировщиком запускать интерфейс
Есть вариант с AQA-тестами - мы так по ночам запускаем.
solkalin писал(а):epSystem.vih
Тоже не нашёл.
Re: Автоматический старт интерфейса вместе с Галактикой
Добавлено: 09 июл 2013, 10:58
Den
solkalin писал(а):Подскажите пожалуйста!
Нужно планировщиком запускать интерфейс, который закрывал бы период в складском учете.
Нашла на форуме код:
Код: Выделить всё
#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 - из поставки Атлантиса вроде как. Попросите в техподдержке - не должны отказать в такой мелочи...
Re: Автоматический старт интерфейса вместе с Галактикой
Добавлено: 09 июл 2013, 11:44
edward_K
Код: Выделить всё
#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 секудной задержкой закрытия интерфейса - падения сократились в десятки раз, далее уже виноват внутренний функционал галактики - типа расчета сальдо.
Re: Автоматический старт интерфейса вместе с Галактикой
Добавлено: 09 июл 2013, 15:55
solkalin
Спасибо за ответы!!! Почитала, решила написать интерфейс.
Не получается : (
Код: Выделить всё
#ifdef ComponentVersion
#component "C_Tune"
#end
interface Test '';
HandleEvent
cmInit :
{
dSetTune('OPER.DATECLOSEPERIOD', date(01,01,2013));
};
end;
end.
в galnet.cfg добавила
Во-первых, при компиляции ругается "В таблице Test нет полей. Это очень ПЛОХО, ребята".
Во-вторых, если добавляю поля, то интерфейс открывается, но настройка не меняется.
Подскажите, что не так?
Re: Автоматический старт интерфейса вместе с Галактикой
Добавлено: 09 июл 2013, 16:31
RAJAH
Зачем эти компоненты? Попробовал (на другой настройке), работает.
Код: Выделить всё
interface Testyk '';
HandleEvent
cmInit :
{
dSetTune('OPER.DATECLOSEPERIOD', date(1,1,2013));
abort;
exit;
}
end;
end.
Re: Автоматический старт интерфейса вместе с Галактикой
Добавлено: 09 июл 2013, 16:53
edward_K
Для фейса без полей нужно какой то атрибут указывать. А чтобы посмотреть обновление настройки фейс с ними нужно закрыть. Вставите мессагу -сразу увидите
Re: Автоматический старт интерфейса вместе с Галактикой
Добавлено: 09 июл 2013, 16:54
solkalin
RAJAH, а у Вас не ругается, что полей нет?
Re: Автоматический старт интерфейса вместе с Галактикой
Добавлено: 09 июл 2013, 17:26
RAJAH
solkalin писал(а):RAJAH, а у Вас не ругается, что полей нет?
Нет, я убрал указания компонентов. В настройке сменилась дата.
Re: Автоматический старт интерфейса вместе с Галактикой
Добавлено: 10 июл 2013, 14:04
solkalin
edward_K, можно рабочий код у вас попросить?
Добавляла интерфейсу атрибуты, он все равно при компиляции ругается, что полей нет.
сейчас с полями рабочий код вот такой
Код: Выделить всё
interface Test '' escclose, DoAccept;
Create View vwMain1
var vopr1 : string;
;
Screen Scr2 'Вопросы';
fields
vopr1 ;
buttons
cmValue1, default ;
<<
.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
<. Ок .>
>>
end;
handleEvent
cmValue1 :
{
dSetTune('tekmonth', date(01,01,2013));
message(dGetTune('tekmonth'));
closeInterface( cmCancel ) ;
Abort; Exit;
};
end;
end.
Помогите переделать!
Re: Автоматический старт интерфейса вместе с Галактикой
Добавлено: 10 июл 2013, 15:39
Den
Вы бы все подробно расписали..как компиляете файл(строчник,випер, комплятор интерфейсов..)..какой компилятор версии..настройки cfg можно тоже.
Потому как Ваш пример собирается без проблем.