Программно присоедить файл к документу

1. toptap 02.11.16 13:22 Сейчас в теме
Добрый день, всем!

Как написать программно, чтоб можно было программно присоедить файл к документу.
То, что руками делается по команде "Перейти" - "Присоединенные файлы" слева на форме документа.

Всем, Спасибо
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
5. oldfornit 02.11.16 14:35 Сейчас в теме
(1)
ЛистСогласования = новый ТабличныйДокумент;
...
...

ИмяВременногоФайла = ПолучитьИмяВременногоФайла("pdf");
ЛистСогласования.Записать(ИмяВременногоФайла, ТипФайлаТабличногоДокумента.PDF);
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла);
        
адресВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
        
ПрисоединенныйФайл = ПрисоединенныеФайлы.ДобавитьФайл(ВладелецФайлов, "Лист согласования", "pdf", , , адресВХранилище);
УдалитьФайлы(ИмяВременногоФайла);
Показать
bocharovki; Altone1976; user1021675; insurgut; vodolazua; bamblbi; ПодводныйТ; triviumfan; vit00lya; +9 Ответить
7. toptap 03.11.16 14:42 Сейчас в теме
(5)
Спасибо
Еще небольшой вопрос:
сам файл (Ecxel), который надо присоединить у меня есть, он лежит на диске в определенном каталоге.
где в Вашем алгоритме нужно показать откуда его брать?
Спасибо
8. oldfornit 03.11.16 15:37 Сейчас в теме
(7) ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла); - вот тут путь до файла
9. toptap 04.11.16 11:08 Сейчас в теме
10. toptap 04.11.16 12:15 Сейчас в теме
(8)
Еще раз, спасибо.
Все получилось!!!
11. Nubsdale 18.12.20 15:33 Сейчас в теме
(8)у вас так же в этой строке участвует переменная ИмяВременногоФайла
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("pdf");

Значит ли это, что перед строкой ДвоичныеДанные = Новый ДвоичныеДанные(ИмяВременногоФайла); нужно переприсвоить значение ИмяВременногоФайла, и присвоить имя пути к файлу?

У меня создаётся файл, но он пустой
12. oldfornit 22.12.20 10:19 Сейчас в теме
(11) оччень интересно.
Для начала посмотрите пожалуйста в синтакс-помощнике описание функции ПолучитьИмяВременногоФайла
Ну и задумайтесь - как можно посмотреть содержимое файла, если не знаешь - где он находится
Nubsdale; +1 Ответить
13. Nubsdale 24.12.20 11:38 Сейчас в теме
20. MissAnya 01.02.24 12:13 Сейчас в теме
(11)у меня тоже самое, загружается пустой лист pdf. Как Вы решили? Я прочитала несколько раз описание ПоучитьИмяВременногоФайла. Но не понимаю?
14. cdiamond 235 29.03.21 16:51 Сейчас в теме
(5) А нет решения на современную версию БСП? Такой модуль отсутствует.
На поверхности лежит:
ВременныйФайл = ПолучитьИмяВременногоФайла(".xlsx");
ТабДок.Записать(ВременныйФайл, ТипФайлаТабличногоДокумента.XLSX);
РаботаСФайлами.ДобавитьФайлСДиска(ДокументСсылка, ВременныйФайл);

Описание этой функции:
// Добавляет новый файл из файловой системы.
// Если справочник файлов поддерживает хранение версий, то будет создана первая версия файла.
// 
// Параметры:
//   ВладелецФайлов    - ОпределяемыйТип.ВладелецПрисоединенныхФайлов - папка файлов или объект, к которому
//                       требуется прикрепить добавляемый файл.
//   ПутьКФайлуНаДиске - Строка - полный путь к файлу на диске, включающий имя и расширение файла.
//                       Файл должен находиться на сервере.
//
// Возвращаемое значение:
//  ОпределяемыйТип.ПрисоединенныйФайл - ссылка на элемент справочника с созданным файлом.
Показать

Но попытка использования дает такой результат, хотя ссылка на документ входит в определяемый тип:
{ОбщийМодуль.РаботаСФайламиСлужебныйВызовСервера.Модуль(640)}: Ошибка при вызове метода контекста (Записать): Ошибка при выполнении обработчика - 'ПередЗаписью': {ОбщийМодуль.РаботаСФайлами.Модуль(2251)}: Не заполнен владелец в файле
"v8_9H4y95_39".

Отладчиком видно что после многочисленных прыжков по функциям владельцем оказывается папка (версионирование включено).
unknown181538; +1 Ответить
15. cdiamond 235 29.03.21 17:52 Сейчас в теме
(14) В общем это не та функция, она для объектов типа бизнес процессы и задачи, использует справочник "Файлы". Документы и справочники используют индивидуально свои справочники.
evgeny_sluzhenko; Yury1001; native-api; +3 Ответить
21. unknown181538 158 26.08.24 16:16 Сейчас в теме
(14) вот тоже попытался ее использовать. Хоть бы документировали разрабы, что она для этого не подходит.
2. ipoloskov 164 02.11.16 13:24 Сейчас в теме
3. toptap 02.11.16 13:36 Сейчас в теме
(2)
1С Предприятие (8.3.8.1964)
Конфигурация УТ (11.1.10.94)
4. ipoloskov 164 02.11.16 13:55 Сейчас в теме
(3) если не ошибаюсь, в УТ11 это справочники ХХХПрисоединенныеФайлы, где ХХХ - наименование родительского справочника. Смотрите, какие у него реквизиты и заполняйте.
Посмотрите, как это делается в общей форме ПрисоединенныйФайл
6. toptap 03.11.16 11:22 Сейчас в теме
Большое Спасибо, всем!!!
16. cdiamond 235 29.03.21 19:59 Сейчас в теме
На БСП версии 3.1 для объектов, имеющих соответствующий справочник <ИмяОбъекта>ПрисоединенныеФайлы:
ВременныйФайл = ПолучитьИмяВременногоФайла(".mxl");
ТабДок.Записать(ВременныйФайл, ТипФайлаТабличногоДокумента.MXL);
ДвоичныеДанные = Новый ДвоичныеДанные(ВременныйФайл);
АдресВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.Автор = ПараметрыСеанса.ТекущийПользователь.Наименование;
ПараметрыФайла.ВладелецФайлов = ДокументСсылка;
ПараметрыФайла.ИмяБезРасширения = "Отчет о закупках снега";
ПараметрыФайла.РасширениеБезТочки = "mxl";
РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресВХранилище);
УдалитьФайлы(ВременныйФайл);
Показать


Для объектов, не имеющих свой справочник (это не документы и не справочники), использующих общий Справочник.Файлы :
ВременныйФайл = ПолучитьИмяВременногоФайла(".xlsx");
ТабДок.Записать(ВременныйФайл, ТипФайлаТабличногоДокумента.XLSX);
РаботаСФайлами.ДобавитьФайлСДиска(ДокументСсылка, ВременныйФайл);
УдалитьФайлы(ВременныйФайл);
kladovoy; kvintgood; agentz; 1cmax; Serg_V_M; bprogs; SadrA; assa; evgeny_sluzhenko; О.Ж; ambabas; AlexandraSerg; Walet; belarus767; Nerich; mikhalchenko31; Dream_kz; avert; native-api; NikVeega; Gendelf; mikl79; kos_47; user1088651; aleksey2; atdonya; elabor; Pipapalamm; igor-gtc; inesik; ponka; poyson; Sloger; +33 Ответить
17. Walet 22.06.23 08:59 Сейчас в теме
(16) Спасибо! Вот чётко и по делу, и сразу работает! Все б так писали!
18. DELOVOYDOM 25.11.23 05:07 Сейчас в теме
(17) Вот вам полезный кусок, по кнопке прикладывает файл со сканера, можете в цикле сразу пачку сканов и написать обработку и скрепки будут вживую появляться в списке документов по мере сканирования

Я так и не понял к чему Табличный документ? вообще вопрос был про pdf, присоединение всего иного это люто и не имеет смысла, тогда уж сразу данные переносите в 1с. Присоединенные имеют смысл исключительно с юридической точки зрения. Например прислали с отсоединенной подписью или скан пдф.
Я владелец достаточно крупного бизнеса по обработке документации, знаком с 1с уж так вышло. Большинство программистов 1с из за отсутствия представления архитектуры бизнеса и реалий городят такой огород, что я диву даюсь как бы эти мозги да в нужное русло.

// ПРОЦЕДУРА ПОЛУЧЕНИЯ ФАЙЛА С ДИСКА И ПРИСОЕДИНЕНИЯ К ДОКУМЕНТУ (КНОПКА ПРИСОЕДИНИТЬ НА ФОРМЕ)

&НаСервере
Процедура ПрикрепитьФайлНаСервере(Команда)

ДокументССылка = Объект.Ссылка;
ВременныйФайл = "C:\install\test.pdf";
ДвоичныеДанные = Новый ДвоичныеДанные(ВременныйФайл);
АдресВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.Автор = ПараметрыСеанса.ТекущийПользователь.Наименование;
ПараметрыФайла.ВладелецФайлов = ДокументСсылка;
ПараметрыФайла.ИмяБезРасширения = "Документ со сканера";
ПараметрыФайла.РасширениеБезТочки = "pdf";
РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресВХранилище);

// удаляем файл после успешного прикрепления, но лучше удалять после верификации оператором

УдалитьФайлы(ВременныйФайл);
КонецПроцедуры

&НаКлиенте
Процедура ПрикрепитьФайл(Команда)
ЦЭУ_ТестПрикрепитьФайлНаСервере();
КонецПроцедуры
unknown181538; +1 Ответить
19. Tushcan 37 14.12.23 06:44 Сейчас в теме
(18)
ПрикрепитьФайлНаСервере
Добрый день. Прошу прощения. В этой процедуре "Процедура ПрикрепитьФайл(Команда)" указан код "ЦЭУ_ТестПрикрепитьФайлНаСервере();" А процедура на сервере с другим названием указана "Процедура ПрикрепитьФайлНаСервере(Команда)" - это не ошибка? Не могу понять(
23. unknown181538 158 29.08.24 17:41 Сейчас в теме
(19) Думаю, он просто переименовал ее для публикации, а внизу забыл переименовать.
22. unknown181538 158 29.08.24 17:40 Сейчас в теме
(18) Спасибо! Не пришлось писать свою
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот