Как определить тип и имя текущего сервера Navision
Данная статья — вольный перевод «How To» Люка Ван Дика.
Еще один способ определения имени сервера описан в моей статье «Работа с MS SQL Server из Navision»
Начиная с Navision Attain 3.01, в C/AL доступна функция CONTEXTURL. Она возвращает строку, т.н. context string, определяющую текущее нахождение пользователя в системе — ну то есть какой объект запущен в данный момент, какие фильтры стоят на форме, какая запись открыта и т.д. Очень полезная вещь — позволяет делать ссылки на объекты.
Например:
navision://client/run?servername=server&company=companyname&servertype=MSSQL
При подключении к серверу, в числе прочего эта строка содержит тип сервера — NAVISION или MSSQL — и имя сервера.
Функция fctGetServerName возвращает имя сервера, а при подключении к локальной базе — пустую строку.
Функция fctGetServerType всегда возвращает либо ‘NAVISION’, либо ‘MSSQL’.
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('');
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.