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

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

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

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

первая же ссылка по большой букве Я вверху
5 Alex unde
 
08.11.16
14:36
(4) это понятно, вставить то его куда?)
6 LevelUP
 
08.11.16
14:36
(1) ну если в поиске то да, не получится. Можно простенькое приложение на любом известном вам языке, пусть себе висит в автозагрузке и режет.
7 TormozIT
 
гуру
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
8 Alex unde
 
08.11.16
15:10
(7) Спасибо.

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