|

Программная работа с буфером обмена


Содержание:

  1. Проверка буфера обмена и работа с обычным текстом в учетной программе 1С
  2. Вставка таблиц и проверка доступности формата HTML в системе автоматизации 1С
  3. Работа с программными элементами в буфере обмена системы компоновки данных 1С

Начиная с версии 8.3.24 в 1С добавлено свойство глобального объекта СредстваБуфераОбмена, который имеет методы:

ИспользованиеДоступно (CanUse)
ПоддерживаетсяФорматДанных (DataFormatSupported)
ПолучитьДанныеАсинх (GetDataAsync)
ПоместитьДанныеАсинх (PutDataAsync)
СодержитДанныеАсинх (ContainsDataAsync).

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

Проверка буфера обмена и работа с обычным текстом в учетной программе 1С

Понятно, что перед тем, как обрабатывать данные, надо проверить, что у нас вообще может использоваться буфер обмена.
            Если Не СредстваБуфераОбмена.ИспользованиеДоступно() Тогда

                        ПредупреждениеАсинх(“Работа с буфером обмена невозможна”);

                        Возврат;

            КонецЕсли;

Чтобы иметь возможность вставлять в буфер обмена несколько «секций» создадим.
            МассивЭлементовБуфера = Новый Массив;

Теперь вставим в буфер обмена обычный текст, проверив перед этим, что формат поддерживается.
            Если СредстваБуфераОбмена.ПоддерживаетсяФорматДанных(СтандартныйФорматДанныхБуфераОбмена.Текст) Тогда

                        Текст = «Текст буфера обмена»;

                        ЭлементБуфера = Новый ЭлементБуфераОбмена(СтандартныйФорматДанныхБуфераОбмена.Текст, Текст);

                        МассивЭлементовБуфера.Добавить(ЭлементБуфера);

            КонецЕсли;

Зайдем в любое приложение, поддерживающее вставку из текста, и вставим.

Вставка таблиц и проверка доступности формата HTML в системе автоматизации 1С

Но возьмем другой пример и вставим в Word таблицу. Для этого нам надо сформировать в МассивеЭлементаБуфераОбмена с типом СтандартныйФорматДанныхБуфераОбмена.HTML

Сформируем строку HTML

СтрокаHTML = “<table><tr><td>Товар</td><td>Количество</td></tr>”;

ШаблонHTML = “<tr><td>%1</td><td>%2</td></tr>”;

СтрокаHTML =  СтрокаHTML +  СтрШаблон(ШаблонHTML, «Товар 1», 10);
СтрокаHTML =  СтрокаHTML +  СтрШаблон(ШаблонHTML, «Товар 2», 20);

СтрокаHTML =  СтрокаHTML +  “</table>”;

Проверим, что использование буфера обмена доступно и поддерживается формат HTML, далее по аналогии с предыдущим

ЭлементБуфера = Новый ЭлементБуфераОбмена(СтандартныйФорматДанныхБуфераОбмена.HTML, СтрокаHTML);

                        МассивЭлементовБуфера.Добавить(ЭлементБуфера);
Теперь в нашем СредстваБуфераОбмена 2 элемента.

Работа с программными элементами в буфере обмена системы компоновки данных 1С

Но также мы можем вставлять Элементы, которые будем формировать программно и обрабатывать внутри кодом.

Сформируем строку со значениями в формате JSON.
МассивСтруктур = Новый Массив;

МассивСтруктур.Добваить(Новый Структура(«Товар, Количество», «Товар 1», 10);

МассивСтруктур.Добваить(Новый Структура(«Товар, Количество», «Товар 2», 20);

СтрокаJSON = ЗаписатьЗначениеJSON(МассивСтруктур);

Проверим, что использование буфера обмена доступно, и поддерживается формат «application/json» (полностью значение этого параметра описывается в синтакс-помощнике), далее по аналогии с предыдущим.

ЭлементБуфера = Новый ЭлементБуфераОбмена(«application/json», ПолучитьДвоичныеДанныеИзСтроки(СтрокаJSON));

                        МассивЭлементовБуфера.Добавить(ЭлементБуфера);

Теперь в нашем СредстваБуфераОбмена 3 элемента.
Допустим, нас интересует только элемент «application/json». Получим его.
Проверим доступность использования буфера обмена, дальше асинхронно проверим, что в нашем СредстваБуфераОбмена имеется такой элемент
            Если Не Ждать СредстваБуфераОбмена.СодержитДанныеАсинх(“application/json”) Тогда

                        Возврат;

            КонецЕсли;

Получим его

ДанныеJSON = ПолучитьСтрокуИзДвоичныхДанных(Ждать СредстваБуфераОбмена.ПолучитьДанныеАсинх(“application/json”));

Далее обрабатываем полученные данные.

Специалист компании ООО “Кодерлайн”,

Новоточинов Алексей


Помогла ли вам статья? Оставьте свой комментарий:

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

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

Блог про 1С:Предприятие

Copyright © 2024 TopKoder

Мы занимаемся внедрением и обслуживанием программных продуктов 1С.