Как перехватить Ctrl+C/V в окне 1С?

1. starik-2005 3238 17.01.25 11:31 Сейчас в теме
Всем привет!

Не сказать, что без этого вот прям не могу жить, но хотелось бы.

Суть: есть табличный документ, в него хочется вставить что-то. И вроде бы нет проблем - юзай контрл ц/в, и ни в чем себе не отказывай. Но хочется вставить не только значение в ячейку этого документа, но и область. И не хотелось бы при вставке области выходить за границы, и хотелось бы при вставке области обработать вставленное, и еще хотелось бы, чтобы только значения вставлялись, а не все и сразу.

Есть какие-нить приличные мысли на этот счет?

Что удалось найти самому:
1. Есть ВК с перехватом событий от клавиатуры. Все в основном заточены на ШК, т.е. перехватывают поток данных, а не конкретные сканкоды (в данном случае мне нужно перезватывать только Ctrl+C/V).
2. Есть ВК для ванессы, кто-то упомянул, что там есть перехват клавиш. В документации к компоненте я этого не нашел - нашел только эмуляцию их нажатия.
Больше ничего не нашел, другие мысли в голову не пришли.

Да, можно строго-настрого наказать пользователю не вставлять области, но ты пойди и накажти строго-настрого, а я на тебя погляжу )))
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 83 17.01.25 11:35 Сейчас в теме
3. starik-2005 3238 17.01.25 11:37 Сейчас в теме
(2)
ПриВставкеИзБуфераОбмена(Значение, СтандартнаяОбработка) ^

Данное событие есть у каждой управляемой формы + глобальное в модуле приложения

Событие срабатывает, если пользователь, находясь на форме, делает вставку из буфера (Ctrl+V) картинки или файлов. К сожалению только такие данные приводят событие в действие
Увы и ах...
4. nomad_irk 83 17.01.25 11:43 Сейчас в теме
(3) Это только обработчик события срабатывает, а сами данные таки вставляются.
Возможно, в новых версиях платформы, обработчик будет и на другие MIME-типы срабатывать
5. starik-2005 3238 17.01.25 11:44 Сейчас в теме
(4) А мне как раз надо, чтобы данные не вставлялись, а чтобы я сам их вставил, пир том только туда, куда можно, а туда, куда нельзя, не вставил )
6. nomad_irk 83 17.01.25 11:45 Сейчас в теме
(5) выход один: просить об этом 1С и ждать реализации, остальное, ИМХО, - от лукавого :)
7. starik-2005 3238 17.01.25 11:49 Сейчас в теме
(6) Ну может кто готовую ВК порекомендует. Сейчас в интернетах все сложнее искать стало, ибо инфы дофига, при том старая инфа и не отображается, а есть мысль, что кто-то когда-то все уже нарисовал.

Вооще, если перепилить функционал на ХТМЛ+джаваскрипт, то там как раз проблем с перезватом клавиш нет. Цепляешься к кейдаун и делай, что хошь. Странно, что 1С-неги держат своих разрабов за дебилов, которым такое доверять нельзя...
8. Sashares 33 17.01.25 12:11 Сейчас в теме
(7) А свою кнопку добавить не рассматривается?
В контекстное меню таб.дока, например.
9. starik-2005 3238 17.01.25 12:20 Сейчас в теме
(8) Свою - не проблема, просто юзеры жмут свой Контр+Ц/В, и их (комбинации) не погасить. Ну можно ридонли сделать, тогда при вводе данных придется окно открывать при обработке расшифровки, а тогда первая кнопка теряется, что тоже плохо.

ЗЫ: для юзеров 1С тут стала типа экселем. Да, подход не супер, но и не самый плохой. Исторически устоявшийся. Простым решением было бы именно перехватить эти два хоткея. 1С это делать не дает, она просто вызывает "при изменении области" по факту вставки, а там что угодно быть может. В итоге код, который будет "бороться с дураком", выльется в отдельный продукт по своему объему....
10. -AI- 17.01.25 14:12 Сейчас в теме
(9)
эти два хоткея

а я со времёнт Корвета, по привычке, чаще использую Ctrl/Shift-Ins
11. starik-2005 3238 17.01.25 15:45 Сейчас в теме
(10)
со времёнт Корвета
Я таким сочетанием пользовался во вмемена паскаля на 486-х компах. Сейчас уже как-то давненько переехал того не замечая на С/V.

Но, тем не менее, есть ли у уважаемых разрабов 1С какие-то припасенные тузы в рукаве? А то я уже разобрался с кодом на С++, но надежда не угасает.

ЗЫ: Код, кстати, весьма прост.
ЗЫЗЫ: Да, да, все на 99% скопипащено )))
Прикрепленные файлы:
12. user-z99999 78 17.01.25 16:03 Сейчас в теме
(1) Из описания понятно,
что нужен клавиатурный перехват (действий Копировать и Вставить) - отдельная программа (autoit).
И из неё кидать в 1с, куда придумайте, регистр и т.д.
13. starik-2005 3238 17.01.25 16:19 Сейчас в теме
(12)
И из неё кидать в 1с, куда придумайте, регистр и т.д.
Минусы - придется установить этот (или аналогичный) софт на всех компах юзеров, которые работают с формой. И как-то триггерить, что форма открыта, что она активна, да и в этой форме перехват нужен только для поля ТД, что делает задачу еще несколько сложнее, ибо понять, что нажали на поле ТД и установился режим редактирования я могу, а вот понять, что я покинул это поле и пытаюсь вставить куда-то еще - не особо.

Скорее всего придется сделать через ВК, ну или переехать на JS, что уже началось, но может затянуться на неопределенное время.
17. user_1936667 13.05.25 09:05 Сейчас в теме
(1) Можно попробовать обойтись без перехвата.
Держишь два табличных документа. Один оригинал, второй редактируется, для него срабатывает изменение области. Сравниваешь новое с неизменным оригиналом и формируешь результат. Копируешь результат в два документа...
user_2136019; VyacheslavShilov; +2 Ответить
18. DENSKR 15 13.05.25 14:12 Сейчас в теме
(1) А если сделать форму табличного документа с 2 командами "Копировать" и "Вставить" и на эти команды повесить сочетания клавиш со своими обработчиками, или же табличные документы открываются непосредственно "файл - открыть"?
19. starik-2005 3238 13.05.25 14:16 Сейчас в теме
(18) Чета эту тему подняли издревле. Но проблема кнопок в том, что Ctrl+V не перехватывается и вставляет в табличный документ весь тот мусор с форматированием и прочим, который был в буфере. Т.е. ты можешь в значения числовые вставить текст. При том и все соседние поля справа и внизу страдают. Да, есть область, в которую вставляется этот текст, но рисовать табличные документы только для вставки - это пользователь не поймет. Пока просто обрабатываю вставленное и если там фигня, то нулями забиваю и форматирование восстанавливаю, но это такое себе костыление. А хотелось бы просто перехватить кнопку. В Веб-поле это все прекрасно перехватывается.
user_2136019; VyacheslavShilov; +2 Ответить
14. Desere799 1121 17.01.25 16:53 Сейчас в теме
Может поможет: Внешняя обработка перехват введенных данных с клавиатуры...
На обычных формах (х86)
Прикрепленные файлы:
KeyboardHook.epf
15. starik-2005 3238 17.01.25 16:58 Сейчас в теме
(14)
Внешняя обработка
Погляжу.
16. KOTzilla 23 12.05.25 12:53 Сейчас в теме
Вот кстати тоже с таким столкнулся, но у меня история куда прозаичнее, есть Excel в котором работает производство и делает свои расчеты, а в 1с переносят данные в документ через функционал "заполнить из внешнего файла" и все чин чином работало с новым Excel, копировал вставил=) а вот при работе со старым Excel, воткнулся в затык с кодировками. Из старого excel копируется только по одной ячейке или через "режим специальной вставки - текст в формате юникод". 1С явно ожидает данные в определенном формате для разделения по ячейкам, а как перехватить и посмотреть что там внутри не пойму.
Для отправки сообщения требуется регистрация/авторизация

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот