67 67 А. отладочную печать
68 68 * JS <pre>Message(" varname <" + varname + ">")</pre>
69 69 * VB <pre>Message " varname <" + varname + ">"</pre>
70 70
71 71 Б. Непосредственную отладку скрипта
72 72 * в JS нужно написать в тексте <i>debugger</i>
73 73 * в VB нужно написать <i>stop</i>
74 +
75 +
76 +<hr><div id="d155e40e36c85df8"><i>24.08.2011 11:34:38 orefkov добавил:</i><br />
77 +Тут возник вопрос по поводу открытия файлов в Конфигураторе.<br>
78 +В объектной модели снегопата этого нет. Однако, вспомнив, как я открывал ert-шки в Конфигураторе 7ки в опенконфе, решил тряхнуть стариной и провернуть такой же финт ушами.
79 +
80 +А в опенконфе я их открывал просто - добавлял имя файла в начало MRU (это список недавно открываемых файлов, появляющийся в меню Файл) и посылал команду "Открыть нулевой файл из списка MRU".
81 +
82 +После десяти минут проб и ошибок в JS-Immediate, все получилось.
83 +
84 +Итак, по порядку
85 + * Список MRU лежит (сюрприз!!!) в профайле 1С по пути (еще сюрприз!!!) - "App/MRUFileList"
86 + * Этот список - обычный список значений, правда значения в нем не обычные.
87 + * С помощью ЗначениеВСтрокуВнутр разобрался, что там лежит, а с помощью
88 + ЗначениеИзСтрокиВнутр - смог создать нужное мне значение.
89 + * В этом значении главное - путь к файлу и какой-то гуид, очевидно обозначающий тип документа,
90 + который должен открывать этот файл. Для текстовых доков гуид прост - сплошные нули.
91 + Для других видов доков надо исследовать, перебирая значения из MRUFileList, и смотря на них
92 + через ЗначениеВСтрокуВнутр
93 + * Далее просто впихнул свое значение в начало списка, сохранил весь список в профайл,
94 + и послал нужную команду.
95 +
96 +Вот код:
97 +<verbatim>
98 +// Подготовим наше значение для MRU - списка
99 +var pathToFile = "c:\\test\\snegopat\\core\\std\\scripts\\0_global_context.js"
100 +var docKind = '00000000-0000-0000-0000-000000000000'
101 +var mruItem = ЗначениеИзСтрокиВнутр('{"#",36973550-6bbb-11d5-bf72-0050bae2bc79,\n' +
102 +'{1,\n' +
103 +'{"file://' + pathToFile + '",0},' + docKind + '}\n' +
104 +'}')
105 +
106 +// Получим текущий список MRU из настроек
107 +var mru = profileRoot.getValue("App/MRUFileList")
108 +// Если там уже есть наше значение, удалим его
109 +var hasInMru = mru.НайтиПоЗначению(mruItem)
110 +if(hasInMru)
111 + mru.Удалить(hasInMru)
112 +// Если список полон, удалим последний элемент
113 +if(mru.Количество() == 8)
114 + mru.Удалить(7)
115 +// Вставим значение для нашего файла в начало списка
116 +mru.Вставить(0, mruItem)
117 +// Сохраним MRU-список обратно в настройки
118 +profileRoot.setValue("App/MRUFileList", mru)
119 +// И зашлем команду
120 +var cmd = addins.byUniqueName("stdcommands").object
121 +cmd.Frame.RecentFile.getState()
122 +cmd.Frame.RecentFile.send(0)
123 +</verbatim>
124 +
125 +Вот так пытливый ум преодолевает преграды.
126 +
127 +ЗЫ: Для просмотра MRU использовался следующий код:
128 +<verbatim>
129 +var mru = profileRoot.getValue("App/MRUFileList")
130 +for(var i = new Enumerator(mru); !i.atEnd(); i.moveNext())
131 +{
132 + Message("v=" + ЗначениеВСтрокуВнутр(i.item().Значение), mExc3)
133 +}
134 +</verbatim>
135 +В просмотре профайла мне помогло scripts\devtools\pflview.js
136 +</div id="d155e40e36c85df8">