Показать сообщение отдельно
Старый 14.10.2020, 21:22   #72
АлКузнецов
Местный
 
Аватар для АлКузнецов
 
Регистрация: 15.04.2012
Адрес: Санкт-Петербург
Сообщений: 104
Сказал(а) спасибо: 56
Поблагодарили 276 раз(а) в 63 сообщениях
Вес репутации: 211
АлКузнецов как роза среди колючекАлКузнецов как роза среди колючекАлКузнецов как роза среди колючек
По умолчанию

скрипт из двух форм генерирующий название видов покраски и красящий детали согласно ценовой группе. Внимание скрипт определяет ценовую группу по цифрам артикула материала.

для каждой ценовой группы свой список расцветок и эффектов покраски.

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

покраска
PHP код:
//форма выбора набора красок и эффектов


function Ztifr(txtn) {
  
// функция возвращает цифры из куска строки
  // ch - число
  // n - количество знаков слева
    
var ets txt.substring(0n);
    
//alert(ets);
    
return parseInt(ets.match(/\d+/));
}

Materials = [];
PanelByMaterial = [];
var 
PanelChanged 0;


Model.forEachPanel(
    function(
Obj) {
    var 
MtName Ztifr(ExtractMatCode(Obj.MaterialName), 50);
    if (
MtName >=1)
    {}else{
MtName "";}
        var 
Index Materials.indexOf(MtName);
        if (
Index 0) {
            
Index Materials.push(MtName) - 1;
            var 
Panels = [];
            
PanelByMaterial.push(Panels);
        }
        
PanelByMaterial[Index].push(Obj);
    });

function 
GetKrask(__k) {
    
// функция возвращает списки красски и отделки получив цифру ценовой группы
    
var kras = [];
    var 
effe = [];

        switch (
__k){
            case 
1:
            
kraska = ["""эмаль_АВОРИО""эмаль_АКВА""эмаль_АКВАМАРИН""эмаль_АНТРАЦИТ""эмаль_БАЗАЛЬТ""эмаль_БЕЖЕВЫЙ""эмаль_БЕЛЫЙ""эмаль_БОРДО""эмаль_ВАНИЛЬ""эмаль_ВОЛНА""эмаль_ГАВАНА""эмаль_ГЛИНЯНЫЙ""эмаль_ГОЛУБОЙ""эмаль_ГРАНАТ""эмаль_ГРИДЖИО""эмаль_ДИП БЛЕК""эмаль_ЕЖЕВИКА СО СЛИВКАМИ""эмаль_ЖЕЛТЫЙ""эмаль_ЗЕЛЕНЫЙ""эмаль_КАКАО""эмаль_КАППУЧИНО""эмаль_КВАРЦ""эмаль_КОРДА""эмаль_КОФЕ""эмаль_КРАСНЫЙ""эмаль_КРЕМ""эмаль_ЛАЙМ""эмаль_ЛАЙТ ГРЕЙ""эмаль_ЛАТТЕ""эмаль_МАРЕНГО""эмаль_МАСЛО""эмаль_МОЛОКО""эмаль_ОБЛАКО""эмаль_ОЛИВКОВО-СЕРЫЙ""эмаль_ОПАЛ""эмаль_ОРАНЖЕВЫЙ""эмаль_ПЕПЕЛЬНЫЙ""эмаль_ПЕТРОЛ""эмаль_РУБИНОВЫЙ""эмаль_СВЕТЛО-СЕРЫЙ""эмаль_СЕРО-БЕЖЕВЫЙ""эмаль_СЕРЫЙ""эмаль_СЕРЫЙ ЖЕМЧУГ""эмаль_СИНИЙ""эмаль_СИРЕНЬ""эмаль_СЛИВКИ""эмаль_СНЕЖНЫЙ""эмаль_ТЕМНО-СЕРЫЙ""эмаль_ТЕПЛЫЙ БЕЖ""эмаль_ТОПЛЕНОЕ МОЛОКО""эмаль_ТУРЕЦКАЯ ЛАЗУРЬ""эмаль_ФИСТАШКОВЫЙ""эмаль_ЧЕРНЫЙ""эмаль_ШОКОЛАД""эмаль_СЕРЕБРИСТЫЙ"];
            
effekt = [""'&матовая','&глянец','&Велюр','&X-matt'];
                break;
            case 
2:
            
kraska = ["""эмаль_АВОРИО""эмаль_АКВА""эмаль_АКВАМАРИН""эмаль_АНТРАЦИТ""эмаль_БАЗАЛЬТ""эмаль_БЕЖЕВЫЙ""эмаль_БЕЛЫЙ""эмаль_БОРДО""эмаль_ВАНИЛЬ""эмаль_ВОЛНА""эмаль_ГАВАНА""эмаль_ГЛИНЯНЫЙ""эмаль_ГОЛУБОЙ""эмаль_ГРАНАТ""эмаль_ГРИДЖИО""эмаль_ДИП БЛЕК""эмаль_ЕЖЕВИКА СО СЛИВКАМИ""эмаль_ЖЕЛТЫЙ""эмаль_ЗЕЛЕНЫЙ""эмаль_КАКАО""эмаль_КАППУЧИНО""эмаль_КВАРЦ""эмаль_КОРДА""эмаль_КОФЕ""эмаль_КРАСНЫЙ""эмаль_КРЕМ""эмаль_ЛАЙМ""эмаль_ЛАЙТ ГРЕЙ""эмаль_ЛАТТЕ""эмаль_МАРЕНГО""эмаль_МАСЛО""эмаль_МОЛОКО""эмаль_ОБЛАКО""эмаль_ОЛИВКОВО-СЕРЫЙ""эмаль_ОПАЛ""эмаль_ОРАНЖЕВЫЙ""эмаль_ПЕПЕЛЬНЫЙ""эмаль_ПЕТРОЛ""эмаль_РУБИНОВЫЙ""эмаль_СВЕТЛО-СЕРЫЙ""эмаль_СЕРО-БЕЖЕВЫЙ""эмаль_СЕРЫЙ""эмаль_СЕРЫЙ ЖЕМЧУГ""эмаль_СИНИЙ""эмаль_СИРЕНЬ""эмаль_СЛИВКИ""эмаль_СНЕЖНЫЙ""эмаль_ТЕМНО-СЕРЫЙ""эмаль_ТЕПЛЫЙ БЕЖ""эмаль_ТОПЛЕНОЕ МОЛОКО""эмаль_ТУРЕЦКАЯ ЛАЗУРЬ""эмаль_ФИСТАШКОВЫЙ""эмаль_ЧЕРНЫЙ""эмаль_ШОКОЛАД""эмаль_СЕРЕБРИСТЫЙ""эмаль_ЗОЛОТОЙ МЕТ.""эмаль_ШАМПАНЬ МЕТ."];
            
effekt = ["""&матовая""&глянец""&Велюр""&X-matt""&металлик"];
                break;
            case 
3:
            
kraska = ["""шпон_FL ВЕНГЕ""шпон_FL ВЕНГЕ РАДИАЛЬНЫЙ""шпон_FL ГРЕЦКИЙ ОРЕХ""шпон_FL ДЕРЕВО ЭБЕНОВОЕ""шпон_FL ДУБ КАКАО""шпон_FL ЗЕБРАНО ""шпон_FL ЗЕБРАНО ГРАФИТ""шпон_FL ИНДИЙСКИЙ ЭБЕН""шпон_FL ОРЕХ ФРАНЦУЗСКИЙ""шпон_FL ПАЛИСАНДР""шпон_FL ПАЛИСАНДР ОГНЕННЫЙ""шпон_FL ПАЛИСАНДР РИО""шпон_FL ТИК""шпон_ДУБ НАТУРАЛЬНЫЙ""шпон_АМЕРИКАНСКИЙ ОРЕХ""шпон_ЕВРОПЕЙСКИЙ ОРЕХ""шпон_ОЛИВКОВЫЙ ЯСЕНЬ""шпон_СЕРЫЙ ГРАБ""шпон_ТИГРОВЫЙ ЭБЕН""шпон_АМЕРИКАНСКИЙ ОРЕХ 3D""шпон_ДУБ ВИНТАЖ 3D""шпон_ДУБ НАТУРАЛЬНЫЙ 3D""шпон_ЭВКАЛИПТ 3D""шпон_ЭВКАЛИПТ МОРЕНЫЙ 3D"];
            
effekt = ["""&ЭКО""&матовый  Открытая пора""& полиэфир матовый""&глянец"];
                break;
            case 
4:
            
kraska = ["""шпон_ДУБ БЕЛОГО ЦВЕТА""шпон_ДУБ В ЦВЕТЕ ВЕНГЕ""шпон_ДУБ ГЛИНЯНОГО ЦВЕТА""шпон_ДУБ МАСЛЯННОГО ЦВЕТА""шпон_ДУБ ОЛИВКОВОГО ЦВЕТА""шпон_ДУБ СЕРЫЙ ЖЕМЧУГ""шпон_ДУБ ЧЕРНЫЙ""шпон_ДУБ КОНЬЯК 3D""шпон_ДУБ ЛЕН 3D""шпон_ДУБ ПЕПЕЛ 3D""шпон_ДУБ СЕРЫЙ 3D""шпон_ДУБ ТАБАККО 3D""шпон_ДУБ УМБРА 3D"];
            
effekt = ["""&окрашенный матовый"''];
                break;
            case 
5:
            
kraska = ["""эмаль_СИРЕНЕВЫЙ МЕТ.""эмаль_МЕТАЛЛ АНТИК""эмаль_МЕТАЛЛ""эмаль_БЕЛЫЙ ПЕРЛАМУТР""эмаль_БОЛОТНЫЙ МЕТ.""эмаль_ГОЛУБОЙ МЕТ.""эмаль_ЖЕМЧУГ""эмаль_ЗЕЛЕНЫЙ МЕТ. ""эмаль_РОЗОВО-БЕЖЕВЫЙ МЕТ.""эмаль_РОЗОВЫЙ МЕТ.""эмаль_САЛАТОВЫЙ МЕТ.""эмаль_СВЕТЛО-СИРЕНЕВЫЙ МЕТ.""эмаль_ГРАФФИТИ""эмаль_ЭЛЬДОРАДО ГОЛД"];
            
effekt = ["""&металлик""&cпецэффект"];
                break;
            case 
6:
            
kraska = ["""шпон_FL ВЕНГЕ""шпон_FL ВЕНГЕ РАДИАЛЬНЫЙ""шпон_FL ГРЕЦКИЙ ОРЕХ""шпон_FL ДЕРЕВО ЭБЕНОВОЕ""шпон_FL ДУБ КАКАО""шпон_FL ЗЕБРАНО ""шпон_FL ЗЕБРАНО ГРАФИТ""шпон_FL ИНДИЙСКИЙ ЭБЕН""шпон_FL ОРЕХ ФРАНЦУЗСКИЙ""шпон_FL ПАЛИСАНДР""шпон_FL ПАЛИСАНДР ОГНЕННЫЙ""шпон_FL ПАЛИСАНДР РИО""шпон_FL ТИК""шпон_ДУБ НАТУРАЛЬНЫЙ""шпон_АМЕРИКАНСКИЙ ОРЕХ""шпон_ЕВРОПЕЙСКИЙ ОРЕХ""шпон_ОЛИВКОВЫЙ ЯСЕНЬ""шпон_СЕРЫЙ ГРАБ""шпон_ТИГРОВЫЙ ЭБЕН"];
            
effekt = ["""&ЭКО""&матовый  Открытая пора ""& полиэфир матовый""& глянец"];
                break;
            case 
7:
            
kraska = ["""шпон_МАКАССАР - LIGHT""шпон_ДУБ БОРДО С МЕДНОЙ ПАТИНОЙ""шпон_ОЛИВА - LIGHT""шпон_ЗИРИКОТЕ - LIGHT""шпон_ДУБ ЧЕРНЫЙ С СЕРЕБРЯНОЙ ПАТИН""шпон_ВЕНГЕ НАТУРАЛЬНЫЙ""шпон_ПАЛИСАНДР ВОСТОЧНЫЙ""шпон_РЕД ГАМ""шпон_САНТОС ПАЛИСАНДР""шпон_ТИК НАТУРАЛЬНЫЙ""шпон_МАКАССАР"];
            
effekt = ["""&Натуральный матовый""&полиэфир матовый""&полиэфир глянец"];
                break;
            case 
8:
            
kraska = ["""шпон_ЗИРИКОТЕ - LIGHT""шпон_ДУБ АВОРИО С КОРИЧНЕВОЙ ПАТИНОЙ""шпон_ДУБ БОРДО С МЕДНОЙ ПАТИНОЙ""шпон_ДУБ ЧЕРНЫЙ С БОРДОВОЙ ПАТИНОЙ""шпон_ДУБ ЧЕРНЫЙ С ЗОЛОТОЙ ПАТИНОЙ""шпон_ДУБ ЧЕРНЫЙ С СЕРЕБРЯНОЙ ПАТИНОЙ"];
            
effekt = ["""&полиэфир матовый""&полиэфир глянец"];
                break;
            case 
9:
            
kraska = ["""шпон_ВЕНГЕ НАТУРАЛЬНЫЙ""шпон_ПАЛИСАНДР ВОСТОЧНЫЙ""шпон_РЕД ГАМ""шпон_САНТОС ПАЛИСАНДР""шпон_ТИК НАТУРАЛЬНЫЙ""шпон_ОЛИВА""шпон_МАКАССАР"];
            
effekt = ["""&ЭКО""&матовый  Открытая пора ""& полиэфир матовый""& глянец"];
                break;
            case 
10:
            
kraska = ["""нет данных"];
            
effekt = ["""нет эффектов"];
                break;
            case 
11:
            
kraska = ["""эмаль_БЕТОН АНТРАЦИТ""эмаль_БЕТОН ДЖАСП""эмаль_МЕДЬ АНТИК""эмаль_ЛАТУНЬ АНТИК""эмаль_СТАЛЬ""шпон_МАКАССАР""шпон_ОЛИВА"];
            
effekt = ["""&METALL""&бетон"];
                break;
            case 
12:
            
kraska = ["""шпон_ЗИРИКОТЕ"];
            
effekt = ["""&полиэфир матовый""&полиэфир глянец"];
                break;
        default:
        
alert'Вы не выбрали ценовую группу' );
        break;
                    }
    var 
otdelka = {kraskraskaeffeeffekt };
return 
otdelka;
};

//-- window Window2
Window2 = { Form NewForm() };
Props Window2.Form.Properties;
Window2.Form.Width 245;
Window2.Form.Height 150;
Window2.Form.Caption "Ценовая группа?";
Window2.Form.OKButton true;
Window2.Form.CancelButton false;
Window2.Form.Resizable true;
//-- window Window2 properties

Window2.Combo1 Props.NewCombo("ценовая группа","");
Window2.Combo1.SetLayout(54220622);
Window2.Combo1.ComboItems Materials;

Window2.Label1 Props.NewLabel("выверите ценовую гриппу");
Window2.Label1.SetLayout(52031922);
//-- window Window2 events

//-- window Window2 ends
Window2.Form.ShowModal();
        var 
_k Ztifr(Window2.Combo1.Value3) ;
      
// alert ("выбрана ценовая группа " + _k );
//-- window Window1
Window1 = { Form NewForm() };
Props Window1.Form.Properties;
Props Window1.Form.Properties;
Window1.Form.Width 400;
Window1.Form.Height 220;
Window1.Form.Caption "покраска";
Window1.Form.OKButton true;
Window1.Form.Resizable true;
Window1.Form.CancelButton false;
Window1.Form.MinHeight 180;

Window1.Form.CancelButton true;
Window1.Form.OKButton true;
//-- window Window1 properties

Window1.Combo1 Props.NewCombo("отделки","");
Window1.Combo1.SetLayout(241629422);
Window1.Combo1.ComboItems GetKrask(_k).kras;
Window1.Combo2 Props.NewCombo("эффекты","");
Window1.Combo2.SetLayout(245129422);
Window1.Combo2.ComboItems GetKrask(_k).effe;
Window1.usl Props.NewBool("выбрать панели вручную",false);
Window1.usl.SetLayout(2310829522);
//-- window Window1 events

//-- window Window1 ends

Window1.Form.ShowModal();


var 
Pan;
var 
ruch Window1.usl.Value//значение ручного выбора
var _n Window2.Combo1.Value//значение ценовой группы
    
_n Ztifr_n5);
var 
_i 0;         // счетчик окрашенных панелей

if (ruch//выбрать вручную окраску панелей
{

BtnStop NewButtonInput("Закончить");
var 
knop true;
var 
plastMat;
// выполняем выделение в бесконечном цикле
// при нажатии на отмену команды скрипт все равно завершится, т.к.
// он вызывает функцию GetObject()

while (knop) {
    
BtnStop.OnChange = function() {
    
//alert('Нажата Кнопка "Закончить"');
           
return knop false;
           }
    if (
knop) {
    
Pan GetPanel("Укажите панель");

    }else  {
        
alert('конец скрипта');
        }
    
// условие Pan.Plastics. проверяет,
    // что у выбранной не свойства пластик
        
if (ZcnGr(Pan_n)) {
    if (
Pan.Plastics.Count == 0) {
        
Pan.AddPlastic(plastMattrue);
        
plastMat Pan.Plastics.Plastics[0];
        
plastMat.Material Window1.Combo1.Value Window1.Combo2.Value;
        
plastMat.Thickness 0.1;
        ++
_i;
        
Pan.Color 100;
        
Pan.Selected true;
        }
     else  {
        
alert('Панель уже покрашена');
        }
    } else  {
        
alert('Панель другой ценовой группы');
        }

    }

}
else
{

Model.forEachPanel(function(Pan) {
    if (
ZcnGr(Pan_n))
    if (
Pan.Plastics.Count == 0) {
        
Pan.AddPlastic(plastMattrue);
        
plastMat Pan.Plastics.Plastics[0];
        
plastMat.Material Window1.Combo1.Value Window1.Combo2.Value;
        
plastMat.Thickness 0.1;
        
Pan.Color 200;
        
Pan.Selected true;
        ++
_i;
        }


});
alert("окрашено " _i +" панелей " _n +" цн.гр. ");
}


function 
ZcnGr(objnGr) {
    var 
artiqul ExtractMatCode(obj.MaterialName);    //извлекаем артикул из названия материала
    
var tzGr Ztifr(artiqul100);                    //извлекаем цифры из артикула материала
if (tzGr == nGr)
    { return 
true;
    }
else
    {return 
false;
    }

[свернуть]


скрипт может быть интересен, если вам нужно создавать формы-пользователя с динамически обновляемыми списками.

работает в 10 и 11 версиях
__________________
С уважением Кузнецов Александр
АлКузнецов вне форума   Ответить с цитированием Вверх