Changes To Разработка скриптов Вы: nobody
Вход

Changes to "Разработка скриптов" between 2011-08-24 11:18:51 and 2011-08-24 11:34:38

    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">