Работа с буфером обмена до 1С 8.3.24

26.01.25

Разработка - Инструментарий разработчика

Только рабочие функции для работы с буфером обмена. Данную публикацию делаю отчасти как шпаргалку для себя, но наверняка она пригодится кому-нибудь еще.

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Работа с буфером обмена:
.epf 9,16Kb
3
3 Скачать (1 SM) Купить за 1 850 руб.

Если ваша платформа или режим совместимости еще не достигли версии 8.3.24, то взаимодействовать с буфером обмена придется с использованием спец. средств.

 

Вариант 1.

 

 
 Может не работать в RDP из-за настроек безопасности

 

 
 Получение текста из буфера обмена

 

Функция ПрочитатьИзБуфера() Экспорт
	
    htmlfile = Новый COMОбъект("htmlfile");
    Результат = htmlfile.ParentWindow.ClipboardData.Getdata("Text");
    htmlfile = Неопределено;
    
    Возврат Результат;
	
КонецФункции

 

 
 Копировать текст в буфер обмена

 

&НаКлиенте
Процедура КопироватьВБуфер(Текст) 
	
    HTML = Новый COMОбъект("htmlfile");
    HTML.parentWindow.ClipboardData.setData("Text", Текст, "mytext");
    HTML = Неопределено;
		
КонецПроцедуры

 

 

Вариант 2.

Командная строка PowerShell

 
 Получение текста из буфера обмена

 

 
 Копировать текст в буфер обмена

 

 

Вариант 3.

Используется командная строка CMD

 
 Получение текста из буфера обмена

 

 
 Копировать текст в буфер обмена

 

 

Вариант 4.

Если нужно скопировать-вставить в поле ввода. Эмуляция нажатий Ctrl-C, Ctrl-V

 
 Вставить в поле ввода текст из буфера обмена

 

 
 Скопировать из поля ввода текст в буфер обмена

 

В публикации приложен файл обработки, в котором можно посмотреть демонстрацию разных способов, оценить скорость их работы и работоспособность вариантов в вашей реализации RDP.

 

 

Вариант 5.

Комбинированный способ. Сочетание скорости и надежности.
Вариант с PowerShell дает небольшую задержку меньше секунды. Попробуем сначала более быстрый способ.

 
 Получение текста из буфера обмена

 

 
 Копировать текст в буфер обмена

 

 

Выводы:

По универсальности и надежности побеждает способ с PowerShell. По простоте и скорости - первый способ с html. 

 

Пишите, какие еще варианты вам известны.

Проверено на следующих конфигурациях и релизах:

  • 1С:ERP Управление предприятием 2, релизы 2.5.17.122

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

12000 руб.

02.09.2020    171816    962    403    

924

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    14329    109    46    

108

Пакетная печать Печатные формы Инструментарий разработчика Программист Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

Инструмент, позволяющий абсолютно по-новому взглянуть на процесс разработки печатных форм. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и "прозрачность" разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    17288    43    15    

75

Инструментарий разработчика Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9360 руб.

17.05.2024    27286    96    48    

138

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

15000 руб.

10.11.2023    11907    45    27    

67

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Платные (руб)

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    191247    1152    0    

920

Инструментарий разработчика Программист 8.3.14 Россия Платные (руб)

Расширение для конфигурации “Конвертация данных 3”. Добавляет подсветку синтаксиса, детальную контекстную подсказку, глобальный поиск по коду.

20000 руб.

07.10.2021    18090    7    32    

42

Инструментарий разработчика Платформа 1С v8.3 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Разработка Конструктор автоматизированных рабочих мест "Конструктор АРМ" реализована в виде расширения и является универсальным инструментом для создания АРМ любой сложности в пользовательском режиме.

3600 руб.

27.12.2024    1117    2    0    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 863 29.08.23 13:58 Сейчас в теме
"Операционная система: Не имеет значения" - я бы поспорил
PowerBoy; link_l; awk; sandr13; DrZombi; KoC_one; +6 Ответить
5. v3rter 01.09.23 12:32 Сейчас в теме
(1) Да, Вариант 3 - Эмуляция нажатий Ctrl-C, Ctrl-V - чтобы заработала на новых Windows, возможно, придется повозиться с настройкой. У меня не везде работало, особенно там, где настроен сканер ш/к в режиме эмуляции клавиатуры
6. SerVer1C 863 01.09.23 13:28 Сейчас в теме
(5) Я про то, что в Linux COM-объекты не работают.
PowerBoy; link_l; OLDMVN; v3rter; +4 Ответить
10. Serg2000mr 764 02.09.23 00:21 Сейчас в теме
(1) Вы правы, исправил.
2. DrZombi 302 30.08.23 09:46 Сейчас в теме
Нет описания работы с буфером средствами языка 1с... печалько
А с учетом перехода на линуксы, статья устарела
link_l; sandr13; +2 Ответить
3. DrZombi 302 30.08.23 09:48 Сейчас в теме
(2) вот статейка, какой тут не достает
https://infostart.ru/1c/articles/1887193/
7. Serg2000mr 764 01.09.23 23:43 Сейчас в теме
(3) Я как раз после прочтения той статьи свою написал. Платформа 8.3.24 находится в тестовом статусе.
Емельянов Алексей; DrZombi; sandr13; +3 Ответить
14. DrZombi 302 04.09.23 06:14 Сейчас в теме
(7) Готовьтесь, будете переписывать :)
9. Serg2000mr 764 02.09.23 00:20 Сейчас в теме
(2) Можете дополнить вариантом, который будет на линуксах работать?
DrZombi; sandr13; +2 Ответить
15. DrZombi 302 04.09.23 06:15 Сейчас в теме
(9) Конечно, сейчас по началу мало кто на линукс сел, но всех обязывают (типо импорто-замещение)... Как по мне Линукс тоже импортный ;)
Serg2000mr; +1 Ответить
4. v3rter 01.09.23 12:28 Сейчас в теме
Если требуется только поместить текстовую информацию в буфер обмена, то есть и 4-й способ:

ПутьВременногоФайла = ПолучитьИмяВременногоФайла("txt");
//...
//записываем в файл информацию для буфера обмена и закрываем файл
//...
КомОбъект = Новый COMОбъект("WScript.Shell");
КомОбъект.Run("%comspec% /c type """+ПутьВременногоФайла+""" | clip & del """+ПутьВременногоФайла+"""", 0,0);
КомОбъект = Неопределено;
5-й, 6-й и 7-й способы: через объект InternetExplorer.Application, вспомогательную dll или через вспомогательное "ПолеHTMLДокумента":
https://infostart.ru/1c/tools/16800/
Емельянов Алексей; sandr13; +2 Ответить
8. Serg2000mr 764 02.09.23 00:18 Сейчас в теме
(4)
ie = Новый COMОбъект("InternetExplorer.Application");
	ie.navigate("about:blank");
	Док = ie.document;
	Док.parentWindow.ClipboardData.SetData("Text", ЧтоКопировать);

Не заработало - ошибка: Метод объекта не обнаружен SetData

ПолеHTMLДокумента - способ для обычных форм.

Вспомогательные dll - знаю несколько, но обычно они не вызывают особого доверия у программистов, и их стараются избегать.
11. Serg2000mr 764 02.09.23 02:02 Сейчас в теме
(4) способ с %comspec% - вместо 0.3 сек с PowerShell работает за 0.1 сек. Но ваш вариант имеет ограничение - нужно экранировать спец.символы. Дополнил статью правильным вариантом. Убедился, что писал статью не зря - в интернете много разбросанной, устаревшей или непроверенной информации. Надеюсь, что кому-то поможет.
17. Емельянов Алексей 167 16.04.24 08:52 Сейчас в теме
(4)
ПутьВременногоФайла = ПолучитьИмяВременногоФайла("txt");
//...
//записываем в файл информацию для буфера обмена и закрываем файл
//...
КомОбъект = Новый COMОбъект("WScript.Shell");
КомОбъект.Run("%comspec% /c type """+ПутьВременногоФайла+""" | clip & del """+ПутьВременногоФайла+"""", 0,0);
КомОбъект = Неопределено;


Ваш метод заработал, а метод PowerShell из поста нет.
Спасибо
12. maxlenium 36 02.09.23 12:56 Сейчас в теме
Кто-нибудь знает решение для мобильного приложения на android?
16. Емельянов Алексей 167 16.04.24 07:08 Сейчас в теме
Спасибо. Отличная статья, где собраны различные варианты.

Мне вот этот для парсинга вебстраниц не зашел:

Функция ПрочитатьИзБуфера() Экспорт
	
    htmlfile = Новый COMОбъект("htmlfile");
    Результат = htmlfile.ParentWindow.ClipboardData.Getdata("Text");
    htmlfile = Неопределено;
    
    Возврат Результат;
	
КонецФункции
Показать


&НаКлиенте
Процедура КопироватьВБуфер(Текст) 
	
    HTML = Новый COMОбъект("htmlfile");
    HTML.parentWindow.ClipboardData.setData("Text", Текст, "mytext");
    HTML = Неопределено;
		
КонецПроцедуры



Я копировал текст с карточки маркетплейса и потом с помощью регулярных выражений
RegExp = New COMОбъект("VBScript.RegExp");
вытаскивал нужную информацию. Так вот парадокс, когда копируешь этим методом в буфер, то регулярное выражение не находит искомый текст, когда руками Ctrl+C и Ctrl+V то находит.

Видимо какая-то своеобразная кодировка у этого метода.
Оставьте свое сообщение