Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

1c 8.3 и буфер обмена

1c 8.3 и буфер обмена
Я
   Alex unde
 
08.11.16 - 14:23
Привет. Задача следующая:
Обрезать символы при вставке из буфера обмена :)

При копировании данных из Excel методом Ctrl+C (ячейки) всегда скопированная строка содержит в конце символ переноса строки. Хочу при активации окна 1С обрабатывать буфер обмена и удалять конечный символ переноса строки и/или таб/пробел.

Варианты которые пришли в голову:
-Обработать форму поиска - не докопался до нее
-Обработать Ctrl+V - без каких-то dll-ок думаю не получится (по крайней мере, у меня не получилось и обработать, и не перебить саму вставку из буфера в нужное место)
-Обработать событие активации самой 1-ски.

Может есть решение у кого-то или идеи - подскажите :)
Спасибо!
 
 
   LevelUP
 
1 - 08.11.16 - 14:29
(0) может проще обрабатывать уже приОкончРедактирования в поле 1С?
   Alex unde
 
2 - 08.11.16 - 14:32
(1) Для примера, может быть поиск по номеру документа в форме списка (в одной из over дофига).
То есть в Excel скопировали номер - в 1С нажали Ctrl+F и Ctrl+V. То есть Никакого "При окончании редактирования" думаю не получится сделать..
   Alex unde
 
3 - 08.11.16 - 14:33
(0) согласен даже dll-ки навешать, но только грамотные, потому как сам их писать не шарю :(
Если есть проверенные - скиньте, пожалуйста, буду очень благодарен!
   DrShad
 
4 - 08.11.16 - 14:33
https://helpf.pro/faq/view/705.html

первая же ссылка по большой букве Я вверху
   Alex unde
 
5 - 08.11.16 - 14:36
(4) это понятно, вставить то его куда?)
   LevelUP
 
6 - 08.11.16 - 14:36
(1) ну если в поиске то да, не получится. Можно простенькое приложение на любом известном вам языке, пусть себе висит в автозагрузке и режет.
   TormozIT
 
7 - 08.11.16 - 14:39
Autohotkey поможет.
Простенький скрипт, написанный на Autohotkey.
Следит за изменениями буфера обмена и собирает текст, о чём выводит TrayTip.
При нажатии Win+Ctrl+V и Win+Shift+Insert записывает в буфер обмена всё, что насобирал, «отправляет» активному приложению Ctrl+V или Shift+Insert в соответствии с тем, что было нажато, и выходит.

#Persistent
SendMode InputThenPlay
;#NoTrayIcon

#SingleInstance force
#MaxThreadsPerHotkey 1
;Mouse required to hook WinKey
#Hotstring NoMouse

#KeyHistory 0


;Script Performance
#NoEnv

SetBatchLines, -1
ListLines Off
;SetFormat, IntegerFast, Hex

paste=+{Ins}
ClipboardType0=empty
ClipboardType1=text
ClipboardType2=non-text
ClipboardCaptureOn = 1
ClipboardsCaptured = 0
;ClipAcc =

Exit

#^v::
    paste=^v
#+Ins::
    ClipboardCaptureOn = 0
    Clipboard := ClipAcc
    Send, %paste%
    TrayTip, Paste, Capture buffer cleared
    ExitApp

OnClipboardChange:
;    MsgBox clipboard:`n`n%clipboard%
    If ( A_EventInfo == 1 and ClipboardCaptureOn) {
    Critical 50
    If ClipboardsCaptured
        ClipAcc = %ClipAcc%`n%clipboard%
    Else
        ClipAcc = %clipboard%
    ClipboardsCaptured++
    Critical Off
    
    }
    TrayTip, Clipboard changed, % "ClipboardsCaptured: " . ClipboardsCaptured
                . "`nType:" . ClipboardType%A_EventInfo%
                . (A_EventInfo==1 ? "`nContents:`n " . clipboard : "")
                                         , 1, 1
;    ToolTip % "" ClipboardsCaptured . ": Clipboard changed`nType: " . ClipboardType%A_EventInfo% . "`nContents added: " . clipboard,
;    SetTimer, RemoveToolTip, 750
return

RemoveToolTip:
    SetTimer, RemoveToolTip, Off
    ToolTip
return
   Alex unde
 
8 - 08.11.16 - 15:10
(7) Спасибо.

Но я бы еще попросил, если есть идеи как без установки левого софта сделать??? максимум длл готов поставить(
   TormozIT
 
9 - 08.11.16 - 15:19
(8) Это невозможно при текущих возможностях платформы и известных мне планируемых.
   Alex unde
 
10 - 08.11.16 - 15:52
Больше нет идеи? Думаю оптимально было бы перехватить активацию окна 1С.
Пожалуйста!:(
 
 Рекламное место пустует
   MaxS
 
11 - 08.11.16 - 16:18
Попытка
    КОбъект = Новый COMОбъект("htmlfile");
    ДанныеБуфера = КОбъект.ParentWindow.ClipboardData.Getdata("Text");
Исключение
    ДанныеБуфера = "";
КонецПопытки;
   Alex unde
 
12 - 08.11.16 - 16:20
(11) Куда это вклеить?
   MaxS
 
13 - 08.11.16 - 16:48
(12) Это идея как в 1С получить буфер обмена. А куда вклеить - нужно думать. ))
   Alex unde
 
14 - 08.11.16 - 16:51
(13) буфер обработать не проблема, куча инфы по этому поводу. Проблема в инициации события обработки буфера
   TormozIT
 
15 - 08.11.16 - 18:14
(14) Не мучайся. Кроме (7) врядли что то сделаешь малыми затратами.
   Alex unde
 
16 - 08.11.16 - 18:17
(15) это прискорбно :(
   LevelUP
 
17 - 08.11.16 - 19:35
(16) может обработчик ожидания с кодом по изменению строки в буфере. Только конфу тогда снимать с замка.
   romix
 
18 - 08.11.16 - 20:35
Имхо нужно просить 1С чтобы отрезали конечный перевод строки при поиске по номеру, коду и так далее.

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует