Artifact 8df6506c4abead0a6f452d0664d89145cd0c7a81:
- File code_gen/create_type.js — part of check-in [ea8531ad07] at 2014-04-30 12:08:47 on branch trunk — Небольшие правки в кодогенераторе (user: orefkov size: 3317)
$engine JScript $uname codegen_create_type $dname Генератор Описания типов... $addin codegen_manager $addin stdlib $addin vbs // (c) Александр Орефков orefkov at gmail.com // Сосна Евгений <shenja@sosna.zp.ua> // Скрипт - генератор кода, обманем подсказку 1С. // codegen_manager.registerCodeGen("#Если _ Тогда/Справочник", genarateNewRefs); codegen_manager.registerCodeGen("#Если _ Тогда/Документ", genarateNewDoc); codegen_manager.registerCodeGen("#Если _ Тогда/ПроизвольныйТип", genarateNewType); function getWordUnderCursor(){ extSearch = stdlib.require(stdlib.getSnegopatMainFolder()+'scripts\\extSearch.js').GetExtSearch(); selText = '' w = extSearch.watcher.getActiveTextWindow(); if (!w) return '' var selText = w.GetSelectedText(); if (selText == '') selText = w.GetWordUnderCursor(); return selText } function genarateNewRefs(param) { // Для начала выберем вид справочника var docKind = snegopat.parseTemplateString('<?"Выберите вид справочника", Справочник>') if(!docKind.length) return false selText = getWordUnderCursor(); if (!selText.length){ selText ="спр" + docKind } vbs.result = selText var varName = vbs.DoExecute('InputString result, "Укажите название переменной"') param.text = "#Если _ Тогда\n" + varName + ' = Справочники.' + docKind + '.СоздатьЭлемент();\n#КонецЕсли' return true } function genarateNewDoc(param) { // Для начала выберем вид документа var docKind = snegopat.parseTemplateString('<?"Выберите вид документа", Документ>') if(!docKind.length) return false selText = getWordUnderCursor(); if (!selText.length){ selText ="док" + docKind } vbs.result = selText var varName = vbs.DoExecute('InputString result, "Укажите название переменной"') param.text = "#Если _ Тогда\n" + varName + ' = Документы.' + docKind + '.СоздатьДокумент();\n#КонецЕсли' return true } function genarateNewType(param) { // Для начала выберем вид тип var docKind = snegopat.parseTemplateString('<?"Выберите тип ", КонструкторОписанияТипов>') if(!docKind.length) return false selText = getWordUnderCursor(); if (!selText.length){ selText ="Элемент" } vbs.result = selText var varName = vbs.DoExecute('InputString result, "Укажите название переменной"') var re = new RegExp('(Новый\\s)ОписаниеТипов\\(\\"([А-я_0-9]{1,})\\"\\).*', 'gi'); var matches = re.exec(docKind); if (matches && matches.length) { param.text = "#Если _ Тогда\n" + varName + ' = ' + matches[1] + ''+matches[2]+';\n#КонецЕсли' return true } return false; }