Форум профессиональных мебельщиков PROMEBELclub

Форум профессиональных мебельщиков PROMEBELclub (https://промебельклуб.рф/forum/index.php)
-   Базис-мебельщик 10 (https://промебельклуб.рф/forum/forumdisplay.php?f=269)
-   -   Базис-Мебельщик 10 (https://промебельклуб.рф/forum/showthread.php?t=12457)

De_mon 17.09.2017 14:21

Цитата:

Сообщение от BlackAvatar (Сообщение 432933)
Добрый день! Как наиболее просто перенести базу материалов с 10й версии на более раннюю, например 9ку?

Экспорт номенклатуры в DBF и загрузки в новую базу с сопоставлением полей.

Igor_482 18.09.2017 12:57

Цитата:

Сообщение от De_mon (Сообщение 433154)
Цитата:

Сообщение от BlackAvatar (Сообщение 432933)
Добрый день! Как наиболее просто перенести базу материалов с 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.

AlexBolton 18.09.2017 13:08

Цитата:

Сообщение от Igor_482 (Сообщение 433273)
есть такое решение:

*THUMBS UP*
а я по старинке ручками ibexpert`om правлю.

Igor_482 18.09.2017 13:26

Цитата:

Сообщение от AlexBolton (Сообщение 433275)
по старинке ручками ibexpert`om

))) Тогда разберем еще один страшный случай - утерянный пароль админа:

скрипт


Код 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();
        Query      = 'Select\n' +
                    '  USERS_BASE.ID_UB, ' +
                    '  USERS_BASE.NAME_USER, ' +
                    '  USERS_BASE.PASS\n' +
                    'From\n' +
                    '  USERS_BASE';
    try {
      Recordset.Open(Query);
      Recordset.MoveFirst();
      while (Recordset.EOF == 0) {
        if (Recordset.Fields.Item('ID_UB').Value != 1) {
          system.log('Пользователь базы: "' + Recordset.Fields.Item('NAME_USER').Value + '" - удален.');
          Recordset.Delete();
          Recordset.Update();
        } else {
          system.log('Пароль пользователя: "' + Recordset.Fields.Item('NAME_USER').Value + '" - удален.');
          Recordset.Fields.Item('PASS').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Ярдов 18.09.2017 16:05

Про чертежи
 
Такая ситуация, когда проектирую изделие, то большую часть деталей объединяю в блоки. Для чего? Ну например, есть боковина мебельной консоли, ее толщина 40 мм, она состоит из обклада с пазами (дубовый брусок) в обклад вклеены панели из шпонированного мдф, внутри присутствуют закладные. Получается одна панель состоит из 10-12 деталей. Если ни во что не объединяю, то на выходе получаю сумасшедший веер на сборочном чертеже, с которым невозможно работать. А хочу, чтобы на сборочном чертеже было изделие, которое состоит из отдельных частей (блоков), на каждый из которых есть свой сборочный чертеж и чертежи деталей в него входящих. Вот собственно как мне добиться такого результата?

Uncle 18.09.2017 16:14

Цитата:

Сообщение от 9Ярдов (Сообщение 433289)
А хочу, чтобы на сборочном чертеже было изделие, которое состоит из отдельных частей (блоков), на каждый из которых есть свой сборочный чертеж и чертежи деталей в него входящих

Каждый блок сохраняйте в модель. Из моделей составляйте проект и создавайте чертежи именно проекта, установив галочку "Создавать сборочный чертёж". Лучше с сохранением в библиотеку

http://f6.s.qip.ru/Tn5eg8Pw.png

На модель, которая состоит из блоков, тоже создаете чертежи и сохраняете в ту же библиотеку. У Вас в результате будет одна библиотека, состоящая из отдельных блоков модели и самой модели..

Dima1313 18.09.2017 16:44

Цитата:

Сообщение от 9Ярдов (Сообщение 433289)
Такая ситуация, когда проектирую изделие, то большую часть деталей объединяю в блоки. Для чего? Ну например, есть боковина мебельной консоли, ее толщина 40 мм, она состоит из обклада с пазами (дубовый брусок) в обклад вклеены панели из шпонированного мдф, внутри присутствуют закладные. Получается одна панель состоит из 10-12 деталей. Если ни во что не объединяю, то на выходе получаю сумасшедший веер на сборочном чертеже, с которым невозможно работать. А хочу, чтобы на сборочном чертеже было изделие, которое состоит из отдельных частей (блоков), на каждый из которых есть свой сборочный чертеж и чертежи деталей в него входящих. Вот собственно как мне добиться такого результата?

я в таких случаях строю модель из панели толщ 40мм- наз-ся например склейка 40мм=16+8+16 и т.п. , и рядом потом строю эту же панель так как вы описали иногда если нужно по размерам больше - припуск на упил после склейки пакета. Далее делая схему сборки временно удаляю детали этой панели оставляя только ту что 40мм, ей ставится позиция Х, и на сборочном чертеже пишем "составляющие поз Х см. отдельный чертеж", отдельный чертеж сделать уже из тех деталей которые были временно удалены.

Batya452 19.09.2017 09:06

Добрый день! В выходные был сбой в Базе материалов (выяснили, что в результате хакерской атаки - просили перечислить Биткоины ит.д.) Базу восстановил, но у меня вопрос - как на будущее себя обезопасить, каждый день делать дубликат Базы, или как? Кто посоветует?

AlexBolton 19.09.2017 09:15

Цитата:

Сообщение от Batya452 (Сообщение 433324)
Кто посоветует?

1. Сменить людей, которые выяснили, что "в результате хакерской атаки" %) (скоро на текстовые файлы будут нападать.)
2. Любые важные текущие данные поставить в расписание любой удобной бэкап программы.

R0mchik 23.09.2017 18:46

Не делает симметрию на эластичные блоки, как только не игрался с этой галочкой включающую эту возможность при создании фрагмента.
Создаю фрагмент по фронтальной плоскости, эластичность по двум плоскостям, горизонтальную и вертикальную. На модель ставлю сначала на виде с лева, потом с права, панели просто переворачиваются на 180°. На одной лицевая кромка сзади, на другой спереди. Как добиться простой симметрии?


Текущее время: 16:37. Часовой пояс GMT +3.

Powered by vBulletin® Version 3.8.12 by vBS
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
© 2007-2023 PROMEBEL