Задача:
Необходимо создать "легкое" прикрепление файлов к документам.
Штатные механизмы трудоёмки( много кнопочек надо нажимать)
Прикрепление подразумевается просто ссылочное (не в хранилище)
Необходимо:
1) программно создать папку в заранее отведенной папке ( не сложно)
2) Вставить из буфера заранее скопированный туда файлик в эту папку ( из 1)
Вопрос, как программно из 1с вставить файл из буфера в определенную папку
---
Думаю можно попробовать вот таким образом:

```1c
    wsh = Новый COMОбъект("WScript.Shell");
    wsh.AppActivate(ПолучитьЗаголовокСистемы()); //здесь в кавычки вписываем заголовок системы
    Пауза();
    wsh.SendKeys("^O"); //Открываем стандартное окно выбора файла 1С
    Пауза();
    wsh.SendKeys("C:\Temp"); // Вместо C:\Temp указываем папку которую нужно открыть
    Пауза();
    wsh.SendKeys("{ENTER}"); //Посылаем Enter чтобы открыть указанную папку
    Пауза();
    wsh.SendKeys("{TAB}{TAB}{TAB}{TAB}{TAB}"); //посылаем 5 раз таб, чтобы спозиционирвоаться в области выбора
    Пауза();
    wsh.SendKeys("^{V}"); //вставляем данные из буфера обмена
    Пауза();
    wsh.SendKeys("{ESCAPE}"); //закрываем окно выбора файла
```

Процедура Пауза() нужна для того чтобы у системы было немного времени для обдумывания нажатых клавиш, текст процедуры очень простой:

```1c
    Процедура Пауза()
    Для Инд = 0 По 10000 Цикл

    КонецЦикла;
    КонецПроцедуры
```

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

Останется только сделать какую-то штуку, которая проверяет есть ли такой файл в указанной директории или нет.

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

Вообще в 1С с буфером обмена делал через

ОбъектКопирования = Новый COMОбъект("htmlfile");
ОбъектКопирования.ParentWindow.ClipboardData.Setdata("Text", Текст); // ну или GetData - кажется

Возможно, когда копируется файл, в буфер помещается путь этого файла (не уверен). Соотвествено програмно получаем путь и копируем куда надо

зы. Если не правильно - сильно не бейте :)
---
Ягг, да, это я видел
а еще про работу с изображениями есть обработка http://infostart.ru/public/19932/
но нужно более общего характера, pdf например нужно вставлять или doc
---
Думаю можно попробовать вот таким образом:

```1c
    wsh = Новый COMОбъект("WScript.Shell");
    wsh.AppActivate(ПолучитьЗаголовокСистемы()); //здесь в кавычки вписываем заголовок системы
    Пауза();
    wsh.SendKeys("^O"); //Открываем стандартное окно выбора файла 1С
    Пауза();
    wsh.SendKeys("C:\Temp"); // Вместо C:\Temp указываем папку которую нужно открыть
    Пауза();
    wsh.SendKeys("{ENTER}"); //Посылаем Enter чтобы открыть указанную папку
    Пауза();
    wsh.SendKeys("{TAB}{TAB}{TAB}{TAB}{TAB}"); //посылаем 5 раз таб, чтобы спозиционирвоаться в области выбора
    Пауза();
    wsh.SendKeys("^{V}"); //вставляем данные из буфера обмена
    Пауза();
    wsh.SendKeys("{ESCAPE}"); //закрываем окно выбора файла
```

Процедура Пауза() нужна для того чтобы у системы было немного времени для обдумывания нажатых клавиш, текст процедуры очень простой:

```1c
    Процедура Пауза()
    Для Инд = 0 По 10000 Цикл

    КонецЦикла;
    КонецПроцедуры
```

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

Останется только сделать какую-то штуку, которая проверяет есть ли такой файл в указанной директории или нет.

Ну и самое главное чтобы в этот момент в буфере уже что - то было, а то вставлять нечего будет.
---
BelCyber, спасибо за помощь!
Я то же самое реализовал с помощью AutoIt.
Сложность осталась лишь в одном:
после вставки файла надо ждать непонятно сколько по времени
т.е. время ожидания зависит от размера файла и скорости соединения ( у меня тут еще RDP)
Это нельзя как-нибудь отследить?
---
ВыбФайл = Новый Файл(ИмяФайла);
 Если НЕ ВыбФайл.Существует() Тогда
  Сообщить("Файл не существует!");
  Возврат;
 КонецЕсли;

        ЗапуститьПриложение(ИмяФайла);
---
по простому не получится, надо самому тогда писать алгоритмы передачи файлов, тогда получится побитово считать переданный размер и точно определить время на копирование. Вот нашёл тут что - то похожее.

Но думаю это слишком долго и никому не нужно, так что нужно найти какое-то событие и привязаться к нему. Например, вместе с передаваемым файлом передавать ещё текстовый документ пустой с установленным именем, и если он уже есть в каталоге назначения - значит копирование завершено.
Можно ещё попробовать оценивать размер файла в целевом и исходном каталогах, но загвоздка в том что очень часто как только начинается транзакция система резервирует место под файл и даже в начала копирования размер файла в целевом каталоге = размеру файла в исходном.
Не очень хорошо знаком с системным программированием, но мне кажется что должен быть механизм который позволит отследить момент окончания копирвоания файла.
---
BelCyber,
спасибо большое за ответы. Не подписался к ответам на тему, и своевременно не отследил первый ответ.
Думаю, они достойны звания "Лучший ответ"

Если интересно, как это сделано через AutoIt, можете заглянуть сюда
http://autoit-script.ru/index.php?topic=11411.new;topicseen#new
Последний ответ кстати, отвечает на поставленный вопрос,
только реализовать его моим подходом не получилось.
И тема пока полностью не раскрыта ( сделал так как сказал (8))
---
А не легче самому добавить поле для выбора(прикрепления файла). написать процедуру и все Задача решена. Нажатий всего два. и кнопочку для открытия с функцией ЗапуститьПриложение("Путь к файлу").
---
на данный момент сделано именно так, не стал внедрять то, что наковырял
тут более важен был концепт, хотелось сделать через одну кнопку. Клик, и файл скопирован.
---
Подниму старую тему. Пробую сделать ставку файла по изложенному алгоритму.

На терминальном сервере с windows сервер 2016 работает все ок, только количество необходимых табов 8, а не 5.
А вот на терминальном 2012R2 хоть убейся, но нет. Во-первых, при SendKeys каталога для сохранения файла часть левых символов обрезается. Причем каждый раз разное! Во-вторых, такое впечатление, что передача нажатия клавиши Таб в окне выбора файла вообще игнорируется, и курсор все время остается на поле ввода имени файла, и переместить его оттуда никак не получается.

В чем тут может быть дело, куда копать? Документация WScript.Shell проста и скудна, а что еще может помочь даже не представляю пока.