Страница 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 добавила

Код: Выделить всё

[galaxy]
nowRun=C_Tune::Test
Во-первых, при компиляции ругается "В таблице 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 можно тоже.
Потому как Ваш пример собирается без проблем.