Данные файла двоичные данные. Получает данные файла и его двоичные данные.
// Получает данные файла и его двоичные данные.
//
// Параметры:
// ФайлИлиВерсияСсылка - СправочникСсылка.Файлы, СправочникСсылка.ВерсииФайлов - файл или версия файла.
// АдресПодписи - Строка - навигационная ссылка, содержащая адрес файла подписи во временном хранилище.
// ИдентификаторФормы - УникальныйИдентификатор - уникальный идентификатор формы.
//
// Возвращаемое значение:
// Структура - ДанныеФайла и сам файл как ДвоичныеДанные и подпись файла как ДвоичныеДанные.
//
Функция ДанныеФайлаИДвоичныеДанные(ФайлИлиВерсияСсылка, АдресПодписи = Неопределено, ИдентификаторФормы = Неопределено) Экспорт
МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(ФайлИлиВерсияСсылка));
ЭтоСправочникФайлов = ОбщегоНазначения.ЕстьРеквизитОбъекта("ВладелецФайла", МетаданныеОбъекта);
ВозможностьХранитьВерсии = ОбщегоНазначения.ЕстьРеквизитОбъекта("ТекущаяВерсия", МетаданныеОбъекта);
Если ВозможностьХранитьВерсии И ЗначениеЗаполнено(ФайлИлиВерсияСсылка.ТекущаяВерсия) Тогда
ВерсияСсылка = ФайлИлиВерсияСсылка.ТекущаяВерсия;
ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка, ВерсияСсылка);
ИначеЕсли ЭтоСправочникФайлов Тогда
ВерсияСсылка = ФайлИлиВерсияСсылка;
ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка);
Иначе
ВерсияСсылка = ФайлИлиВерсияСсылка;
ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка.Владелец, ВерсияСсылка);
КонецЕсли;
ДвоичныеДанные = Неопределено;
ТипХраненияФайла = ВерсияСсылка.ТипХраненияФайла;
Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
Если НЕ ВерсияСсылка.Том.Пустая() Тогда
ПолныйПуть = РаботаСФайламиСлужебный.ПолныйПутьТома(ВерсияСсылка.Том) + ВерсияСсылка.ПутьКФайлу;
Попытка
ДвоичныеДанные = Новый ДвоичныеДанные(ПолныйПуть);
Исключение
// Запись в журнал регистрации.
СообщениеОбОшибке = РаботаСФайламиСлужебный.СформироватьТекстОшибкиПолученияФайлСТомаДляАдминистратора(
ИнформацияОбОшибке(), ВерсияСсылка.Владелец);
ЗаписьЖурналаРегистрации(
НСтр("ru = 'Файлы.Открытие файла'",
ОбщегоНазначения.КодОсновногоЯзыка()),
УровеньЖурналаРегистрации.Ошибка,
Метаданные.Справочники.Файлы,
ВерсияСсылка.Владелец,
СообщениеОбОшибке);
ВызватьИсключение РаботаСФайламиСлужебный.ОшибкаФайлНеНайденВХранилищеФайлов(
ВерсияСсылка.ПолноеНаименование + "." + ВерсияСсылка.Расширение);
КонецПопытки;
КонецЕсли;
Иначе
ХранилищеФайла = РаботаСФайлами.ХранилищеФайлаИзИнформационнойБазы(ВерсияСсылка);
ДвоичныеДанные = ХранилищеФайла.Получить();
КонецЕсли;
ДвоичныеДанныеПодписи = Неопределено;
Если АдресПодписи <> Неопределено Тогда
ДвоичныеДанныеПодписи = ПолучитьИзВременногоХранилища(АдресПодписи);
КонецЕсли;
Если ИдентификаторФормы <> Неопределено Тогда
ДвоичныеДанные = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ИдентификаторФормы);
КонецЕсли;
СтруктураВозврата = Новый Структура("ДанныеФайла, ДвоичныеДанные, ДвоичныеДанныеПодписи",
ДанныеФайла, ДвоичныеДанные, ДвоичныеДанныеПодписи);
Возврат СтруктураВозврата;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПоставляемыеДанныеИзКэша (БСП)
ХранилищеФайлаИзИнформационнойБазы (БСП)
ЗаписатьФайлВИнформационнуюБазу (БСП)
ДанныеПисьмаДляСохраненияКакФайл (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)