![]() |
|
v7: Работа с буфером обмена Windows | ☑ | ||
---|---|---|---|---|
0
AL CAPONE
18.05.17
✎
16:25
|
Задача: скопировать некоторый набор данных из документа 1с в буфер обмена Windows.
Прошаривание форумов дало следующие результаты: метод №1: objHTM = CreateObject("htmlfile"); Текст = "Помощь в 1С"; Сообщить("= " + Текст); objHTM.ParentWindow.ClipboardData.Setdata("Text",Текст); Текст = objHTM.ParentWindow.ClipboardData.GetData("Text"); Сообщить("= " + Текст); результат: не работает, присваивает переменной пустую строку метод №2: WshExtra = СоздатьОбъект("WshExtra.Clipboard"); WshExtra.Copy("Запись в буфер обмена"); Текст = WshExtra.Paste(); Сообщить("= " + Текст); результат: работает, но только в буфере самой 1с-ки, вставляет скопированный текст и в окно поиска 1с, и в новый текстовый документ 1с. Но когда пытаешь вставить к примеру в блокнот, то вставка произойдёт только в том случае, если ранее в буфере обмена Windows ничего не было. Если буфер был не пуст, то в блокнот вставится то, что было в буфере до 1с-ки. метод №3: wsh=СоздатьОбъект("WScript.Shell"); //Скопировать текст wsh.SendKeys("^c"); // или так: wsh.SendKeys("^(C)"); //Вставить текст wsh.SendKeys("^v"); // или так: wsh.SendKeys("^(V)"); результат: непонятно, как применить, т.к. тут надо как-то умудриться заранее выделить копируемый текст, а он состоит из различных реквизитов документа с различными свободными добавками своего текста. Может у кого-нибудь получалось корректно работать с буфером обмена Windows через 1с ? |
|||
1
Масянька
18.05.17
✎
16:30
|
ClipBrd = СоздатьОбъект("HtmlFile");
ClipBrd.ParentWindow.ClipBoardData.SetData("Text", СокрЛП(Номенклатура.АртикулПрайс)); Правда, копируется одно поле. |
|||
2
Ёпрст
гуру
18.05.17
✎
16:33
|
||||
3
AL CAPONE
18.05.17
✎
17:05
|
(2)
у нас как раз релиз 2.5.0.5 но БуферОбмена - это его как какой объект создавать нужно ? Буфер = СоздатьОбъект("БуферОбмена"); не понимает |
|||
4
AL CAPONE
18.05.17
✎
17:06
|
(1)
SetData может и работает, но GetData ничего не возвращала у меня |
|||
5
Масянька
18.05.17
✎
17:08
|
(4) А ты проверь не в эске, а в ворде, например.
|
|||
6
Ёпрст
гуру
18.05.17
✎
17:08
|
(3) 3.2.4.3 поставь и не мучайся
|
|||
7
Масянька
18.05.17
✎
17:10
|
+ (5) Буфер-то зачем?
|
|||
8
AL CAPONE
19.05.17
✎
11:23
|
(5)
не работает всё равно, в буфере обмена Windows только то, что было там до выполнения метода Setdata. Ни в блокноте, ни в ворде также ничего нового. |
|||
9
AL CAPONE
19.05.17
✎
11:26
|
(6)
так всё таки, как правильно создать объект БуферОбмена ? Буфер = СоздатьОбъект("БуферОбмена") 1c не понимает. |
|||
10
AL CAPONE
23.05.17
✎
11:08
|
Вопрос актуален.
|
|||
11
Ёпрст
гуру
23.05.17
✎
11:09
|
(9) Обновить 1cpp.
Там всё работает |
|||
12
AL CAPONE
23.05.17
✎
15:42
|
(11)
По ссылке написано - метод работает на релизе 2.5 и позже. У нас релиз 2.5.0.5. В чём смысл обновления ? Нужно всего-то правильное название создаваемого объекта. |
|||
13
Ёпрст
гуру
23.05.17
✎
15:44
|
(12) На заборе еще и не то написано, 2.5 - древнее г.. мамонта.
|
|||
14
Ёпрст
гуру
23.05.17
✎
15:45
|
Зачем вы её используете, не ясно.
Она вам вообще, зачем ? |
|||
15
Mikhail Volkov
23.05.17
✎
16:07
|
А в 8-ке как? Текст извлеченный из HTML-файла нужно сунуть в буфер обмена, и сразу же извлечь из него. Чтобы тексте уже не было всякой хрени форматирования HTML, один текст остался.
|
|||
16
AL CAPONE
26.05.17
✎
14:33
|
(2)
установил 2.5.0.7 вместо 2.5.0.5. Буфер обмена отлично создаётся и работает. (6) а подскажите, установка 3.2.4.3 содержит в себе прошлые методы из 2.5.0.5 или придётся пересматривать весь код, юзающий 1cpp ? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |