Программная работа с буфером обмена https://wonderland.v8.1c.ru/blog/programmnaya-rabota-s-buferom-obmena/ планируется в версии 8.3.24, а что делать если нужно получить доступ к данным буфера обмена в более ранних версиях платформы?
Для этого воспользуемся библиотекой внешних компонент VanessaExt которая является составной часть инструмента тестирования прикладных решений Vanessa Automation, одной из возможностей которой является взаимодействие с буфером обмена.
1. Создать внешнюю обработку «1С Буфер обмена».
Для тестового примера создадим внешнюю обработку, в которую добавим необходимый функционал для работы с текстом из буфера обмена, в качестве исходной базы данных можно использовать любую.
2. Скачать библиотеку VanessaExt.
Скачиваем актуальный релиз библиотеки по адресу https://github.com/lintest/VanessaExt/releases, (на момент написания заметки это 1.3.9.10), нас интересует файл AddIn.zip.
3. Добавить макет в обработку «1С Буфер обмена».
Добавляем файл AddIn.zip в качестве макета внешней обработки, тип макета «Двоичные данные»:
4. Добавить форму и команду «ТекстИзБуфераОбмена».
Добавляем форму обработки, в которой добавляем команду «ТекстИзБуфераОбмена» и перетаскиваем ее на форму.
5. Добавить переменные модуля.
В модуль формы добавляем область переменных и необходимые переменные:
#Область ОписаниеПеременных &НаКлиенте Перем ИдентификаторКомпоненты, ВнешняяКомпонента; #КонецОбласти
6. Добавить реквизит «МестоположениеКомпоненты».
В реквизиты формы добавим «МестоположениеКомпоненты», тип строка:
7. Обработчик «ПриСозданииНаСервере».
Для формы определяем обработчик «ПриСозданииНаСервере», со следующим кодом:
&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) МакетКомпоненты = РеквизитФормыВЗначение("Объект").ПолучитьМакет("VanessaExt"); МестоположениеКомпоненты = ПоместитьВоВременноеХранилище(МакетКомпоненты, УникальныйИдентификатор); КонецПроцедуры
8. Обработчик «ПриОткрытии».
Для формы определяем обработчик «ПриОткрытии», со следующим кодом:
&НаКлиенте Процедура ПриОткрытии(Отказ) ИдентификаторКомпоненты = "_" + СтрЗаменить(Новый УникальныйИдентификатор, "-", ""); ВыполнитьПодключениеВнешнейКомпоненты(Истина); КонецПроцедуры
9. Код подключения внешней компоненты.
В модуль формы добавим код для подключения внешней компоненты:
#Область СлужебныеПроцедурыИФункции &НаКлиенте Процедура ВыполнитьПодключениеВнешнейКомпоненты(ДополнительныеПараметры) Экспорт НачатьПодключениеВнешнейКомпоненты( Новый ОписаниеОповещения("ПодключениеВнешнейКомпонентыЗавершение", ЭтаФорма, ДополнительныеПараметры), МестоположениеКомпоненты, ИдентификаторКомпоненты, ТипВнешнейКомпоненты.Native); КонецПроцедуры &НаКлиенте Процедура ПодключениеВнешнейКомпонентыЗавершение(Подключение, ДополнительныеПараметры) Экспорт Если Подключение Тогда ВнешняяКомпонента = Новый("AddIn." + ИдентификаторКомпоненты + ".ClipboardControl"); ИначеЕсли ДополнительныеПараметры = Истина Тогда ОписаниеОповещения = Новый ОписаниеОповещения("ВыполнитьПодключениеВнешнейКомпоненты", ЭтаФорма, Ложь); НачатьУстановкуВнешнейКомпоненты(ОписаниеОповещения, МестоположениеКомпоненты); КонецЕсли; КонецПроцедуры #КонецОбласти
10. Обработчик команды «ТекстИзБуфераОбмена».
Добавим обработчик для команды «ТекстИзБуфераОбмена» на клиенте, со следующим кодом:
#Область ОбработчикиКомандФормы &НаКлиенте Процедура ТекстИзБуфераОбмена(Команда) ОписаниеОповещения = Новый ОписаниеОповещения("ПолученТекстБуфераОбмена", ЭтотОбъект); ВнешняяКомпонента.НачатьПолучениеТекст(ОписаниеОповещения); КонецПроцедуры &НаКлиенте Процедура ПолученТекстБуфераОбмена(Значение, ДополнительныеПараметры) Экспорт Сообщить(Значение); КонецПроцедуры #КонецОбласти
Пробуем открыть внешнюю обработку в пользовательском режиме, в сообщении безопасности, разрешаем подключить исполнимые бинарные файлы, должно появится сообщение «Внешняя компонента успешно установлена», после этого жмем кнопку «Текст из буфера обмена»:
Примечание: В буфере обмена должен быть именно текст.
Дополнительная информация:
- Подробная информация как установить и подключить внешнюю компоненту, можно найти по адресу https://github.com/lintest/VanessaExt/blob/develop/Docs/README.md.
- Подробные примеры работы с внешней компонентной VanessaExt можно увидеть во внешней обработке VanessaExt.epf, скачать которую можно по ссылке https://github.com/lintest/VanessaExt/releases.
- Версия платформы: 1С:Предприятие 8.3 (8.3.21.1393).
- Исходные коды доступны в репозитории на GitHub.
- Желтый кот https://pprosalov.artstation.com/projects/rP8eJ
Хочу обратить ваше внимание на боковую панель, где представлены ссылки на интересные git репозитории для разработчиков 1С.