Artifact 7cd9e1738d4bbe33fa0ccd6ed10ff061b2bcb796:
- File DevTools/formExplorer.js — part of check-in [13dce47a21] at 2013-02-24 10:13:53 on branch trunk — workaround - selectvalue.js не может выбрать нулевое значение (user: orefkov size: 2897) [more...]
$engine JScript $uname InternalFormExplorer $dname Исследование форм 1С $addin stdlib // Александр Орефков // Скрипт предназначен для вывода информации о составе контролов, свойствах и событиях // внутренних форм 1С stdlib.require("SelectValueDialog.js", SelfScript); var lastModalForm function onDoModal(dlgInfo) { if(openModalWnd == dlgInfo.stage && dlgInfo.form) lastModalForm = dlgInfo.form } events.connect(windows, "onDoModal", SelfScript.self) function getForm() { if(windows.modalMode == msNone) { var av = windows.getActiveView() return av ? av.getInternalForm() : null } return lastModalForm } function exploreActiveForm(withProps) { var form = getForm() if(!form) return // -1 - это сама форма for(var i = -1, k = form.controlsCount; i < k; i++) { var ctr = form.getControl(i) Message("Control #" + i + " name=" + ctr.name + " id=" + ctr.id, mInfo) if(withProps) { var props = ctr.props for(var idx = 0, cnt = props.count; idx < cnt; idx++) { var v = toV8Value(props.getValue(idx)) Message("\t" + props.propName(idx) + " = " + v.presentation() + " Тип=" + v.typeName(1) + " " + v.toStringInternal()); } } } } function enableTrace(enable) { var form = getForm() if(form) form.trapDialogEvents = enable } function macrosПоказатьКонтролыАктивнойФормы() { exploreActiveForm(false) } function macrosПоказатьКонтролыАктивнойФормыCоСВойствами() { exploreActiveForm(true) } function macrosНачатьОтслеживаниеСобытийАктивнойФормы() { enableTrace(true) } function macrosЗавершитьОтслеживаниеСобытийАктивнойФормы() { enableTrace(false) } function macrosПоказатьСвойстваКонтрола() { var form = getForm() if(!form) { MessageBox("Нет активной формы") return } var vl = v8New("СписокЗначений") vl.Add(-1 + 2, "Форма") for(var i = 0, k = form.controlsCount; i < k; i++) { var name = form.getControl(i).name if(!name.length) name = "" + i vl.Add(i + 2, name) // SelectValueDialog не дает выбрать значение 0, поэтому сдвинем все на 2 } var dlg = new SelectValueDialog("Укажите контрол", vl); if(dlg.selectValue()) form.getControl(dlg.selectedValue - 2).props.activateProperty("Имя") }