$engine JScript
$uname ModuleComment
$dname Описание модуля
$addin global
$addin stdlib
stdlib.require("TextWindow.js", SelfScript);
global.connectGlobals(SelfScript);
////////////////////////////////////////////////////////////////////////////////////////
////{ Cкрипт "Заголовок общего модуля" (ModuleComment.js) для проекта "Снегопат"
////
//// Описание: Выводит заголовок модуля с его описанием и сведениями об авторе
////
//// Автор: Сухих В.Ю. по мотивам скрипта author.js Александра Кунташова
//// <kuntashov@gmail.com>, http://compaud.ru/blog
//// 29.03.2012 Список отображаемых в форме конфигураций настраивается в Списке значений дляКонфигурации
//// для включения возможности удалите комментарии "//ft"
////}
////////////////////////////////////////////////////////////////////////////////////////
var doOK = false;
//ft var дляКонфигурации = v8New("СписокЗначений");
//ft дляКонфигурации.Add( "АСБНУ 1.3" );
//ft дляКонфигурации.Add( "ЗУП 2.5.48" );
//ft дляКонфигурации.Add( "УПП 1.2 (рзп)" );
//ft дляКонфигурации.Add( "УАТ" );
//ft дляКонфигурации.Add( "Для всех конфигураций");
////////////////////////////////////////////////////////////////////////////////////////
////{ Макросы
////
SelfScript.self['macrosМаркер "Вставить"'] = function() {
form = loadScriptForm(SelfScript.fullPath.replace(/js$/, 'ssf'), SelfScript.self);
//ft form.ЭлементыФормы.Назначение.СписокВыбора = дляКонфигурации;
form.DoModal();
form = null;
if (doOK) addMarker(MarkerTypes.INSERT);
}
/* Возвращает название макроса по умолчанию - вызывается, когда пользователь
дважды щелкает мышью по названию скрипта в окне Снегопата. */
function getDefaultMacros() {
return 'Маркер "Вставить"';
}
////} Макросы
var MarkerTypes = {
INSERT:"Вставить"
};
var MarkerFormatStringParameters = {};
var pflSuhAuthorJs = 'Заголовок общего модуля 1';
function addMarker(markerType) {
var _d = new Date();
var dtNow = _d.getDate()+"."+(_d.getMonth()+1)+"."+_d.getFullYear()+" "+_d.getHours()+":"+_d.getMinutes()+"";
var w = snegopat.activeTextWindow();
if (!w) return;
bFreeW = (w.mdProp == null);
if (!bFreeW)
{
if (w.mdProp.name(1) == "Форма")
{
var md = w.mdObj.parent;
try
{
md.editProperty("МодульОбъекта");
}catch(e){}
}
}
var w = GetTextWindow();
if (!w) return;
var intLastStrCommentAlready = CheckForDescription(w);
if (intLastStrCommentAlready != 1)
{
w.textWindow.SetSelection(1, 1, intLastStrCommentAlready, 90);
w.textWindow.SelectedText = "";
}
var synonym = Метаданные.Синоним;
w.SetCaretPos(1, 1);
w.InsertLine(1, ""+
"//****************************************//_\\\\\n"+
"// Описание программы от " +
dtNow +" /{"+
"\n// ___" + strct1C_Description.ТипПрограммы +
"___\n// предназначено для [" + strct1C_Description.Назначение +
"]\n" + strct1C_Description.Описание.replace(/(^.*)/mg, "//>> $1") +
"\n// " + strct1C_Description.Автор +
"\n// Создан в " + synonym +
"\n" + "//***************************************//}}\n");
}
function parseTpl() {
var a = [];
for (var i=0; i<arguments.length; i++)
a.push(arguments[i]);
return snegopat.parseTemplateString('<?"", ' + a.join(',') + '>');
}
function getSettingsStructure() {
var s = v8New("Структура");
s.Вставить("Автор", "");
s.Вставить("Назначение", "");
s.Вставить("ТипПрограммы", "");
s.Вставить("Описание", "");
profileRoot.createValue(pflSuhAuthorJs, s, pflSnegopat)
s = profileRoot.getValue(pflSuhAuthorJs);
return s;
}
//{ Обработчики элементов управления формы
function ПриОткрытии () {
ЗаполнитьЗначенияСвойств(form, strct1C_Description);
form['Описание'] = "";
}
function КнопкаОкНажатие (Элемент) {
ЗаполнитьЗначенияСвойств(strct1C_Description, form);
profileRoot.setValue(pflSuhAuthorJs, strct1C_Description);
doOK = true;
form.Close();
}
function КнопкаОтменаНажатие (Элемент) {
doOK = false;
form.Close();
}
//} Обработчики элементов управления формы
//{ Вернем последнюю строку описания модуля, если есть иначе 0
function CheckForDescription(wnd) {
var txtText = wnd.ПолучитьТекст();
if(wnd.LinesCount == 0) return 0;
var arrLines = wnd.GetLines();
if (arrLines[0].search(/\*\/\/\_\\\\/) == -1) return 0;
for (var ln in arrLines)
{
if (arrLines[ln].search(/\/\/\}\}/) > 0) return (parseInt(ln) + 1);
if (arrLines[ln].search(/^\s*\/\//) == -1) return 0;
}
return 0;
}
//} CheckForDescription
//{ Горячие клавиши по умолчанию.
function getPredefinedHotkeys(predef) {
predef.setVersion(2.2);
predef.add('Маркер "Вставить"', "Alt + Z");
}
//} Горячие клавиши по умолчанию.
var strct1C_Description = getSettingsStructure();