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

Обновлено: 04.07.2024

Возникла потребность создания документа в 1С для регистрации ошибок работы программ у пользователей.

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

Камнем преткновения стала возможность работы с буфером обмена. Как оказалось, штатных способов работы с буфером и нет.

А ведь было бы прикольно, нажать ctrl+prtscr (alt+prtscr), и вставлять содержимое из буфера в нужную позицию документа, где находится курсор.

После изучения определенного количества неплохих, но достаточно старых публикаций, сделал вывод что штатная вставка ctrl+v для картинов не работает,

работают только с текстом,

варианты с подключением к эксель, копипастом в него, и сохранением в файл - ресурсоемки, да и не везде эксель доступен.

Остались варианты с внешними компонентами.

компонент тоже немного, давным давно (в 2009), пользователь gudun_ku выложил компоненту clipboard.dll для этой цели.

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

Но несмотря на все усилия, мне не удалось все это запустить уже на современной конфигурации, под win7. Все попытки подключения компоненты, приводят к исключению.

когда, уже почти опустились руки, - решил покопаться в типовых. И к радости обнаружил что фирма 1С уже позаботилась об этом, и в конфигурации Документооборот уже присутствует такая компонента, и данный функционал всего-лишь необходимо использовать.

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

Сама компонента находится в общих макетах, макет называется - ОбщиеМакеты.КомпонентаПолученияКартинкиИзБуфера

Далее нам понадобится модуль

там всего несколько процедур и функций, по установке, и инициализации компоненты.

Также нужно не забыть про глобальную переменную

которая объявлена в модуле управляемого приложения

Собственно, это и все что нам нужно для работы.

Далее рисуем наш документ, размещаем на форме форматированный документ, и не забываем про реквизит типа "ХранилищеЗначений", для того чтобы нам картинки в базе хранить.

Делаем команду, вставка из буфера, и прописываем код

Так как метод вставки картинки доступен только на сервере, то там и выполняем

Результат достигнут, все работает.

Лишний раз убедился, что для успешной работы нет нужды каждый раз изобретать велосипед, а необходимо регулярно изучать имеющиеся подсистемы, и пользоваться по максимуму ими.

Меня всегда удручал тот факт, что для вставки табличных данных из какого-либо приложения в 1С необходимо разрабатывать отдельную обработку. Когда внедрял проект в одной торговой компании, столкнулся с тем, что операторы занимаются просто немыслимой ерундой - для ввода заявки на отгрузку, распечатывают эту заявку с сайта заказчика и вручную вводят данные уже в 1С. В результате родилась идея упростить такую работу за счет обработки содержимого буфера обмена. По горячим следам создал обработку для 1С 7.7, в которую были заложены функции импорта буфера обмена и обучения для настройки под разные форматы табличных данных (это был импорт заказов с порталов ЕКОД, Пятерочка, 7 Континент и т.д.). Причем вмешательство программиста в обучение программы не нужно.

Что делают обработки:

Предлагаемые обработки не претендует на универсальность, т.к. у меня была строго определенная задача упростить работу пользователей экономического отдела. Позволяют копировать и вставлять в/из буфер(а) обмена. Операция копировавния означает, что для любого документа содержимое табличной части будет помещено в буфер обмена в виде удобном для считывания данных. Операция вставки из буфера обмена означает, что содержимое буфера обмена будет считано и импортировано в табличную часть документа. Копировать и вставлять буфер обмена можно в пределах одной информационной базы, разных информационных баз, разных приложений (1С и Excel, 1C и Word, 1С и браузер и т.д.).

Проверялось на релизе:

УПП 1.3.31.1, но есть возможность работы в любых конфигурациях, где встроен справочник "Внешние обработки" (Сервис -> Дополнительные внешние отчеты и обработки).

Подробности:

Работа с буфером обмена выполняется через объект InternetExplorer. Когда табличные данные помещаются в буфер обмена, разделителем колонок выступает символ табуляции (TAB). При считывании некоторых таблиц из браузера, столкнулся с неприятным фактом, что не всегда возможно корректно разделить колонки. Но с этой функцией замечательно справляется Word. Поэтому, когда анализ содержимого буфера обмена для разбиения на колонки проходит неудачно, создаю объект Word, копирую буфер в новый документ и заново считываю скопированные данные. В результате получаю таблицу, которую можно с успехом парсить. Импорт Номенклатуры выполнется если в табличных данных есть колонка "Артикул". При невозможности работы с артикулом, в ход идёт "Наименование".

Порядок встраивания:

В режиме 1С:Предприятие нужно в меню Сервис -> Дополнительные внешние отчеты и обработки -> Обработки заполнения табличных частей добавить 2 обработки "Копировать в буфер обмена" и "Вставить в буфер обмена". При добавлении файла как обработки заполнения табличной части, нужно указать для каких документов и табличных частей предназачена обработка по работе с буфером обмена. Параметры никакие указывать не нужно.

Читайте также: