Доброго всем дня.
Где в Док хранятся файлы? Вот есть справочник Файлы, там есть запись о нужном эксель-файле у документа. Но как получить сам файл, я не понимаю. У файла есть ссылка на текущую версию, там тип хранения - "в информационной базе", то есть должно где-то быть ХранилищеЗначения, из которого надо извлекать этот файл. Где оно, найти не могу. Может кто сталкивался?
Заранее спасибо.
Где в Док хранятся файлы? Вот есть справочник Файлы, там есть запись о нужном эксель-файле у документа. Но как получить сам файл, я не понимаю. У файла есть ссылка на текущую версию, там тип хранения - "в информационной базе", то есть должно где-то быть ХранилищеЗначения, из которого надо извлекать этот файл. Где оно, найти не могу. Может кто сталкивался?
Заранее спасибо.
По теме из базы знаний
- Многопоточный CI-контур для 1С c Packer, Vagrant и Jenkins. Часть 1. Описание системы и обзор инструментария
- Доработка визуализации ЭП для 1С:Документооборот государственного учреждения КОРП
- Особенности настройки хранения файлов в томах в конфигурации 1С:Документооборот 3.0
- 1С-Коннект - платформа для автоматизации техподдержки, услуг и коммуникаций: цены от 3 990 руб.
- Переход с ДО 2.1 на ДО 3.0
Найденные решения
(5) Вот это была хорошая мысль. Оказалось, файлы версий хранятся в регистре сведений ХранимыеФайлыВерсий. То есть в справочнике Файлы берём реквизит ТекущаяВерсия и по нему соединяясь с этим регистром, получаем ХранилищеЗначения с искомым файлом. Вот так, например:
Врзапрос = новый запрос;
Врзапрос.Текст = "ВЫБРАТЬ
| ХранимыеФайлыВерсий.ХранимыйФайл КАК Файл,
| Файлы.Ссылка, Файлы.ТекущаяВерсияРасширение КАК Расш
|ИЗ
| Справочник.Файлы КАК Файлы
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ХранимыеФайлыВерсий КАК ХранимыеФайлыВерсий
| ПО Файлы.ТекущаяВерсия = ХранимыеФайлыВерсий.ВерсияФайла
| И Файлы.ВладелецФайла = &ВладелецФайла И НЕ Файлы.ПометкаУдаления";
Врзапрос.УстановитьПараметр("ВладелецФайла",Объект.Док);
РезЗапр = Врзапрос.Выполнить().Выгрузить();
Если РезЗапр.Количество() = 0 Тогда
Возврат неопределено;
КонецЕсли;
Файло = РезЗапр[0].Файл.Получить();
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(3)Если в конфигураторе посмотреть на это поле в справочнике ВерсииФайлов, то там стоит комментарий: "Служебное поле только для обмена файлами". Я пробовал так получать, Файл.ТекущаяВерсия.Файлхранилище. Когда потом делаешь Получить(), чтобы достать файл из хранилища, возвращает неопределено. То есть файл хранится не там.
(5) Вот это была хорошая мысль. Оказалось, файлы версий хранятся в регистре сведений ХранимыеФайлыВерсий. То есть в справочнике Файлы берём реквизит ТекущаяВерсия и по нему соединяясь с этим регистром, получаем ХранилищеЗначения с искомым файлом. Вот так, например:
Врзапрос = новый запрос;
Врзапрос.Текст = "ВЫБРАТЬ
| ХранимыеФайлыВерсий.ХранимыйФайл КАК Файл,
| Файлы.Ссылка, Файлы.ТекущаяВерсияРасширение КАК Расш
|ИЗ
| Справочник.Файлы КАК Файлы
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ХранимыеФайлыВерсий КАК ХранимыеФайлыВерсий
| ПО Файлы.ТекущаяВерсия = ХранимыеФайлыВерсий.ВерсияФайла
| И Файлы.ВладелецФайла = &ВладелецФайла И НЕ Файлы.ПометкаУдаления";
Врзапрос.УстановитьПараметр("ВладелецФайла",Объект.Док);
РезЗапр = Врзапрос.Выполнить().Выгрузить();
Если РезЗапр.Количество() = 0 Тогда
Возврат неопределено;
КонецЕсли;
Файло = РезЗапр[0].Файл.Получить();
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот