﻿$engine JScript
$uname RunEnterprise
$dname Запуск 1С
$addin global
$addin stdcommands
//$addin stdlib

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
////{ Cкрипт "Запуск 1С Предприятия" (RunEnterprise.js) для проекта "Снегопат"
////
//// Описание: макрос выполняет запуск альтернативного режима работы.
////    Для обычного толстого клиента альтернативным является толстый клиент управляемое приложение и наоборот.
////    Для смены режима исправьте значения констант режимЗапуска1 и режимЗапуска2
////    
////    У меня сейчас активно юзается разработка как в обычном, так и в управляемом приложении - потихоньку начинаю переползать на упр.приложение
////    без этого макроса приходится вручную переключать в настройках режимы, режим запуски отладки также неудобен, т.к. запустить только один сеанс в режиме отладки
////
//// Автор: Артур Аюханов aka artbear <aartbear@gmail.com>
////}
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

global.connectGlobals(SelfScript);
// stdlib.require('SettingsManagement.js', SelfScript);

function getPredefinedHotkeys(predef){
    predef.setVersion(1);
    predef.add("Альтернативный режим", "Ctrl + Alt + F5");
}

SelfScript.Self['macrosАльтернативный режим'] = function () {
    поменятьРежимЗапуска()
    
    //запустить 1С
    if(stdcommands.Config.RunEnterprise.getState().enabled)
        stdcommands.Config.RunEnterprise.send()
    
    поменятьРежимЗапуска()
}

function поменятьРежимЗапуска()
{
    var былРежимЗапуска = profileRoot.getValue(путьПрофиля)

    var новыйРежим = былРежимЗапуска;
    if(новыйРежим == режимЗапуска1)
        новыйРежим = режимЗапуска2
    else
        новыйРежим = режимЗапуска1
        
    profileRoot.setValue(путьПрофиля, новыйРежим)

    return былРежимЗапуска
}

SelfScript.Self['macrosНастроить режимы запуска'] = function () {

    var текущийРежимЗапуска = profileRoot.getValue(путьПрофиля);
    ////{ режимы запуска 1С, заданные в профайле
    // 1 тонкий клиент
    // 2 автоматически
    // 3 толстый клиент (управляемое приложение)
    // 4 толстый клиент (обычное приложение)
    // 5 веб-клиент
    ////}
    var ListMode = v8New("ValueList");
    ListMode.add(1, "Тонкий клиент");
    ListMode.add(2, "Автоматически");
    ListMode.add(3, "Толстый клиент (управляемое приложение)");
    ListMode.add(4, "Толстый клиент (обычное приложение)");
    ListMode.add(5, "Веб-клиент");
    
    var defaultItem = ListMode.FindByValue(текущийРежимЗапуска);
    var choice = ListMode.ChooseItem("Выберите режим запуска по умолчанию", defaultItem);
    if (choice!=undefined) {
        режимЗапуска1 = choice.value;
        if (режимЗапуска1!=текущийРежимЗапуска) profileRoot.setValue(путьПрофиля, режимЗапуска1);
    } 
    
    var defaultItem = ListMode.FindByValue(режимЗапуска2);
    var choice = ListMode.ChooseItem("Выберите альтернативный режим запуска", defaultItem);
    if (choice!=undefined) {
        режимЗапуска2 = choice.value;
    }
    
    //Сохраним режимы запуска 
    profileRoot.setValue(pflRunEnterpriseStartModeAlternative, режимЗапуска2);
    
}

var pflRunEnterpriseStartModeAlternative  = "RunEnterprise/StartAlternativeMode";
profileRoot.createValue(pflRunEnterpriseStartModeAlternative, 3, pflSnegopat); // управляемый толстый, для алтернативного режима

var путьПрофиля = "Launch/StartMode2"

var режимЗапуска1 = profileRoot.getValue(путьПрофиля);
var режимЗапуска2 = profileRoot.getValue(pflRunEnterpriseStartModeAlternative);
