Содержание:
- Проверка буфера обмена и работа с обычным текстом в учетной программе 1С
- Вставка таблиц и проверка доступности формата HTML в системе автоматизации 1С
- Работа с программными элементами в буфере обмена системы компоновки данных 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”));
Далее обрабатываем полученные данные.
Специалист компании ООО “Кодерлайн”,
Новоточинов Алексей
Добавить комментарий