gifts2017

Удобство разработки в 8.2, тонкий клиент.

Опубликовал cruse в раздел Программирование - Практика программирования

Приглашение к разговору о комфортной работе в конфигураторе.

 

Операции отладки запросов, кода встречаются очень часто.  Например, каждые 1-5 строк кода проходят проверку в отладчике, а средняя конфигурация содержит от нескольких тысяч таких строк. Большая часть запросов предварительно проверяются в консоли запросов. Вот некоторые приемы позволяющие внести удобство в процесс создания управляемого приложения на платформе 8.2:

1. Запуск консоли запросов:

 

Консоль запросов на текущий момент может быть запущена только в режиме обычного приложения. В конфигураторе Сервис-Параметры-Запуск 1С:Предприятия устанавим галочку напротив «Толстый клиент (обычное приложение). При необходимости выносим на командную панель команду запуска 1С без отладки. Теперь по этой кнопке можно будет запустить 1С, а там консоль запросов. При этом параллельно отлаживать тонкий клиент. Если изменения не касаются структуры базы, то и закрывать обычное приложение не обязательно, можно просто ответить конфигуратору "обновить динамически".

2. Запуск отладки для тонкого клиента:

Однако в результате такой операции становиться не доступным запуск отладки в режиме тонкого клиента по горячей клавише (F5). Не знаю почему, но и раньше использование F5 у меня не пользовалось популярность. Однако есть способ быстро запустить отладку с помощью программы AutoHotKey. Эта программа позволяет по установленному в ней скрипту «отлавливать» нажатие клавиш с клавиатуры, мыши, джойстика и с эмитировать какие-либо другие нажатия.

Примечание: Мы могли бы эмитировать, например, alt-c - меню сервиса, потом пара нажатий в лево, пара вниз, вправо и ввод. Работает быстро , незаметно, как родное. Только одно но, в зависимости от того где находишься в конфигураторе состав меню меняется и не понятно сколько точно раз влево надо отойти, чтоб попасть на меню "Отладка". А своей комбинации это меню не имеет.

Поэтому я вывел кнопку запуска тонкого клиента прямо в главном меню, перед меню "Файл". Нажимаем правой кнопкой по главному меню и выбираем настроить, когда откроется окно настройки, на закладке "команды" в пункте "все действия" находим кнопку и просто перетаскиваем ее в главное меню перед файл. Теперь запуск тонкого клиента с клавиатуры будет всегда срабатывать по нажать+отпустить alt, нажать ввод.

Вот скрипт AutoHotkey, который делает это по Control+Правая кнопка мыши.

 

#SingleInstance force

#InstallKeybdHook

#InstallMouseHook

#NoEnv

SendMode, Input

 

SetTimer, KeepRunning

return

 

KeepRunning:

 ;

 ; Запускать скрипт только когда приложение активно

 ;

 

 ; Получить имя процесса для активного окна (например, Notepad.exe) 

 

WinGet, szProcessName, ProcessName, A

 

if szProcessName = 1cv8.exe

{

  Suspend, off

}

else

{

  Suspend, on

}

 

return

 

^RButton::Send {F7}{Alt Down}{Alt Up}{Enter}

 

Что в этом скрипте?  В первой части инициализация и проверка применимости, скрипт работает только в окне конфигуратора (в 8.2 это процесс 1cv8.exe). Вторая часть – последняя строчка, в которой перехватывается нажатие Control+Правая кнопка мыши и выполняется команда путем имитации нажатий на клавиатуре. F7 в начале последовательности нажатий сохраняет конфигурацию, чтоб не вылезали диалоги типа "Вы хотите обновить конфигурацию базы? Да/Нет". То есть получается такой "Турбо-запуск".

Теперь кликнув в любом месте конфигуратора правой мышью с зажатым контролом запуститься отладка в режиме тонкого клиента.

 

3. Окно свойств:

Окно свойств используется очень часто при редактировании реквизитов, полей формы и т.д. Особенно часто при редактировании макетов печатных форм. Стандартно для этого нужно встать на необходимый реквизит и нажать Alt+Enter или правая кнопка мыши, затем свойства. Двойной клик не всегда вызвает свойства элемента, а например, при клике на форме в дереве метаданных появляется окно редактирования формы. С помощью AutoHotKey сделаем так, что бы окно свойств вызывалось при нажатии левой кнопкой мыши с зажатым контролом (правая кнопка с контролом для отладчика). Для реализации этого добавим в скрипт еще строчку:

 

^LButton::Send {LButton}!{Enter}

 

Чтоб было понятно в скрипте символ "^" - Control, "!" - Alt, "+" - Shift. 

 

Полный список команд, которые у меня выполняются:

 

^LButton::Send {LButton}!{Enter} ; Вызывает окно свойств

!LButton::Send {LButton}!+{Enter} ; Вызывает окно "дополнительно", например, редактировать вхождение в подсистемы.

 

^RButton::Send {F7}{Alt Down}{Alt Up}{Enter} ; Запускает тонкий клиент

!RButton::Send {F7}^{F5} ; Запускает обычное приложения, например, для консоли запросов.

 

Т.е. левая кнопка для конфигуратора, правая для отладчика. Control - прямое действие, Alt - дополнительное.

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Андрей Д. (detec) 10.06.10 09:46
Плюс за креативность. Однако:

1) Если используется WSH, то будет работать только в XP.

2) жаль, что нет нормальных средств автоматизации рутинных действий в Конфигураторе 8-ки (насчёт 7.7 - не знаю, не работал) (((
2. cruse 10.06.10 10:46
(1) Не, WSH тут не используется, если надо что-то "припрограмить", то это можно делать прямо в скрипте. У меня тут по сути только используется Send, а можно свои функций писать. На форуме AutoHotkey выкладывали инструкцию как C# прикручивать. У меня все хозяйство пашет на Win7, глюков не обнаружил.

По поводу 2: Не хватает, согласен. Не паханное поле. Я например пока не знаю как сделать такую вещь. В УТ 11 логично сделали, что во всех списках первым идет номер документа, потом дата. Их ширина 10, 14 явно прописаны в свойствах. Это отличается от того, что создается по умолчанию. Таких правил порядком набирается. Хотелось бы иметь такой инструмент (может в виде отдельной ИБ), который перед выпуском клиенту проверит соответствие на прописанные правила. Ведь хочется, чтоб результат был чистым, без досадных косяков.
3. dushelov (Душелов) 10.06.10 10:56
>Консоль запросов на текущий момент может быть запущена только в режиме обычного приложения

Не совсем понятна эта фраза... Есть уже несколько консолей, которые прекрасно работают в управляемом приложении.
4. cruse 10.06.10 14:04
(3) Можно ссылочку для ознакомления :) И еще, есть ли в этих консолях редактирование запроса в конструкторе?
5. cruse 10.06.10 14:07
(3) Есть ли там редактирование запроса в конструкторе?
6. Гилев Евгений (coach) 10.06.10 17:40
(5) нужно консоль запускать в толстом клиенте управляемом приложении, тогда и будет конструктор доступен..
8. Алексей Хлызов (Kettle) 16.06.10 03:51
Ну почему, почему автор так ненавидит русский язык?
Товарищ, зачем мы ЭМИТИРУЕМ кнопки?! Не повлечёт ли это за собой падения биржи? Не проще ли их ИМИТИРОВАТЬ?

И есть одно "но" - автор не ставит "но" в кавычки в подобных оборотах! А ещё он ненавидит пунктуацию...

И, да, dushelov уже всё сказал...
9. cruse 16.06.10 10:30
(8) Спасибо, добрый человек!
10. Александр Орефков (orefkov) 16.06.10 11:02
(1)
2) жаль, что нет нормальных средств автоматизации рутинных действий в Конфигураторе 8-ки (насчёт 7.7 - не знаю, не работал) (((

Эх, отнюдь не от хорошей жизни бывшие продвинутые семорочники все пытаются AutoHotKey к 8ке прикрутить. Тяжело отвыкать от наркотиков.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа