Всем привет!
Не сказать, что без этого вот прям не могу жить, но хотелось бы.
Суть: есть табличный документ, в него хочется вставить что-то. И вроде бы нет проблем - юзай контрл ц/в, и ни в чем себе не отказывай. Но хочется вставить не только значение в ячейку этого документа, но и область. И не хотелось бы при вставке области выходить за границы, и хотелось бы при вставке области обработать вставленное, и еще хотелось бы, чтобы только значения вставлялись, а не все и сразу.
Есть какие-нить приличные мысли на этот счет?
Что удалось найти самому:
1. Есть ВК с перехватом событий от клавиатуры. Все в основном заточены на ШК, т.е. перехватывают поток данных, а не конкретные сканкоды (в данном случае мне нужно перезватывать только Ctrl+C/V).
2. Есть ВК для ванессы, кто-то упомянул, что там есть перехват клавиш. В документации к компоненте я этого не нашел - нашел только эмуляцию их нажатия.
Больше ничего не нашел, другие мысли в голову не пришли.
Да, можно строго-настрого наказать пользователю не вставлять области, но ты пойди и накажти строго-настрого, а я на тебя погляжу )))
Не сказать, что без этого вот прям не могу жить, но хотелось бы.
Суть: есть табличный документ, в него хочется вставить что-то. И вроде бы нет проблем - юзай контрл ц/в, и ни в чем себе не отказывай. Но хочется вставить не только значение в ячейку этого документа, но и область. И не хотелось бы при вставке области выходить за границы, и хотелось бы при вставке области обработать вставленное, и еще хотелось бы, чтобы только значения вставлялись, а не все и сразу.
Есть какие-нить приличные мысли на этот счет?
Что удалось найти самому:
1. Есть ВК с перехватом событий от клавиатуры. Все в основном заточены на ШК, т.е. перехватывают поток данных, а не конкретные сканкоды (в данном случае мне нужно перезватывать только Ctrl+C/V).
2. Есть ВК для ванессы, кто-то упомянул, что там есть перехват клавиш. В документации к компоненте я этого не нашел - нашел только эмуляцию их нажатия.
Больше ничего не нашел, другие мысли в голову не пришли.
Да, можно строго-настрого наказать пользователю не вставлять области, но ты пойди и накажти строго-настрого, а я на тебя погляжу )))
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2)
ПриВставкеИзБуфераОбмена(Значение, СтандартнаяОбработка) ^
Данное событие есть у каждой управляемой формы + глобальное в модуле приложения
Событие срабатывает, если пользователь, находясь на форме, делает вставку из буфера (Ctrl+V) картинки или файлов. К сожалению только такие данные приводят событие в действие
Увы и ах...
Данное событие есть у каждой управляемой формы + глобальное в модуле приложения
Событие срабатывает, если пользователь, находясь на форме, делает вставку из буфера (Ctrl+V) картинки или файлов. К сожалению только такие данные приводят событие в действие
(6) Ну может кто готовую ВК порекомендует. Сейчас в интернетах все сложнее искать стало, ибо инфы дофига, при том старая инфа и не отображается, а есть мысль, что кто-то когда-то все уже нарисовал.
Вооще, если перепилить функционал на ХТМЛ+джаваскрипт, то там как раз проблем с перезватом клавиш нет. Цепляешься к кейдаун и делай, что хошь. Странно, что 1С-неги держат своих разрабов за дебилов, которым такое доверять нельзя...
Вооще, если перепилить функционал на ХТМЛ+джаваскрипт, то там как раз проблем с перезватом клавиш нет. Цепляешься к кейдаун и делай, что хошь. Странно, что 1С-неги держат своих разрабов за дебилов, которым такое доверять нельзя...
(8) Свою - не проблема, просто юзеры жмут свой Контр+Ц/В, и их (комбинации) не погасить. Ну можно ридонли сделать, тогда при вводе данных придется окно открывать при обработке расшифровки, а тогда первая кнопка теряется, что тоже плохо.
ЗЫ: для юзеров 1С тут стала типа экселем. Да, подход не супер, но и не самый плохой. Исторически устоявшийся. Простым решением было бы именно перехватить эти два хоткея. 1С это делать не дает, она просто вызывает "при изменении области" по факту вставки, а там что угодно быть может. В итоге код, который будет "бороться с дураком", выльется в отдельный продукт по своему объему....
ЗЫ: для юзеров 1С тут стала типа экселем. Да, подход не супер, но и не самый плохой. Исторически устоявшийся. Простым решением было бы именно перехватить эти два хоткея. 1С это делать не дает, она просто вызывает "при изменении области" по факту вставки, а там что угодно быть может. В итоге код, который будет "бороться с дураком", выльется в отдельный продукт по своему объему....
(10)
Но, тем не менее, есть ли у уважаемых разрабов 1С какие-то припасенные тузы в рукаве? А то я уже разобрался с кодом на С++, но надежда не угасает.
ЗЫ: Код, кстати, весьма прост.
ЗЫЗЫ: Да, да, все на 99% скопипащено )))
со времёнт Корвета
Я таким сочетанием пользовался во вмемена паскаля на 486-х компах. Сейчас уже как-то давненько переехал того не замечая на С/V.
Но, тем не менее, есть ли у уважаемых разрабов 1С какие-то припасенные тузы в рукаве? А то я уже разобрался с кодом на С++, но надежда не угасает.
ЗЫ: Код, кстати, весьма прост.
ЗЫЗЫ: Да, да, все на 99% скопипащено )))
Прикрепленные файлы:
(12)
Скорее всего придется сделать через ВК, ну или переехать на JS, что уже началось, но может затянуться на неопределенное время.
И из неё кидать в 1с, куда придумайте, регистр и т.д.
Минусы - придется установить этот (или аналогичный) софт на всех компах юзеров, которые работают с формой. И как-то триггерить, что форма открыта, что она активна, да и в этой форме перехват нужен только для поля ТД, что делает задачу еще несколько сложнее, ибо понять, что нажали на поле ТД и установился режим редактирования я могу, а вот понять, что я покинул это поле и пытаюсь вставить куда-то еще - не особо.
Скорее всего придется сделать через ВК, ну или переехать на JS, что уже началось, но может затянуться на неопределенное время.
(1) Можно попробовать обойтись без перехвата.
Держишь два табличных документа. Один оригинал, второй редактируется, для него срабатывает изменение области. Сравниваешь новое с неизменным оригиналом и формируешь результат. Копируешь результат в два документа...
Держишь два табличных документа. Один оригинал, второй редактируется, для него срабатывает изменение области. Сравниваешь новое с неизменным оригиналом и формируешь результат. Копируешь результат в два документа...
(1) А если сделать форму табличного документа с 2 командами "Копировать" и "Вставить" и на эти команды повесить сочетания клавиш со своими обработчиками, или же табличные документы открываются непосредственно "файл - открыть"?
(18) Чета эту тему подняли издревле. Но проблема кнопок в том, что Ctrl+V не перехватывается и вставляет в табличный документ весь тот мусор с форматированием и прочим, который был в буфере. Т.е. ты можешь в значения числовые вставить текст. При том и все соседние поля справа и внизу страдают. Да, есть область, в которую вставляется этот текст, но рисовать табличные документы только для вставки - это пользователь не поймет. Пока просто обрабатываю вставленное и если там фигня, то нулями забиваю и форматирование восстанавливаю, но это такое себе костыление. А хотелось бы просто перехватить кнопку. В Веб-поле это все прекрасно перехватывается.
Может поможет: Внешняя обработка перехват введенных данных с клавиатуры...
На обычных формах (х86)
На обычных формах (х86)
Прикрепленные файлы:
KeyboardHook.epf
Вот кстати тоже с таким столкнулся, но у меня история куда прозаичнее, есть Excel в котором работает производство и делает свои расчеты, а в 1с переносят данные в документ через функционал "заполнить из внешнего файла" и все чин чином работало с новым Excel, копировал вставил=) а вот при работе со старым Excel, воткнулся в затык с кодировками. Из старого excel копируется только по одной ячейке или через "режим специальной вставки - текст в формате юникод". 1С явно ожидает данные в определенном формате для разделения по ячейкам, а как перехватить и посмотреть что там внутри не пойму.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот