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

1. ru_spaiky 17.08.21 19:01 Сейчас в теме
Добрый день, уважаемые форумчане.
Нужен совет так как сам маленько запутался.

1. Найти файлы на диске по реквезиту документа ПриходМатериалов (К примеру по реквезиту ТТН: ИН-2010 (тип строка))
2. Записать найденный файл в документе ПриходМатериалов.

на диске C:\files\ИН-2010.pdf есть скан документа

как в обработке можно реализовать эту задумку.
По теме из базы знаний
Найденные решения
21. spacecraft 23.08.21 09:52 Сейчас в теме
(20) значит все же Объект. Тогда передавать нужно Ссылку от этого объекта.
РаботаСФайлами.ДобавитьФайлСДиска(ТекДок.Ссылка, НайденныйФайл.ПолноеИмя);

Только не понятно, зачем получаете объект. Для добавления присоединенного файла объект документа не нужен, в нем ничего изменять не требуется и файл записывается не в него.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. starik-2005 3040 17.08.21 20:48 Сейчас в теме
(1) есть такой метод, который возвращает некий массив файлов - НайтиФайлы(аргументы). Там маска файла и что-то еще, но не помню что - я это не запоминаю, ибо в синтаксис-помощнике все есть. Во всяких там более прошаренных языках возвращается или итератор, или используется конструкция поиска первого файла и последующих.
5. ru_spaiky 17.08.21 20:57 Сейчас в теме
(3) посижу прочитаю про это , спасибо
16. spacecraft 18.08.21 11:24 Сейчас в теме
(1)
НайденныеФайлы = НайтиФайлы("C:\files",  Док.ТТН+".*");
Для Каждого НайденныйФайл Из НайденныеФайлы 
    // найденный файл добавляете в присоединенные файлы
КонецЦикла;
17. ru_spaiky 23.08.21 07:02 Сейчас в теме
(16)
НайденныеФайлы = НайтиФайлы("C:\files", Док.ТТН+".*");
Для Каждого НайденныйФайл Из НайденныеФайлы
// найденный файл добавляете в присоединенные файлы
КонецЦикла;

Ошибку выдает такую:
Проверка мутабельных значений на заполненность не поддерживается

	КонецЕсли;	  
   			НайденныеФайлы = НайтиФайлы("C:\1CTemp",  ТекДок.ТТН+".*");
			 Для Каждого НайденныйФайл Из НайденныеФайлы Цикл 
		
	ДвоичныеДанные = Новый ДвоичныеДанные(НайденныйФайл.ПолноеИмя);
	АдресВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
	ПараметрыФайла = Новый Структура();
	ПараметрыФайла.Вставить("Автор", ПараметрыСеанса.ТекущийПользователь);
	ПараметрыФайла.Вставить("ВладелецФайлов", ТекДок);
	ПараметрыФайла.Вставить("ИмяБезРасширения", НайденныйФайл.ИмяБезРасширения);
	ПараметрыФайла.Вставить("РасширениеБезТочки", НайденныйФайл.Расширение);
	ПараметрыФайла.Вставить("ВремяИзмененияУниверсальное");
	ПараметрыФайла.Вставить("ГруппаФайлов");
	РаботаСФайлами.ДобавитьФайл(ПараметрыФайла,Справочники.Файлы);
	ТекДок.Записать();

Показать

РаботаСФайлами.ДобавитьФайл в этом моменте выдает ошибку. что я не так делаю можете подсказать?
Прикрепленные файлы:
18. spacecraft 23.08.21 09:01 Сейчас в теме
(17)
РаботаСФайлами.ДобавитьФайл(ПараметрыФайла,Справочники.Файлы);

Справочники.Файлы это СправочникМенеджер, а ожидается АдресФайлаВоВременномХранилище.
Должно быть так:
РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, АдресВХранилище);

Далее.
ПараметрыФайла.Вставить("ВладелецФайлов", ТекДок);
и
Текдок.Записать() взаимоисключающие действия. Тек док это Ссылка или Объект? Если Ссылка, то ее невозможно записать. Если Объект, то его невозможно включать в ПараметрыФайла.

И можно упростить код:
// ТекДок это Ссылка.
НайденныеФайлы = НайтиФайлы("C:\1CTemp",  ТекДок.ТТН+".*");
Для Каждого НайденныйФайл Из НайденныеФайлы Цикл 
    РаботаСФайлами.ДобавитьФайлСДиска(ТекДок, НайденныйФайл.ПолноеИмя);
КонецЦикла;
// записывать ТекДок не нужно.
19. ru_spaiky 23.08.21 09:21 Сейчас в теме
(18)
Тек док это Ссылка или Объект?

ТекДок это ссылка на Документ
20. ru_spaiky 23.08.21 09:22 Сейчас в теме
(19) ТекДок Приход материалов 00000004 от 30.01.2020 0:00:00 ДокументОбъект.ПриходДокументов
21. spacecraft 23.08.21 09:52 Сейчас в теме
(20) значит все же Объект. Тогда передавать нужно Ссылку от этого объекта.
РаботаСФайлами.ДобавитьФайлСДиска(ТекДок.Ссылка, НайденныйФайл.ПолноеИмя);

Только не понятно, зачем получаете объект. Для добавления присоединенного файла объект документа не нужен, в нем ничего изменять не требуется и файл записывается не в него.
22. ru_spaiky 23.08.21 10:01 Сейчас в теме
(21)
Ссылка
Спасибо заработало.
2. FatPanzer 17.08.21 20:20 Сейчас в теме
Найти файл PDF по реквезиту БД 1С?
4. ru_spaiky 17.08.21 20:55 Сейчас в теме
(2) на диске лежат сканы с названиями к примеру тн-123.pdf
В 1с есть приходматериалов где указан реквизит ттн: тн-123. Хочу через обработку найти файл с диска и загрузить его в документ
6. FatPanzer 17.08.21 21:00 Сейчас в теме
(4) Ну вот же! Намного понятнее стало! Надо просто найти файлы, имя которых содержит некоторый набор символов (который в свою очередь где-то в БД есть).

// Потом еще с записью файла помучаетесь, судя по тому пути, где ищете файл.
7. XAKEP 18.08.21 06:41 Сейчас в теме
(4)
а вас не смущает формат pdf vs xlsx vs xml ?

т.е. ваша 1с - высокий интеллект - вы ей пдф -она его в понятный для нее формат
а потом еще и обработка занесет это в документ

сомневаюсь, что у вас такая умная конфигурация.


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



я правильно понял вашу технологию ?
8. ru_spaiky 18.08.21 07:13 Сейчас в теме
(7)
Найти файл с диска и загрузить его в документ
Записать найденный файл в документе

Да правильно поняли
9. RustamZz 18.08.21 08:56 Сейчас в теме
(7)
сомневаюсь, что у вас такая умная конфигурация.
уже год как появилось распознавание документов в БП.
10. XAKEP 18.08.21 09:09 Сейчас в теме
(9)
прикрепить файл и занести данные из документа пдф в документ 1с для меня не одно и тоже

возможно не понял задачи
11. ru_spaiky 18.08.21 09:36 Сейчас в теме
(10)
прикрепить файл и занести данные из документа пдф в документ 1с для меня не одно и тоже

возможно не понял задачи

Давайте попробую обьяснить в 1С есть документ
ПриходМатериалов в реквизите которого имеется ТТН: ИН-0001 (тип строка).
Имеется возможность прикреплять файлы в документы
Так вот как мне сделать так чтобы с жесткого диска искать файл по ТТН.
и если искомый найден то загрузить найденный документ в 1С именно к этому документу по торому делался поиск.
12. FatPanzer 18.08.21 09:39 Сейчас в теме
(11)
Так вот как мне сделать так чтобы с жесткого диска искать файл по ТТН.
Еще раз, только на русском. У файла есть: имя, расширение, дата, размер, путь.
ТТН у файла нет.
Чего искать?
13. DJ_Codebase 18.08.21 10:57 Сейчас в теме
(12) Он хочет по документу приходной накладной найти в каталоге файл пдф с именем как реквизит ТТН. Тогда так:
Файлы = НайтиФайлы(КаталогПоиска,"*.pdf",ВключатьПоискВПодкаталогах);
Если Файлы.Количество()>0 Тогда
НужныйФайл = Файлы[0];
КонецЕсли;

дальше у файла есть ПолноеИмя, получаешь его двоичные данные и пиши куда хочешь
14. FatPanzer 18.08.21 11:01 Сейчас в теме
(13) Ну тогда ему еще в (3) дали ответ... О чем дальнейший срач, я так и не понял.
15. DJ_Codebase 18.08.21 11:07 Сейчас в теме
(14) Да, действительно. может ТС не знает что такое аргументы?... или СП пользоваться не умеет) Задача то элементарная по сути
23. DELOVOYDOM 25.11.23 05:23 Сейчас в теме
(7) забавно, но давно уже проблем с этим нет, почитайте подучитесь много интересного откроете
Оставьте свое сообщение

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