Имя: Пароль:
1C
 
Вытаскиваем содержимое синтакс-помощника 8.0 (типа будни)
0 Syntax
 
19.09.04
14:25
Используя WSH теоретически можно вытащить синтакс-помощник в текстовый файл, непонятно только зачем это надо... Ну наше дело - технологическое!

-----------------------------
Создаем обработку, в которой пишем:

Shell = Новый COMОбъект("WScript.Shell");
Shell.AppActivate("Конфигуратор - НазваниеКонфигурации");
   
Shell.SendKeys("^{N}");    //новый документ
Shell.SendKeys("^{HOME}");  //в начало списка - Текстовый Документ
Shell.SendKeys("{ENTER}"); //выбрать
   
Shell.SendKeys("^+{F1}"); //открыть синтакс-помощник
Shell.SendKeys("{HOME}"); //перейти на начало
   
Для н=1 По 100 Цикл
       
ОбработкаПрерыванияПользователя();

Shell.SendKeys("{DOWN}"); //следующая ветка
Shell.SendKeys("^(C)");   //скопировать строку в буфер
Shell.SendKeys("{ESC}");  //скрыть синтакс-помощник
Shell.SendKeys("^(V)");   //вставить строку в текст из буфера
Shell.SendKeys("^{END}"); //перейти в конец
Shell.SendKeys("{ENTER}");//перейти на следующую строку
Shell.SendKeys("^+{F1}"); //активировать синтакс-помощник
   
КонецЦикла;

Когда в 1С посылается слишком много нажатий клавиш, то Конфигуратор не успевает их обрабатывать и часть игнорирует. Следовательно цикл сбивается. Для борьбы с этим недугом можно вставить паузы после каждого нажатия:

Для к=1 По 1000 Цикл //пауза
   ОбработкаПрерыванияПользователя();    
КонецЦикла;

Теперь запускаем Конфигуратор и Предприятие.

В Конфигураторе открываем синтакс-помощник, раскрываем его весь (Ctrl-Shift-Серый плюс), ставим курсор на первую тему.

Переходим в Предприятие, запускаем обработку.

-----------------------
-----------------------
Аналогично можно вытащить содержимое тем:

Shell = Новый COMОбъект("WScript.Shell");
   
Shell.AppActivate("Конфигуратор - НазваниеКонфигурации");
   
Shell.SendKeys("^{N}");    //новый документ
Shell.SendKeys("{HOME}");  //в начало списка
Shell.SendKeys("{DOWN}"); //следующая
Shell.SendKeys("{DOWN}"); //следующая - Табличный документ
Shell.SendKeys("{ENTER}"); //выбрать
   
Shell.SendKeys("^+{F1}"); //открыть синтакс-помощник
Shell.SendKeys("{HOME}"); //перейти на начало
   
Для н=1 По 100 Цикл
       
ОбработкаПрерыванияПользователя();
       
Shell.SendKeys("{DOWN}"); //следующая ветка
Shell.SendKeys("{ENTER}"); //активировать ветку
Shell.SendKeys("^(C)");   //скопировать строку в буфер
Shell.SendKeys("{ESC}");  //скрыть синтакс-помощник
Shell.SendKeys("{ENTER}");  //войти в ячейку ТД
Shell.SendKeys("^(V)");   //вставить строку из буфера
Shell.SendKeys("{ENTER}");  //выйти из ячейки и перейти вправо
Shell.SendKeys("^+{F1}"); //активировать синтакс-помощник
Shell.SendKeys("{TAB}"); //перейти в окошко текста СП
Shell.SendKeys("^{A}"); //выделить все
Shell.SendKeys("^(C)");   //скопировать в буфер
Shell.SendKeys("{ESC}");  //скрыть синтакс-помощник
Shell.SendKeys("{ENTER}");  //войти в ячейку ТД
Shell.SendKeys("^(V)");   //вставить строку из буфера
Shell.SendKeys("{ENTER}");  //выйти из ячейки
Shell.SendKeys("{DOWN}"); //перейти на следующую строку
Shell.SendKeys("{HOME}"); //перейти в начало строки
Shell.SendKeys("^+{F1}"); //активировать синтакс-помощник
Shell.SendKeys("+{TAB}"); //перейти обратно в окошко веток
       
КонецЦикла;    
-----------------------------

Это все теория, подтвержденная парой экспериментов. На практике иногда бывают сбои, когда нажатия клавиш посылаются не в том порядке или не в Конфигуратор. Окончательную реализацию оставляю вам.
1 Kreal
 
20.09.04
10:09
Файл C:\Program Files\1cv8\bin\ru\shcntx.hbk является файлом синтаксис помощника. Если его расширение переименовать в zip, а затем WinRar - ом восстановить полученный архив, то мы получим архив c html. В нем правдо будут работать не все ссылки. В той же папке храняться еще подобные файлы. 1С умеет переходить между ними по ссылкам.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn