Где в 1С Документооборот хранятся файлы?

1. hoyo 15.11.18 09:46 Сейчас в теме
Доброго всем дня.
Где в Док хранятся файлы? Вот есть справочник Файлы, там есть запись о нужном эксель-файле у документа. Но как получить сам файл, я не понимаю. У файла есть ссылка на текущую версию, там тип хранения - "в информационной базе", то есть должно где-то быть ХранилищеЗначения, из которого надо извлекать этот файл. Где оно, найти не могу. Может кто сталкивался?

Заранее спасибо.
По теме из базы знаний
Найденные решения
8. hoyo 16.11.18 11:18 Сейчас в теме
(5) Вот это была хорошая мысль. Оказалось, файлы версий хранятся в регистре сведений ХранимыеФайлыВерсий. То есть в справочнике Файлы берём реквизит ТекущаяВерсия и по нему соединяясь с этим регистром, получаем ХранилищеЗначения с искомым файлом. Вот так, например:

Врзапрос = новый запрос;
	Врзапрос.Текст = "ВЫБРАТЬ
	                 |	ХранимыеФайлыВерсий.ХранимыйФайл КАК Файл,
	                 |	Файлы.Ссылка, Файлы.ТекущаяВерсияРасширение КАК Расш
	                 |ИЗ
	                 |	Справочник.Файлы КАК Файлы
	                 |ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ХранимыеФайлыВерсий КАК ХранимыеФайлыВерсий
	                 |	ПО Файлы.ТекущаяВерсия = ХранимыеФайлыВерсий.ВерсияФайла
	                 |	И Файлы.ВладелецФайла = &ВладелецФайла И НЕ Файлы.ПометкаУдаления";
	
	Врзапрос.УстановитьПараметр("ВладелецФайла",Объект.Док);
	РезЗапр = Врзапрос.Выполнить().Выгрузить();
	Если РезЗапр.Количество() = 0 Тогда
		Возврат неопределено;
	КонецЕсли;
	
	Файло = РезЗапр[0].Файл.Получить();
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. user705522_constantin_h 35 15.11.18 10:04 Сейчас в теме
(1)При хранении в информационной базе файлы физически хранятся в таблицах СУБД.
При хранении в томах на диске файлы хранятся в каталогах файловой системы, а в СУБД хранятся только ссылки на эти файлы.
7. Boneman 298 15.11.18 11:53 Сейчас в теме
(1) регистр сведений "Присоединенные файлы", там ссылка на справочник присоединенные файлы, и собственно хранилище-сам файл
2. echo77 1884 15.11.18 10:03 Сейчас в теме
(0) Есть еще справочник ВерсииФайлов, соответственно в справочнике Файлы есть ссылка на него в реквизите ТекущаяВерсия.
А вот в справочнике Версии файлов как раз есть реквизит Файлхранилище с типом Хранилищезначения
3. echo77 1884 15.11.18 10:04 Сейчас в теме
Таким образом путь до хранилища с двоичными данными будет выглядеть следующим образом:
Файл.ТекущаяВерсия.Файлхранилище
Salavat88; +1 Ответить
6. hoyo 15.11.18 11:48 Сейчас в теме
(3)Если в конфигураторе посмотреть на это поле в справочнике ВерсииФайлов, то там стоит комментарий: "Служебное поле только для обмена файлами". Я пробовал так получать, Файл.ТекущаяВерсия.Файлхранилище. Когда потом делаешь Получить(), чтобы достать файл из хранилища, возвращает неопределено. То есть файл хранится не там.
5. echo77 1884 15.11.18 10:06 Сейчас в теме
+ Плюс, как вариант: можете записать записать файл в базу и посмотреть в журнале регистрации какие объекты будут созданы.
8. hoyo 16.11.18 11:18 Сейчас в теме
(5) Вот это была хорошая мысль. Оказалось, файлы версий хранятся в регистре сведений ХранимыеФайлыВерсий. То есть в справочнике Файлы берём реквизит ТекущаяВерсия и по нему соединяясь с этим регистром, получаем ХранилищеЗначения с искомым файлом. Вот так, например:

Врзапрос = новый запрос;
	Врзапрос.Текст = "ВЫБРАТЬ
	                 |	ХранимыеФайлыВерсий.ХранимыйФайл КАК Файл,
	                 |	Файлы.Ссылка, Файлы.ТекущаяВерсияРасширение КАК Расш
	                 |ИЗ
	                 |	Справочник.Файлы КАК Файлы
	                 |ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ХранимыеФайлыВерсий КАК ХранимыеФайлыВерсий
	                 |	ПО Файлы.ТекущаяВерсия = ХранимыеФайлыВерсий.ВерсияФайла
	                 |	И Файлы.ВладелецФайла = &ВладелецФайла И НЕ Файлы.ПометкаУдаления";
	
	Врзапрос.УстановитьПараметр("ВладелецФайла",Объект.Док);
	РезЗапр = Врзапрос.Выполнить().Выгрузить();
	Если РезЗапр.Количество() = 0 Тогда
		Возврат неопределено;
	КонецЕсли;
	
	Файло = РезЗапр[0].Файл.Получить();
Показать
Оставьте свое сообщение

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