Форум профессиональных мебельщиков PROMEBELclub
 
PROMEBELclub - Форум для мебельщиков: конструкторов, дизайнеров, мастеров, технологов и всех, кто имеет отношение к производству и изготовлению мебели. Программы для конструирования и дизайна мебели. Мебельная литература и обучающие пособия.
 
 

Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты

Меню

Маркет


Ответ
 
Опции темы Опции просмотра
Старый 13.01.2014, 13:22  
БАЗИС 9 - Скрипты
 
Аватар для Igor_482
Igor_482
VIP
Регистрация: 03.09.2008
Сообщений: 174

Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Версия для печати Отправить по электронной почте
Igor_482 Igor_482 вне форума 13.01.2014, 13:22
Рейтинг: ()

ВНИМАНИЕ! Правила выкладывания скриптов.

1. Если в скрипте нет ссылок на фурнитуру, фрагменты и.т.д то достаточно его упаковать в архив и выложить.

2. Если в скрипте есть ссылки на фурнитуру, фрагменты и т.д. то архив должен содержать папку с самим скриптом и всеми файлами на которые есть ссылки в тексте скрипта.


Т.к. при запуске скрипта на другом компе возникает ошибка о не возможности открыть то или иной файл и скрипт до конца не отрабатывает свой текст. Не соблюдается "чистота проверки" работы скрипта.

__________________________________________________ _______________

Интересует информация по редактору скриптов в БМ8. Существует ли справочная документация и примеры использования скриптов в БМ8. Какие возможности дает данная функция? Владеющим информацией по данному вопросу просьба поделиться ею.

Для работы скриптов от Igor_482 необходим установленный ODBC драйвер FireBird, установленные и зарегистрированные в ОС модули FBDBDialog.dll, MSDATGRD.OCX, MSCOMCTL.OCX и MSSTDFMT.DLL (сообщение с описанием установки этих модулей в ОС, ссылка на модули и исходник "FBDBDialog.dll") а так же файл "ADODB.ini" с настройками соединения к БД в папке со скриптом.

ADODB.ini


[General]
FDBServ = t001
FBSPort = 14357
FDBFile = D:\DBBM\Библиотека\БД\BMDB09.FDB
FBCFile = C:\Windows\System32\fbclient.dll
----------------------------------------------
Переменные .ini:
FDBServ - имя ПК на котором находится сервер FireBird с используемой БД (если локально, то параметр: localhost или 127.0.0.1);
FBSPort - в настройке не нуждается (по умолчанию: 14357);
FDBFile - локальный путь к БД на сервере FireBird;
FBCFile - путь к файлу "fbclient.dll" (находится в корневой папке программы Базис).
[свернуть]

Последний раз редактировалось systland; 23.09.2016 в 11:52..
Просмотров: 994175
Ответить с цитированием Вверх
Пользователь сказал cпасибо:
evilbaby1989 (10.07.2023)
Старый 27.03.2016, 01:41   #1031
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Проверка существования папки:

Скрытый текст


dir = "C:\\!заказы\\__________ПО\\Bazis8\\Scripts\\Расстекловка\\СкриптыФасадов"
FolderExist(dir)


function FolderExist(dir) {
fso = NewCOMObject("Scripting.FileSystemObject")
if (fso.FolderExists(dir)) {
system.log("папка Cуществует: " + dir)
return true
} else {
system.log("папка не существует: " + dir)
return false
}
}
[свернуть]


myfunction()

system.require('123.js');
myfunction()

myfunction()

Функция есть и в текущем и в подключенном.
Надо выполнить функцию
из текущего,
потом из подключенного,
потом из текущего.

Как?

Как-то отключить подключенный?

Или какой-то путь
текущий.myfunction()
подключенный.myfunction()
???

Последний раз редактировалось DTioutiou; 27.03.2016 в 06:28.
v22884 вне форума   Ответить с цитированием Вверх
Старый 28.03.2016, 07:32   #1032
Respublika
Новичок
 
Регистрация: 27.10.2015
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 5 сообщениях
Вес репутации: 0
Respublika на пути к лучшему
По умолчанию

Цитата:
Сообщение от v22884 Посмотреть сообщение
Или какой-то путь...
Этот опыт с include-файлами, -возможно что-то прояснит:

Имеем такую зависимость программных модулей(файлов):
PHP код:
main.js
  
|  |
  |  |
_ module2.js
  
|      |
  |
______|_____ module1.js 
Код модулей -см.ниже..

Выполнение даст результат:
PHP код:
logвызов fnCounter №1
log
вызов fnCounter №2
log
вызов fnCounter №3 
Т.е. можем сделать вывод, что инициализация модуля происходит 1 раз,
и предположить, что JS-движок кеширует подключаемые модули.

модуль "main.js":

Скрытый текст

PHP код:
system.require("C://module1.js")
fnCounter();
system.require("C://module2.js")
fnCounter(); 
[свернуть]

модуль "module1.js":

Скрытый текст

PHP код:
//Функция выводит число вызовов самой себя. 
//Т.к. Static переменных здесь нет, то используем возможность JS-Функций иметь собственные Свойства чтобы хранить текущее состояние :
function fnCounter() {
  if(
typeof fnCounter.counter == 'undefined') {
     
fnCounter.counter 0;    //если не существует, -создать
  
}
  
fnCounter.counter++;
  
system.log("вызов fnCounter №"+fnCounter.counter.toString());

[свернуть]

модуль "module2.js":

Скрытый текст

PHP код:
system.require("C://module1.js")
fnCounter(); 
[свернуть]
Respublika вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
v22884 (31.03.2016)
Старый 02.04.2016, 13:13   #1033
Igor_482
VIP
 
Аватар для Igor_482
 
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Вес репутации: 367
Igor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личность
По умолчанию Решение для работы с БД через диалоговое окно в скрипте.

Ниже приведен код скрипта для замены номенклатурных наименований сборок. Скрипт использует написанный на VB6 ActiveX модуль (FBDBDialog.dll) который реализует связь с БД через ODBC драйвер Firebird и представляет собой диалоговое окно для выбора номенклатуры (окно подобно стандартному диалогу Базиса "Выбор материала и комплектующих").
Нажмите на изображение для увеличения
Название: ОкноМодуля.jpg
Просмотров: 194
Размер:	50.0 Кб
ID:	109799

Скрытый текст

PHP код:
var FDBServ 't001'//Сервер FireBird
var FBSPort '14357'//Порт FireBird
var FDBFile 'D:\\DBBM\\Библиотека\\БД\\BMDB09.FDB'//БД
var FBCFile 'C:\\Windows\\System32\\FBCLIENT.DLL'//FBCLIENT.DLL (в корневой папке программы Базис)

var ConnectionString 'Driver={Firebird/InterBase(r) driver};' +
                       
'Dbname=' FDBServ '/' +
                                   
FBSPort ':' +
                                   
FDBFile ';' +
                       
'CHARSET=NONE;' +
                       
'PWD=masterkey;' +
                       
'UID=SYSDBA;' +
                       
'Client=' FBCFile ';';

var 
FBDB NewCOMObject('FBDBDialog.FBDB');
var 
Objects = new Object();

function 
SetSelection(Control) {
  var List = 
Objects[Control.Name];
  
UnSelectAll();
  for (var 
0< List.lengthi++) {
    List[
i].Selected true;
  };
};

function 
SetParameter(Control) {
  var List = 
Objects[Control.Name];
  for (var 
0< List.lengthi++) {
    
Undo.Changing(List[i]);
    List[
i].Name Control.Value;
  };
};

function 
GetFBDBDialog(Control) {
  var 
Result FBDB.Dialog(ConnectionString);
  if (
Result != '') {
    
Control.Value Result;
  };
};

Model.forEach(function(Object) {
  if ((
Object == '[object TFurnAsm]' ||
       
Object == '[object TAsmKit]') &&
      (
Object.Owner != '[object TFurnAsm]' &&
       
Object.Owner != '[object TAsmKit]')) {
    var 
ObjectName Object.Name.split('\r')[0];
    if(
typeof(Objects[ObjectName]) == 'undefined') {
      
Objects[ObjectName] = new Array();
    };
    
Objects[ObjectName].push(Object);
  };
});

var 
= new Number();
for (var 
Key in Objects) {
  var 
NewSelector =
  
'Selector' '= Action.Properties.NewSelector(Key, Key);\n' +
  
'Selector' '.CanClear = false;                        \n' +
  
'Selector' '.OnActivate = function() {                \n' +
  
'  SetSelection(Selector' ');                         \n' +
  
'};                                                         \n' +
  
'Selector' '.OnClick = function() {                   \n' +
  
'  GetFBDBDialog(Selector' ');                        \n' +
  
'};                                                         \n' +
  
'Selector' '.OnValueChange = function() {             \n' +
  
'  SetParameter(Selector' ');                         \n' +
  
'};                                                           ';
  eval(
NewSelector);
  
i++;
};

Action.Properties.NewButton('Завершить').OnClick = function() {
  
Action.Finish();
};

Action.Continue(); 
[свернуть]

Для работы скрипта необходим установленный ODBC драйвер Firebird, установленные и зарегистрированные в ОС модули FBDBDialog.dll, MSDATGRD.OCX и MSCOMCTL.OCX, а так же настройка переменных FDBServ, FDBFile и FBCFile в самом скрипте.

VB6 исходник ActiveX модуля FBDBDialog.dll, сам модуль и необходимые *.OCX для его работы: ссылка
ODBC драйвер для работы с БД Firebird: страница оф. сайта для загрузки драйвера

Стандартное место хранения модулей MSCOMCTL.OCX и MSDATGRD.OCX:
для Windows x64 -: %windir%\SysWOW64, для Windows x32 - %windir%\System32
При отсутствии модулей в системе их необходимо скопировать и зарегистрировать. Для регистрации необходимо запустить командную строку (cmd.exe) и выполнить команду - пример: regsvr32 %windir%\SysWOW64\FBDBDialog.dll

Последний раз редактировалось Igor_482; 03.04.2016 в 11:12. Причина: Строка "split(/\r/)" исходного текста сообщения отображалась как "split(/r/)"
Igor_482 вне форума   Ответить с цитированием Вверх
7 пользователя(ей) сказали cпасибо:
Старый 09.04.2016, 01:28   #1034
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Уважаемые разработчики Базис-Скрипта, не появилось ли в версии 9.0.6 предусмотренной возможности получить контур панели с подрезкой канта?

в ключах панели не вижу.
v22884 вне форума   Ответить с цитированием Вверх
Старый 11.04.2016, 17:59   #1035
Igor_482
VIP
 
Аватар для Igor_482
 
Регистрация: 03.09.2008
Сообщений: 174
Сказал(а) спасибо: 34
Поблагодарили 794 раз(а) в 113 сообщениях
Вес репутации: 367
Igor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личностьIgor_482 - просто великолепная личность
По умолчанию

Развитие инструментария для БМ на основе ActiveX модуля (FBDBDialog.dll) из предыдущего сообщения. Представленный скрипт позволяет редактировать параметры установленного в модели крепежа: менять размеры и тип отверстий, добавлять/удалять составные части и устанавливать/снимать флаг учета крепежа/составных частей в смете. Для работы скрипта требуются те же компоненты что и в прошлом сообщении, а также наличие файла "ADODB.ini" с настройками соединения в папке со скриптом.

Содержание ADODB.ini


[General]
FDBServ = t001
FBSPort = 14357
FDBFile = D:\DBBM\Библиотека\БД\BMDB09.FDB
FBCFile = C:\Windows\System32\fbclient.dll
[свернуть]

Переменные .ini:
FDBServ - имя ПК на котором находится сервер FireBird с используемой БД (если локально, то параметр: localhost или 127.0.0.1);
FBSPort - в настройке не нуждается (по умолчанию: 14357);
FDBFile - локальный путь к БД на сервере FireBird;
FBCFile - путь к файлу "fbclient.dll" (находится в корневой папке программы Базис).

Файл скрипта

Igor_482 вне форума   Ответить с цитированием Вверх
11 пользователя(ей) сказали cпасибо:
Старый 18.04.2016, 15:05   #1036
AndrianoS
Пользователь
 
Регистрация: 21.08.2009
Адрес: Санкт-Петербург
Сообщений: 59
Сказал(а) спасибо: 73
Поблагодарили 15 раз(а) в 9 сообщениях
Вес репутации: 187
AndrianoS на пути к лучшему
По умолчанию

Подскажите, пожалуйста, чем отличается GetObject и GetPanel. Ведь и в первом и втором случае можно выделить панель. И возможно запросить именно блок?
AndrianoS вне форума   Ответить с цитированием Вверх
Старый 19.04.2016, 09:09   #1037
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Спасибо, Igor_482, за подключение к базе.

Кто-нибудь подключил базу к 1с 8?

я подключил. но ошибка 104 при считывании данных. Кто-нибудь решил?
v22884 вне форума   Ответить с цитированием Вверх
Старый 19.04.2016, 17:04   #1038
dimasinka
Пользователь
 
Регистрация: 08.07.2008
Сообщений: 75
Сказал(а) спасибо: 45
Поблагодарили 5 раз(а) в 2 сообщениях
Вес репутации: 0
dimasinka пока не определено
По умолчанию

приветствую!
возможно ли скриптом раскидать на разные слои отверстия, контур панели и объединив все это в блок, экспортировать в DXF?
dimasinka вне форума   Ответить с цитированием Вверх
Старый 20.04.2016, 01:07   #1039
v22884
Местный
 
Регистрация: 17.04.2014
Адрес: д.Сибирцево, ателье-уют.рф
Сообщений: 454
Сказал(а) спасибо: 242
Поблагодарили 1,094 раз(а) в 210 сообщениях
Вес репутации: 386
v22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордитсяv22884 за этого человека можно гордится
По умолчанию

Цитата:
Сообщение от dimasinka Посмотреть сообщение
возможно ли скриптом раскидать на разные слои отверстия, контур панели и объединив все это в блок, экспортировать в DXF?
Ебстественно.

я пока тока работаю над этим. сделаю можь через месяц.

Пока с отверстиями разбираюсь. по мере свободного времени. и с подрезкой.

Добавлено через 19 минут
Подключение из 1с полувручную:

Скрытый текст




Перем Соединение;
//*******Подключились к базе************************************************
Процедура ПодключениеКБазе()
Соединение = Новый COMОбъект("ADODB.Connection");
Команда = Новый COMОбъект("ADODB.Command");
НаборЗаписей = Новый COMОбъект("ADODB.RecordSet");

Соединение.ConnectionString = "DRIVER={Firebird/InterBase(r) driver};ROLE={C:\Program Files (x86)\Firebird\Firebird_2_5\bin\fbclient.dll};CHARSET=NONE;UID=SYSDBA;PWD=masterkey;DBNAME=tehnologzak-pc/14357:C:\!Заказы\__________ПО\Bazis8\MTDB с Операциями.FDB";
Соединение.ConnectionTimeOut = 1200;
Соединение.CursorLocation = 3;
try
Соединение.Open(Соединение.ConnectionString);
//Сообщить("Соединение успешно уставнолено !!!");
except
Сообщить("Невозможно установить соединение с Firebird:
| "+ОписаниеОшибки());
Возврат;
endtry;
КонецПроцедуры

//*********Загружаем данные в базу***********************************************************************
Процедура ЗагрузитьКонтрагентов()
ТекстЗапроса ="
|SELECT *
|FROM
|ACCESS_OBJECT
|
|";
Попытка
// Выборка данных и перебор результата запроса
ВыборкаСтрокС = Соединение.Execute(ТекстЗапроса);
Пока ВыборкаСтрокС.EOF=0 Цикл //Цикл по запися


Сообщить(Строка(ВыборкаСтрокС.Fields("ID_AO").value)+" "+Строка(ВыборкаСтрокС.Fields("NAME_OBJECT").value));
ВыборкаСтрокС.MoveNext();
КонецЦикла;




Исключение
Сообщить(ОписаниеОшибки());
КонецПопытки;



КонецПроцедуры


&НаСервере
Процедура ПрочитатьНаСервере()
ПодключениеКБазе();
ЗагрузитьКонтрагентов();
КонецПроцедуры

&НаКлиенте
Процедура Прочитать(Команда)
ПрочитатьНаСервере();
КонецПроцедуры



[свернуть]


http://infostart.ru/public/85844/


но всётаки хочица средствами 1с, автоматически, в дереве конфигурации. у кого получилось?
v22884 вне форума   Ответить с цитированием Вверх
Пользователь сказал cпасибо:
dimasinka (20.04.2016)
Старый 20.04.2016, 21:55   #1040
Respublika
Новичок
 
Регистрация: 27.10.2015
Сообщений: 5
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 5 сообщениях
Вес репутации: 0
Respublika на пути к лучшему
По умолчанию

Цитата:
Сообщение от v22884 Посмотреть сообщение
хочица средствами 1с
этот код работает на платформе v8.2:

Скрытый текст

PHP код:
Процедура КнопкаВыполнитьНажатие(Кнопка)
    
sConnect "DRIVER=Firebird/InterBase(r) driver;Charset=win1251;UID=SYSDBA;PWD=masterkey;DBNAME=";
    
sFDB "127.0.0.1/14357:C:\1FBase\Bazis.fdb";  //!ВашСервер!/порт/!ВашПутькFDB!
                             
    
cnn = New COMОбъект("ADODB.Connection");
    
cnn.ConnectionTimeout 4;
    
cnn.Open(sConnect+sFDB);

    
    
rs = New COMОбъект("ADODB.RecordSet");
       
rs.ActiveConnection cnn;
       
rs.CursorLocation 2;  //adUseServer
       
rs.LockType 3;        //adLockOptimistic
       
rs.CursorType 1;      //adOpenKeyset

       //Первых 100 Материалов в Базисе 8 (в Б9 не проверялось, -там возможно другие имена объектов БД)
       
rs.Open("select first 100 ID_M,NAME_MAT,ARTICLE from MATERIAL");
       while 
rs.EOF=do
         
message("" rs.Fields(0).value char(9) + " : " rs.Fields(1).value);
         
rs.MoveNext(); 
       
endDo;
КонецПроцедуры 
[свернуть]

заполнить справочник Контрагенты(как и любой) не проблема,
вот вычистить не нужные записи, - это та еще эпопея,
в 1с строгий контроль ссылочной целостности, пока есть
хотя бы одна ссылка на удаляемую запись -система не позволит ее удалить.

1) Поэтому нужно полуавтоматически загружать - дать возможность оператору поискать контрагента по ЧастиНаименования или ИНН, если не найден - то жмем кнопку [Добавить].
2) Хорошо бы в конфигураторе добавить справочнику Контрагенты новое поле - "КодБазиса" (тип=Число10) - соответствует в FDB полю ID Контрагента.

Тогда алгоритм такой:
Запросом ищем в 1с Контрагента по полю "КодБазиса",
-нашли, - добавлять не надо, идем по логике дальше...
-не нашли, - дать возможность оператору поискать...
-оператор не нашел - жмет [добавить] добавляется из FDB Контрагент вместе с полем "КодБазиса"...
Respublika вне форума   Ответить с цитированием Вверх
5 пользователя(ей) сказали cпасибо:
Alex Rain (21.04.2016), Ovsyanicov (13.01.2022), systland (21.04.2016), v22884 (22.04.2016), АлКузнецов (16.03.2019)
Ответ

Нижняя навигация
Вернуться   Форум профессиональных мебельщиков PROMEBELclub > Программы для мебельщиков > Программы для конструирования и дизайна мебели > Система БАЗИС > Базис-мебельщик. Скрипты


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
БАЗИС 8 - Скрипты Igor_482 Базис-мебельщик. Скрипты 1525 30.03.2024 15:03
БАЗИС 9 nayrogi Базис-мебельщик 9 785 01.10.2022 23:13
БАЗИС-ЧПУ 8 chingisnah Базис-мебельщик 8 119 21.12.2017 22:04
Заявки на скрипты dr_john Система БАЗИС 37 01.03.2016 10:36
Базис-7,"Народный Базис"и Windows-8 sergeyzak18 "НАРОДНЫЙ" базис 23 16.01.2014 00:37


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


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

џндекс.Њетрика