Перейти к содержимому

1С Буфер обмена

1С Буфер обмена

Программная работа с буфером обмена 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 в качестве макета внешней обработки, тип макета «Двоичные данные»:

1С Буфер обмена - Макет
1С Буфер обмена — Макет

4. Добавить форму и команду «ТекстИзБуфераОбмена».

Добавляем форму обработки, в которой добавляем команду «ТекстИзБуфераОбмена» и перетаскиваем ее на форму.

5. Добавить переменные модуля.

В модуль формы добавляем область переменных и необходимые переменные:

#Область ОписаниеПеременных

&НаКлиенте
Перем ИдентификаторКомпоненты, ВнешняяКомпонента;

#КонецОбласти

6. Добавить реквизит «МестоположениеКомпоненты».

В реквизиты формы добавим «МестоположениеКомпоненты», тип строка:

1С Буфер обмена - МестоположениеКомпоненты
1С Буфер обмена — МестоположениеКомпоненты

7. Обработчик «ПриСозданииНаСервере».

Для формы определяем обработчик «ПриСозданииНаСервере», со следующим кодом:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	МакетКомпоненты = РеквизитФормыВЗначение("Объект").ПолучитьМакет("VanessaExt");
	МестоположениеКомпоненты = ПоместитьВоВременноеХранилище(МакетКомпоненты, УникальныйИдентификатор);
	
КонецПроцедуры

8. Обработчик «ПриОткрытии».

Для формы определяем обработчик «ПриОткрытии», со следующим кодом:

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ИдентификаторКомпоненты = "_" + СтрЗаменить(Новый УникальныйИдентификатор, "-", "");
	ВыполнитьПодключениеВнешнейКомпоненты(Истина);
	
КонецПроцедуры

9. Код подключения внешней компоненты.

В модуль формы добавим код для подключения внешней компоненты:

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ВыполнитьПодключениеВнешнейКомпоненты(ДополнительныеПараметры) Экспорт
	
	НачатьПодключениеВнешнейКомпоненты(
		Новый ОписаниеОповещения("ПодключениеВнешнейКомпонентыЗавершение", ЭтаФорма, ДополнительныеПараметры),
		МестоположениеКомпоненты, ИдентификаторКомпоненты, ТипВнешнейКомпоненты.Native); 
		
КонецПроцедуры	

&НаКлиенте
Процедура ПодключениеВнешнейКомпонентыЗавершение(Подключение, ДополнительныеПараметры) Экспорт
	
	Если Подключение Тогда  
		
		ВнешняяКомпонента = Новый("AddIn." + ИдентификаторКомпоненты + ".ClipboardControl");
		
	ИначеЕсли ДополнительныеПараметры = Истина Тогда
		
		ОписаниеОповещения = Новый ОписаниеОповещения("ВыполнитьПодключениеВнешнейКомпоненты", ЭтаФорма, Ложь);
		НачатьУстановкуВнешнейКомпоненты(ОписаниеОповещения, МестоположениеКомпоненты);
		
	КонецЕсли;
	
КонецПроцедуры

#КонецОбласти

10. Обработчик команды «ТекстИзБуфераОбмена».

Добавим обработчик для команды «ТекстИзБуфераОбмена» на клиенте, со следующим кодом:

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура ТекстИзБуфераОбмена(Команда)
	
	ОписаниеОповещения = Новый ОписаниеОповещения("ПолученТекстБуфераОбмена", ЭтотОбъект);
	ВнешняяКомпонента.НачатьПолучениеТекст(ОписаниеОповещения);
	
КонецПроцедуры

&НаКлиенте
Процедура ПолученТекстБуфераОбмена(Значение, ДополнительныеПараметры) Экспорт
	
	Сообщить(Значение);
	
КонецПроцедуры

#КонецОбласти

Пробуем открыть внешнюю обработку в пользовательском режиме, в сообщении безопасности, разрешаем подключить исполнимые бинарные файлы, должно появится сообщение «Внешняя компонента успешно установлена», после этого жмем кнопку «Текст из буфера обмена»:

1С Буфер обмена - Результат
1С Буфер обмена — Результат

Примечание: В буфере обмена должен быть именно текст.

Дополнительная информация:

Хочу обратить ваше внимание на боковую панель, где представлены ссылки на интересные git репозитории для разработчиков 1С.

Метки:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *