Как определить тип и имя текущего сервера Navision

Данная статья — вольный перевод «How To» Люка Ван Дика.
Еще один способ определения имени сервера описан в моей статье «Работа с MS SQL Server из Navision»

Начиная с Navision Attain 3.01, в C/AL доступна функция CONTEXTURL. Она возвращает строку, т.н. context string, определяющую текущее нахождение пользователя в системе — ну то есть какой объект запущен в данный момент, какие фильтры стоят на форме, какая запись открыта и т.д. Очень полезная вещь — позволяет делать ссылки на объекты.

Например:

 navision://client/run?database=filename&company=companyname&servertype=NAVISION
 navision://client/run?servername=server&company=companyname&servertype=MSSQL

При подключении к серверу, в числе прочего эта строка содержит тип сервера — NAVISION или MSSQL — и имя сервера.
Функция fctGetServerName возвращает имя сервера, а при подключении к локальной базе — пустую строку.
Функция fctGetServerType всегда возвращает либо ‘NAVISION’, либо ‘MSSQL’.

fctGetServerName() : Text[30]
 ltxtTemp := CONTEXTURL;
 i := STRPOS(ltxtTemp,'servername=');
 IF i > 0 THEN BEGIN
   ltxtTemp := COPYSTR(ltxtTemp,i + 11,999);
   i := STRPOS(ltxtTemp,'&');
   EXIT(COPYSTR(ltxtTemp,1,i - 1));
 END ELSE
   EXIT('');
 fctGetServerType() : Text[30]
 ltxtTemp := CONTEXTURL;
 i := STRPOS(ltxtTemp,'servertype=');
 IF i > 0 THEN
   EXIT(COPYSTR(ltxtTemp,i + 11))
 ELSE
   EXIT('');

Автор:

В области Navision - с 2003 года. Профессиональные интересы: NAV, MS SQL, .NET, BPMN, IT-менеджмент. Предметная область: логистика, финансы, склады, 3PL.

Количество статей, опубликованных автором: 86.

Добавить комментарий