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

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    1715    stopa85    12    

33

Алгоритм симплекс-метода для решения задачи раскроя

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

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

19.10.2023    4318    user1959478    50    

34

Регулярные выражения на 1С

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

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

1 стартмани

09.06.2023    7346    4    SpaceOfMyHead    17    

56

Модель распределения суммы по базе

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

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

1 стартмани

21.03.2022    7818    7    kalyaka    11    

44

Изменения формата файлов конфигурации (CF) в 8.3.16

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

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    4414    fishca    13    

36

Интересная задача на Yandex cup 2021

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

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    8794    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

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

31.08.2021    7716    dusha0020    8    

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

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

Первая ссылка
7. SatanClaws 143 09.09.09 13:42 Сейчас в теме
8. milkers 2859 10.09.09 13:45 Сейчас в теме
Каким образом ты фиксируешь нажатие ALT? Привел бы ты кусочек кода.
9. SatanClaws 143 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 143 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 157 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 1678 24.12.12 02:26 Сейчас в теме
А событие "ПриОткрытии" разве происходет не по факту открытия формы?..
15. SatanClaws 143 24.12.12 19:27 Сейчас в теме
(14) DrAku1a,
честно, в осьмерке плотно не программировал уже давно - основной код сейчас идет на 7.7++

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

Раз во времена исследования всех этих вещей я решил какую-то проблему - видимо, проблема все-таки имеет место быть.
Скорее всего, в снеговике ПередОткрытием() - аналог ПриОткрытии() из 7.7, а ПриОткрытии() - ПослеСозданияФормы() формекса.
16. Synoecium 777 16.10.14 06:18 Сейчас в теме
Шикарно (имею ввиду возможность назначить любые сочетания клавиш).
17. frkbvfnjh 785 24.04.15 16:13 Сейчас в теме
Красавчег, статья зачетная!
18. shard 279 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);
Оставьте свое сообщение