Цитата:
Сообщение от De_mon
Цитата:
Сообщение от BlackAvatar
Добрый день! Как наиболее просто перенести базу материалов с 10й версии на более раннюю, например 9ку?
|
Экспорт номенклатуры в DBF и загрузки в новую базу с сопоставлением полей.
|
Для случай когда образ БД невозможно вернуть к более ранней версии какими либо другими способами, есть такое решение:
скрипт
Код HTML:
var FSO = NewCOMObject('Scripting.FileSystemObject'),
FDBServ = 'localhost',
FBSPort = 14357,
FBCFile = FSO.GetParentFolderName(Action.Control.Owner.Owner.Owner.ExeName) + '\\' + 'fbclient.dll',
FDBFile = new Object(),
NewFile = new String(),
ConnectionString = new String(),
Path = system.askFileName('FDB');
if (FSO.FileExists(Path)) {
try {
FDBFile = FSO.GetFile(Path);
system.sleep(200);
NewFile = FSO.GetParentFolderName(FDBFile.Path) + '\\' + FSO.GetBaseName(FDBFile.Name) + '_V9.FDB';
FDBFile.Copy(NewFile);
system.log('Новый файл БД: ' + NewFile);
system.sleep(200);
ConnectionString = 'Driver={Firebird/InterBase(r) driver};' +
'Dbname=' + FDBServ + '/' + FBSPort + ':' + NewFile + ';' +
'CHARSET=NONE;' +
'PWD=masterkey;' +
'UID=SYSDBA;' +
'Client=' + FBCFile + ';';
system.log('Строка соединения: ' + ConnectionString);
var Connection = NewCOMObject('ADODB.Connection'),
Recordset = NewCOMObject('ADODB.Recordset'),
Query = 'Select\n' +
' PARAM_BASE.PARAM, ' +
' PARAM_BASE.VALUE_P\n' +
'From\n' +
' PARAM_BASE';
try {
Connection.Open(ConnectionString);
Recordset.ActiveConnection = Connection;
Recordset.CursorType = 3;
Recordset.LockType = 3;
Recordset.Open(Query);
Recordset.MoveFirst();
while (Recordset.EOF == 0) {
if (Recordset.Fields.Item('PARAM').Value == 'VERSION') {
system.log('Текущее значение: ' + Recordset.Fields.Item('VALUE_P').Value);
Recordset.Fields.Item('VALUE_P').Value = 10; //4 - БМ v.8; 10 - БМ v.9; 14 - БМ v.10
system.log('Новое значение: ' + Recordset.Fields.Item('VALUE_P').Value);
Recordset.Update();
};
Recordset.MoveNext();
};
} catch (Error) {
Recordset.Close();
Connection.Close();
alert(decodeURIComponent(escape(Error.message)));
Action.Cancel();
};
Recordset.Close();
Connection.Close();
system.log('Работа скрипта завершена.');
alert('Файл БД скопирован и преобразован.');
} catch (Error) {
alert('Копировать файл БД неудалось, возможно файл занят.\n' +
decodeURIComponent(escape(Error.message)));
Action.Cancel();
};
};
[свернуть]
Работает в 9-й версии, позволяет выбрать образ БД, скопировать его и откатить эту копию до 9-й версии (переписывает параметр содержащий значение по которому БазисМебельщик определяет версию подключаемой БД, возможно это не все, что необходимо сделать с образом, но работает). Для работы скрипта необходим установленный
ODBC драйвер FireBird.