|
|
|
|
|
21.03.2018, 14:48
|
|
Обсуждение скриптов в Системе Базис
Letos
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
21.03.2018, 14:48
Рейтинг:
()
Если вы не знаете, или не уверены, куда задавать вопрос по скриптам в Системе Базис, то эта тема для вас.
Обратите внимание на полезные ответы в этой теме!
|
Просмотров: 244411
|
2 пользователя(ей) сказали cпасибо:
|
|
16.10.2019, 08:20
|
#161
|
Пользователь
Регистрация: 16.12.2014
Сообщений: 32
Сказал(а) спасибо: 25
Поблагодарили 5 раз(а) в 5 сообщениях
Вес репутации: 0
|
и БМ 10 и 11 пробовал. Ошибок не выдаёт просто вот так это выглядит.
Последний раз редактировалось AlexBolton; 16.10.2019 в 08:57.
|
|
|
16.10.2019, 10:25
|
#162
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от Kartuz
и БМ 10 и 11 пробовал. Ошибок не выдаёт просто вот так это выглядит.
|
Цитата:
Сообщение от Kartuz
2. Открывается таблица со списком фурнитуры, где пользователь указывает нужное количество напротив нужной фурнитуры, проставляет это количество и жмёт УСТАНОВИТЬ
|
Я, видимо, не совсем понял этот пункт. На данный момент скрипт формирует таблицу из файлов фурнитуры, лежащих в папке со скриптом. А вам откуда фурнитуру брать нужно?
|
|
|
Пользователь сказал cпасибо:
|
|
16.10.2019, 10:35
|
#163
|
Пользователь
Регистрация: 16.12.2014
Сообщений: 32
Сказал(а) спасибо: 25
Поблагодарили 5 раз(а) в 5 сообщениях
Вес репутации: 0
|
Отлично !!! Вы сделали даже лучше чем нужно было ! Т.е я могу положить хоть 100 фурнитур в папку со скриптом и пунктов будет 100 . Всё работает !!!
Letos, На радостях вчера забыл проверить на БМ 11. На БМ 10 всё отлично, а вот на БМ 11 не работает, ошибку выдаёт. Можете поправить, а то скоро на БМ 11 окончательно перейдём ?
Последний раз редактировалось AlexBolton; 19.10.2019 в 20:21.
|
|
|
18.10.2019, 09:47
|
#164
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от Kartuz
Letos, На радостях вчера забыл проверить на БМ 11. На БМ 10 всё отлично, а вот на БМ 11 не работает, ошибку выдаёт. Можете поправить, а то скоро на БМ 11 окончательно перейдём ?
|
Посмотрел, исправил пару ошибок. Вот новый скрипт, проверьте:
Код
PHP код:
var fs = require('fs');
var path = require('path');
const extensions = [
'.f3d',
'.fr3d'
]
var furnpaths = [];
var countlist = [];
{
var paths = fs.readdirSync(__dirname);
for (var i = 0; i < paths.length; i++) {
var p = __dirname + path.sep + paths[i];
if (extensions.indexOf(path.extname(p)) >= 0) {
furnpaths.push(p);
countlist.push(0)
}
}
}
function InstallFurn(furnName, count){
var fast = OpenFurniture(furnName);
for (var i = 0; i < count; i++){
var obj = fast.Make(16, 16);
if (obj)
if (!obj.Owner){
obj.Owner = Model.Temp;
}
}
}
function ChangeCount(num){
countlist[num.Tag] = num.Value;
}
for (var i = 0; i < furnpaths.length; i++) {
var num = Action.Properties.NewNumber(path.parse(furnpaths[i]).name, countlist[i]);
num.Tag = i;
num.OnChange = ChangeCount;
}
Action.Properties.NewButton('Установить').OnClick = function(){
for (var i = 0; i < furnpaths.length; i++){
InstallFurn(furnpaths[i], countlist[i]);
}
Action.Finish();
}
Action.Continue();
[свернуть]
|
|
|
2 пользователя(ей) сказали cпасибо:
|
|
18.10.2019, 11:54
|
#165
|
Новичок
Регистрация: 10.10.2019
Сообщений: 4
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
|
Никто не подскажет? Хотя бы по 2 пункту. Все что есть в документации по товару: Article, Name, Material, GroupMaterial, TypeElement, ObjList.
Цитата:
Сообщение от wttgts
Добрый день.
Подскажите, пожалуйста, по скриптам для менеджера прайс-листов (или салона):
1. Как получить название файла товара?
Пробовал через
PHP код:
system.getFileNameWithoutExtension(Action.ModelFilename);
не получилось - Cannot read property ModelFilename...
Я так понимаю, в прайс-листе все иначе.
2. Как назначить изображение товара ?
Я экспортировал изображение модели под нужным углом из БМ
PHP код:
Action.Control.SavePicture(filename);
А теперь надо в прайс-лист к товару добавить.
|
|
|
|
18.10.2019, 15:39
|
#166
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от wttgts
Никто не подскажет? Хотя бы по 2 пункту. Все что есть в документации по товару: Article, Name, Material, GroupMaterial, TypeElement, ObjList.
|
По первому пункту могу сказать, что свойство Action есть только в БМ.
Из модели этой информации не достать.
По второму пункту ничего не могу сказать, т.к. с Салоном не работал. Может быть, IStiv может что-то подсказать.
З.Ы. Для проверки модели использовал самописный скрипт обхода свойств и значений объекта. Его, по идее, можно улучшить, но это неизвестно когда будет. И на больших иерархиях (типа Action) он зависает. Может, доработаю его в будущее время. А пока выкладываю тот вариант, который есть (может кому из скриптописателей поможет). Заранее предупреждаю: сохраните всё несохранённое перед запуском скрипта (особенно, если изменили объект обхода), есть вероятность, что БМ зависнет.
Код скрипта
PHP код:
const filename = 'D:\\struct.txt';
const maxDepth = 0;
var curMaxDepth = 0;
/**
* @type {{obj: Object, desc: string}[]}
*/
var objList = [];
function FindInList(obj) {
for (var i = 0; i < objList.length; i++) {
if (objList[i].obj == obj) {
return objList[i];
}
}
}
function AddToList(objc, descr) {
var result = {
obj: objc,
desc: descr
}
objList.push(result);
return result;
}
function tabs(tabcount) {
return '\t'.repeat(tabcount);
}
function CheckObject(obj, result, tabCount, depthLevel) {
if (maxDepth == 0){
curMaxDepth = Math.max(curMaxDepth, depthLevel);
}
if (maxDepth > 0 && depthLevel >= maxDepth){
return result;
}
var desc = FindInList(obj);
if (!desc) {
desc = AddToList(obj, obj.constructor ? obj.constructor.name : 'object');
}
for (var key in obj) {
var objValue = obj[key];
var fullPath = desc.desc + '.' + key;
if (typeof objValue == 'Object' || typeof objValue == 'object') {
result += tabs(tabCount) + fullPath + ': ';
try {
var objDesc = FindInList(objValue);
if (objDesc) {
result += objDesc.desc + '\n';
}
else {
try {
var objName = objValue.constructor.name;
result += objName;
AddToList(objValue, fullPath);
}
finally {
result += '\n';
}
result = CheckObject(objValue, result, tabCount + 1, depthLevel + 1);
}
}
catch (e) {
result += '\n' + tabs(tabCount + 1) + e.Message + '\n';
}
}
else
result += tabs(tabCount) + fullPath + ': ' + objValue + '\n';
}
return result;
}
var result = '';
AddToList(Model, 'Model');
result = CheckObject(Model, result, 0, 1);
console.log(curMaxDepth);
if (curMaxDepth !== 0){
result = 'DEPTH = ' + curMaxDepth + '\n' + result;
}
require('fs').writeFileSync(filename, result);
[свернуть]
|
|
|
3 пользователя(ей) сказали cпасибо:
|
|
19.10.2019, 20:15
|
#167
|
Пользователь
Регистрация: 02.12.2016
Сообщений: 84
Сказал(а) спасибо: 21
Поблагодарили 55 раз(а) в 27 сообщениях
Вес репутации: 109
|
Цитата:
Сообщение от wttgts
Добрый день.
Подскажите, пожалуйста, по скриптам для менеджера прайс-листов (или салона):
1. Как получить название файла товара?
|
под файлом товара имеется именно файл модели (.b3d) ? зачем это надо?
прямого доступа вроде нет. можно подключиться к базе из скрипта или иным способом и выполнить
PHP код:
SELECT NAME_MODEL FROM MODELS
Цитата:
Сообщение от wttgts
Как назначить изображение товара ?
|
там штатно разве это нельзя сделать ??
PHP код:
SELECT * FROM ICONS
в TOVAR попадает через KOD_ICON
вообщем. если надо че то разово делать с БД, какую нибудь пакетную операцию, я не юзаю штатные средства(потому как их очень мало), и глючные (то ли я рукожоп) драйверы подключения из JS к БД. ставишь любой менеджер БД, смотришь схему базы и фигачишь запросы на SQL.
Добавлено через 7 минут
Цитата:
Сообщение от Letos
Для проверки модели использовал самописный скрипт обхода свойств и значений объекта
|
тоже такое делал. профит этой затеи сомнителен, т.к. не факт что если свойство есть, оно реально что то вернет в скрипте. уж не говоря о функциях. хотя в случаях если Базис реализовал (ну или не закрыл) доступ к свойству, но не описал это в справке, сей способ может быть полезным))
|
|
|
Пользователь сказал cпасибо:
|
|
21.10.2019, 11:35
|
#168
|
Новичок
Регистрация: 10.10.2019
Сообщений: 4
Сказал(а) спасибо: 3
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
|
IStiv,
Спасибо за совет, попробую реализовать через запросы в БД.
Штатно можно, но такие задачи мне нужны для того, чтобы быстро добавить порядка 1000 товаров в одну *.bmz. В МПЛ можно назначить каждому (или всем выделенным) товару скрипт, что очень удобно. Таким образом, я бы одним кликом добавил 1000 товаров и изображения к ним.
Название файла (без пути и расширений) == Названию изображения модели (к этому файлу), поэтому нужен был 1 пункт моего сообщения.
Можно было бы брать не имя файла, а имя товара, что более логично, но имя товара присваивается из "Параметры изделия" в БМ. Ок. На формуме подсказали как присвоить имя в "Параметры изделия" и получился скрипт в пару строк, который работает через раз:
PHP код:
var fName = system.getFileNameWithoutExtension(Action.ModelFilename); Action.Control.Article.Name = fName;
Первый запуск скрипта выдает ошибку, второй - скрипт выполняется.
Код:
Access violation at address 00410179 in module 'Bazis10.exe'. Read of address 7A79777D.
Это если открыто сразу несколько файлов и я по очереди применяю скрипт к каждому из них, но если открывать по одному файлу и каждый раз перезапускать БМ, то ошибку не выдает.
Поэтому решил сразу в МПЛ присваивать имя товару из названия файла модели.
|
|
|
21.10.2019, 16:09
|
#169
|
Новичок
Регистрация: 21.10.2019
Сообщений: 3
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0
|
Скрипты для Базис-Раскрой
Добрый день, господа мебельщики
Вопрос видимо чайника: существуют ли в природе скрипты под Базис-Раскрой?
|
|
|
21.10.2019, 16:12
|
#170
|
Консультант
Регистрация: 28.06.2017
Сообщений: 555
Сказал(а) спасибо: 127
Поблагодарили 1,032 раз(а) в 366 сообщениях
Вес репутации: 345
|
Цитата:
Сообщение от Metabol
Добрый день, господа мебельщики
Вопрос видимо чайника: существуют ли в природе скрипты под Базис-Раскрой?
|
Могу быть неправ, но, насколько мне известно, самого функционала скриптов в Раскрое нет.
|
|
|
Пользователь сказал cпасибо:
|
|
|
|
|
Нижняя навигация
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Текущее время: 19:21. Часовой пояс GMT +3.
|