По поводу добавлений в объектной модели версии 1.1.5.1
В первую очередь, это функционал по работе со свойствами объектов метаданных, содержащими модуль.
Это такие методы объекта IV8MDObject, как
Код:
isPropModule(индексСвойства)
getModuleText(индексСвойства)
setModuleText(индексСвойства, текст)
openModule(индексСвойства)
Каждый объект метаданных содержит свойства - именованные атрибуты объекта, содержащие какое-либо значение.
Ткните в любой объект метаданных в дереве правой кнопкой мыши, выберите "Свойства" - и вы их увидите в отдельном окне.
Обратите внимание, что различные модули и непосредственно форма - это тоже свойства объекта метаданных.
В самом деле, в окне свойств они представлены текстом - названием модуля и гиперссылкой "Открыть".
Либо там есть свойство "Форма", при нажатии на кнопку "Открыть" которого открывается сама форма.
Представленные выше методы позволяют узнать, содержит ли какое-либо свойство объекта метаданных модуль, и
если да, то взаимодействовать с ним.
Для указания свойства можно использовать - строку - имя свойства, либо число - порядковый номер свойства, либо строку,
содержащую гуид - уникальный идентификатор свойства. Сами эти методы базируются на функциях внутреннего движка 1С,
которыми она сама пользуется, например чтобы перебрать все модули при синтакс-проверке конфигурации.
isPropModule - возвращает true, если свойство содержит модуль.
getModuleText - возвращает текст модуля. При поставке без исходного кода текста не будет. Окно редактора модуля не открывается.
setModuleText - позволяет установить текст модуля. Окно редактора модуля не открывается.
openModule - открывает редактор модуля и возвращает объект ITextWindow для взаимодействия с ним.
В отличии от открытия методом editProperty - всегда активизирует именно модуль.
Например, если свойство Форма, то editProperty("Форма") откроет вкладку на закладке формы, а
openModule("Форма") - на закладке модуля.
Короткий пример - открытие модуля управляемого приложения:
Код:
metadata.current.rootObject.openModule("МодульУправляемогоПриложения")
Пример подлиннее из mdNavigator.js - создает для каждого свойства-модуля Конфигурации отдельный макрос для открытия:
Код:
var mdObj = metadata.current.rootObject
var mdc = mdObj.mdclass
for(var i = 0, c = mdc.propertiesCount; i < c; i++)
{
var mdProp = mdc.propertyAt(i)
if(mdObj.isPropModule(mdProp.id))
{
var descr = mdProp.description.split('\n')[0].toLowerCase()
SelfScript.self["macrosОткрыть " + descr] = new Function('metadata.current.rootObject.openModule("' + mdProp.id + '")')
}
}
Здесь берется корневой объект текущей конфигурации, из его класса узнаем количество свойств, и перебираем их.
Если свойство - модуль, то получаем описание названия свойства и формируем макрос для его открытия.