$engine JScript
$uname formAutoVersion
$dname Авто-простановка версии на форме
$addin stdcommands
// Александр Орефков
function onFileSave(cmd)
{
if(cmd.isBefore) // Обработчик вызван перед выполнением команды
{
// Получим объект метаданных текущего окна
var mdObj, av = windows.getActiveView()
if(!av || !(mdObj = av.mdObj))
return
// Посмотрим, не внешний ли отчет/обработка сохраняется.
if(mdObj.container != mdObj.container.masterContainer)
{
// Тут надо перебрать все формы.
mdObj = mdObj.container.rootObject
var dateStr = new Date().toLocaleString()
var needAsk = -1
for(var i = 0, formsCount = mdObj.childObjectsCount("Формы"); i < formsCount; i++)
{
var formMDObj = mdObj.childObject("Формы", i)
//MessageBox(formMDObj.name)
var form = formMDObj.getExtProp("Форма").getForm()
if(form)
{
var label = form.Controls.Find("ВерсияНадпись")
if(!label)
{
if(needAsk == -1)
needAsk = MessageBox("Добавить на формы надпись с версией?", mbYesNo | mbIconQuestion | mbDefButton1) == mbaYes ? 1 : 0
if(needAsk == 1)
{
// Надо добавить надпись
label = form.Controls.Add(v8New("ОписаниеТипов", "Надпись").Типы().Получить(0), "ВерсияНадпись", true)
label.Заголовок = "Версия 0"
form.Высота += 20
label.Лево = 0
label.Верх = form.Высота - 20
label.Высота = 20
label.Ширина = form.Ширина
}
}
if(label)
{
// Надпись найдена. Надо увеличить номер версии
var currentVersion = parseInt(label.Заголовок.match(/\d+/)[0])
label.Заголовок = "Версия " + (currentVersion + 1) + " (" + dateStr + ")"
}
}
}
}
}
}
// Добавим обработчик команды сохранения файла
stdcommands.Frame.FileSave.addHandler(SelfScript.self, "onFileSave")