-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgetPathDBFrontol5.js
73 lines (66 loc) · 2.76 KB
/
getPathDBFrontol5.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
// Путь к базе данных Frontol5
// аргумент функции cPathVariant - строковой литерал со значением:
// * OnlyPath - по умолчанию - функция возвращает только путь к БД (E:\BASE\POSBASE\FT_5_TRADE\)
// * HostAndPath - функция возвращает хост и путь к БД (localhost:E:\BASE\POSBASE\FT_5_TRADE\)
// возвращает строку, содержащую путь к БД Frontol или пустую строку, в случае ошибки
function GetPathDBFrontol5(cPathVariant) {
var cFrontolIniFileName = "Frontol.ini";
var cFrontolIniFile = "";
var cPathDB = "";
var cString = "";
var FOR_READING = 1;
var TRISTATE_UNICODE = -1; // Использовать для Windows-7
// var TRISTATE_ASCII = 0; // Использовать для Windows-XP
if (cPathVariant==undefined || cPathVariant!="HostAndPath") {
cPathVariant = 'OnlyPath';
}
var oFileSystem = new ActiveXObject("Scripting.FileSystemObject");
// файл FronTol.ini может находиться или ProgramFiles или ProgramData
// поиск папки \ProgramData\ATOL\Frontol5 на системном диске
var Folderspec = 0; // каталог Windows
var cSystemDrive = oFileSystem.GetSpecialFolder(Folderspec).Path.match(/\D:/i);
if (cSystemDrive===null) {
cSystemDrive = "C:";
}
var cPathProgramData = "\\ProgramData\\ATOL\\Frontol5\\Settings";
if (oFileSystem.FolderExists(cSystemDrive+cPathProgramData)) {
cFrontolIniFile = cSystemDrive + cPathProgramData + "\\" + cFrontolIniFileName;
}else{
cFrontolIniFile = oFileSystem.GetAbsolutePathName("") + "\\" + cFrontolIniFileName;
}
try {
var TextStream = oFileSystem.OpenTextFile(cFrontolIniFile, FOR_READING, false, TRISTATE_UNICODE);
while (!TextStream.AtEndOfStream) {
cString = TextStream.ReadLine();
if (/path=/i.test(cString)) {
if (cPathVariant=="HostAndPath") {
cPathDB = cString.substr(5, cString.length);
}else{
cPathDB = cString.substr(5, cString.length).replace(/[\w\.]{2,}:/i,"");
}
break;
}
}
TextStream.Close();
}
catch (error) {
if (error.message == "") {
throw error; // генерация ошибки
} else {
switch (error.number) {
case -2146828218:
frontol.actions.showError("Нет доступа для чтения файла " + cFrontolIniFile);
break;
case -2146828235:
frontol.actions.showError("Файл " + cFrontolIniFile + " не найден.");
break;
default:
frontol.actions.showError("Неизвестная ошибка : " + error.number + " " + error.message + " при работе с файлом " + cFrontolIniFile);
}
}
}
finally {
TextStream.Close();
}
return cPathDB;
}