Полноценные шорткаты

08.09.09

Разработка - Математика и алгоритмы

Никогда не возникало желания в 1С8 повесить какое-либо действие на шорткат Shift+Enter, или Ctrl+PgDn?

А так же еще немного из личного опыта с осьмеркой...

1. Итак, шорткаты.

В общем-то, ничего сложного там нет - ЗначениеВСтрокуВнутр() и вдумчивое покурить результат минут 10.

Лучше я сразу напишу, как его создать - произвольный шорткат

Модификатор = 0;
Если Альт Тогда Модификатор = Модификатор + 16; КонецЕсли;
Если Ктрл Тогда Модификатор = Модификатор + 8; КонецЕсли;
Если Шифт Тогда Модификатор = Модификатор + 4; КонецЕсли;

стрВнутр = "{""#"",69cf4251-8759-11d5-bf7e-0050bae2bc79,1," + Символы.ПС + "{0," + КодКлавиши + "," + Модификатор + "}" + Символы.ПС + "}";

//Символы.ПС, кстати говоря, кажется и не нужны даже - вроде и без них должно работать.


Шорткат = ЗначениеИзСтрокиВнутр(стрВнутр);


Дальше остается только пояснить про КодыКлавиш - и полученный результат можно скармливать Кнопка.СочетаниеКлавиш

Но там тоже ничего сложного - Enter=13,  Esc=27 и так далее.

Кстати, можно повесит шорткат даже, например, на Alt+Shift - только нужно и в модификаторы прописать 20 и в КодКлавиши прописать, 18(это Alt) или 16(это Shift).

Единственное - стоит помнить, что сначала шорткаты перехватывает Винда. Так что на Альт-Ф4 ничего повесить не получится.

 

2. Если у вас есть форма, размер которой рассчитывается каждый раз после ее открытия, то наверняка замечали, что 1Ска запоминает размер формы от прошлого открытия и в качестве базового берет именно его. Что просто жутко мешается.

Первое, что приходит в голову - в ПередОткрытием() написать что-то вроде ЭтаФорма.ИмяСохраняемогоОкна = Новый УникальныйИдентификатор;

Однако, есть способ проще - достаточно до показа формы обратиться на запись к ее реквизиту Высота или Ширина.

Т.е. пишем в ПередОткрытием()/ПриОткрытии() Форма.Высота = Форма.Высота - и все работает как надо.

PS но отсутствие штатного события ПослеОткрытия() несколько... удручает :-/

 

Upd по пункту 1:

BackSpase 8
Tab 9
Enter 13
Shift 16
Ctrl 17
Alt 18
CapsLock 20
Esc 27
Space 32
PgUp 33
PgDn 34
End 35
Home 36
Left 37
Up 38
Right 39
Down 40
Ins 45
Del 46
LWinKey 91
RWinKey 92
AppKey 93
Num0 96
Num1 97
Num2 98
Num3 99
Num4 100
Num5 101
Num6 102
Num7 103
Num8 104
Num9 105
NumMultiply 106
NumAdd 107
NumSubtract 109
NumDecimal 110
NumDivide 111
F1 112
F2 113
F3 114
F4 115
F5 116
F6 117
F7 118
F8 119
F9 120
F10 121
F11 122
F12 123
ScrlLock 145
NumLock 144
Semi 186
Add 187
Comma 188
Minus 189
Dot 190
Slash 191
Tilde 192
LSqrBrckt 219
Backslash 220
RSqrBrckt 221
Apostrophe 222

См. также

Математика и алгоритмы Программист Платформа 1C v8.2 Конфигурации 1cv8 Россия Абонемент ($m)

На написание данной работы меня вдохновила работа @glassman «Переход на ClickHouse для анализа метрик». Автор анализирует большой объем данных, много миллионов строк, и убедительно доказывает, что ClickHouse справляется лучше PostgreSQL. Я же покажу как можно сократить объем данных в 49.9 раз при этом: 1. Сохранить значения локальных экстремумов 2. Отклонения от реальных значений имеют наперед заданную допустимую погрешность.

1 стартмани

30.01.2024    3208    stopa85    12    

38

Математика и алгоритмы Бесплатно (free)

Разработка алгоритма, построенного на модели симплекс-метода, для нахождения оптимального раскроя.

19.10.2023    7618    user1959478    52    

36

Математика и алгоритмы Разное Платформа 1С v8.3 Конфигурации 1cv8 Россия Абонемент ($m)

Расширение (+ обработка) представляют собою математический тренажер. Ваш ребенок сможет проверить свои знание на математические вычисление до 100.

2 стартмани

29.09.2023    3147    maksa2005    8    

26

Математика и алгоритмы Инструментарий разработчика Программист Платформа 1С v8.3 Мобильная платформа Россия Абонемент ($m)

Что ж... лучше поздно, чем никогда. Подсистема 1С для работы с регулярными выражениями: разбор выражения, проверка на соответствие шаблону, поиск вхождений в тексте.

1 стартмани

09.06.2023    10932    7    SpaceOfMyHead    18    

61

Математика и алгоритмы Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Три задачи - три идеи - три решения. Мало кода, много смысла. Мини-статья.

03.04.2023    4401    RustIG    9    

25

Механизмы платформы 1С Математика и алгоритмы Программист Платформа 1С v8.3 Россия Бесплатно (free)

В статье анализируются средства платформы для решения системы линейных уравнений в 1С. Приводятся доводы в пользу некорректной работы встроенных алгоритмов, а значит потенциально некорректного расчета себестоимости в типовых конфигурациях.

23.11.2022    3567    gzharkoj    14    

25

Математика и алгоритмы Программист Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    9051    7    kalyaka    11    

44
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. tsd 105 08.09.09 18:04 Сейчас в теме
А зачем оно, штатное событий ПослеОткрытия()? чего хорошего может дать?
2. SatanClaws 146 08.09.09 19:13 Сейчас в теме
(1) Например, создание элементов формы до ее открытия ведет себя достаточно глючно в случаях, когда необходимо исходную форму увеличить по высоте/ширине.

Конечно, как вариант: сделать исходную форму максимальных размеров и потом только уменьшать ее - но это не выход, на мой взгляд.
3. Serj1C 483 09.09.09 06:51 Сейчас в теме
Шорткаты понравились! +
4. artbear 1563 09.09.09 08:27 Сейчас в теме
(0) В описании/названии отдельно выдели, что для 8 или 8.1
Сразу и не поймешь, для какой платформы
5. Evg-Lylyk 4842 09.09.09 12:37 Сейчас в теме
А где коды посмотреть для стрелок (left, right и т.д.) например?
6. Altair777 645 09.09.09 12:57 Сейчас в теме
(5) В Гугле :-) Строка поиска
коды клавиш клавиатуры

Первая ссылка
7. SatanClaws 146 09.09.09 13:42 Сейчас в теме
8. milkers 2920 10.09.09 13:45 Сейчас в теме
Каким образом ты фиксируешь нажатие ALT? Привел бы ты кусочек кода.
9. SatanClaws 146 10.09.09 18:15 Сейчас в теме
(8) "Кстати, можно повесит шорткат даже, например, на Alt+Shift - только нужно и в модификаторы прописать 20 и в КодКлавиши прописать, 18(это Alt) или 16(это Shift)."

на пальцах - Альт должен участвовать и как модификатор и как код клавиши.
Причем, в цитируемом примере 2 шортката (по коду клавиши Альта и по коду клавиши Контрола) будут вести себя немного по разному - в одном случае для его срабатывания будет необходимо нажать сначала Альт, затем Ктрл; во втором - в обратной последовательности.
10. PRoman 73 13.09.09 14:40 Сейчас в теме
как-то сумбурно. Ничё не понял.
11. aquakosh 16.09.09 10:28 Сейчас в теме
> но отсутствие штатного события ПослеОткрытия() несколько... удручает :-/
Уже проходили. См. ОбновлениеОтображения().
12. SatanClaws 146 16.09.09 11:05 Сейчас в теме
(11) только ОбновлениеОтображения() отрабатывает весьма и весьма часто.
Т.е. делаем флаг "ПервоеОткрытие", который будет изменен при первом обновлении отображения и т.д. - но принципиально метод не лучше, чем
ПодключитьОбработчикОжидания("ПослеОткрытия", 0.1, Истина);
13. Serj1C 483 10.09.11 17:49 Сейчас в теме
хочу добавить:

Функция БыстрыйВызов(Код, Alt=0, Control=0, Shift=0) Экспорт 
   Возврат ЗначениеИзСтрокиВнутр("{""#"",69cf4251-8759-11d5-bf7e-0050bae2bc79,1, 
      |{0,"+ Формат(Код, "ЧН=0; ЧГ=0") +","+ Формат(Alt*16+Control*8+Shift*4, "ЧН=0; ЧГ=0") +"} 
      |}"); 
КонецФункции 
prickly; kote; pvlunegov; +3 Ответить
22. pvlunegov 158 10.04.17 13:38 Сейчас в теме
(13) прекрасно работающее универсальное решение, работает в случае управляемых и обычных форм.
Апплодирую стоя! Виват победителям, вы помогли - спасли меня уже дважды!
Первый раз - на управляемых формах - 2 раз на обычных формах!

Кто не в курсе, сочетания клавиш для метода (13) можно посмотреть например здесь - http://jquery.page2page.ru/index.php5/%D0%9A%D0%BE%D0%B4%D1%8B_%D1%81%D0%B8%D0%BC%D0%B2%D0%BE­%D0%BB%D0%BE%D0%B2_%D0%B8_%D0%BA%D0%BB%D0%B0%D0%B2%D0%B8%D1%­88
14. DrAku1a 1745 24.12.12 02:26 Сейчас в теме
А событие "ПриОткрытии" разве происходет не по факту открытия формы?..
15. SatanClaws 146 24.12.12 19:27 Сейчас в теме
(14) DrAku1a,
честно, в осьмерке плотно не программировал уже давно - основной код сейчас идет на 7.7++

Но если сравнивать с 7.7, то ПриОткрытии() отрабатывает даже раньше, чем форма физически создается (под нее выделяется место в памяти и на ней создаются контроллы). Собственно, ради чего в FormEx-е есть события ПослеСозданияФормы() и ПослеОткрытия(). Первое отрабатывает, когда в памяти уже существуют все, что нужно; второе - уже после первичной отрисовки формы.

Раз во времена исследования всех этих вещей я решил какую-то проблему - видимо, проблема все-таки имеет место быть.
Скорее всего, в снеговике ПередОткрытием() - аналог ПриОткрытии() из 7.7, а ПриОткрытии() - ПослеСозданияФормы() формекса.
16. Synoecium 786 16.10.14 06:18 Сейчас в теме
Шикарно (имею ввиду возможность назначить любые сочетания клавиш).
17. frkbvfnjh 805 24.04.15 16:13 Сейчас в теме
Красавчег, статья зачетная!
18. shard 281 30.08.15 18:02 Сейчас в теме
Спасибо тебе, добрый человек!
19. Shootoff 16.10.15 10:22 Сейчас в теме
В 8.3 комбинация с Enter уже не работает.
Flashill; SamNeSvoy; +2 Ответить
20. Кузьмич 188 12.09.16 10:43 Сейчас в теме
(19) Работает.
БыстрыйВызов(13,,1);
21. proonec 17.02.17 17:04 Сейчас в теме
(19) Версия 8.3.8.2197
комбинация с Enter уже снова работает :)
23. Pupupu 15.08.18 05:46 Сейчас в теме
При редактировании ячейки табличной части документа (1С:Предприятие 8.2 (8.2.19.102)) шорткат не отрабатывает.
При работе с табличной частью документа (8.3) шорткат не работает с комбинацией БыстрыйВызов(40,,1);
Оставьте свое сообщение