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 обработки "Копировать в буфер обмена" и "Вставить в буфер обмена". При добавлении файла как обработки заполнения табличной части, нужно указать для каких документов и табличных частей предназачена обработка по работе с буфером обмена. Параметры никакие указывать не нужно.
Читайте также: