ДанныеФайлаИДвоичныеДанные (БСП)

Автор: 1С
ОбщийМодуль.РаботаСФайламиСлужебныйВызовСервера
БСП

Данные файла двоичные данные. Получает данные файла и его двоичные данные.

// Получает данные файла и его двоичные данные.
//
// Параметры:
//  ФайлИлиВерсияСсылка - СправочникСсылка.Файлы, СправочникСсылка.ВерсииФайлов - файл или версия файла.
//  АдресПодписи - Строка - навигационная ссылка, содержащая адрес файла подписи во временном хранилище.
//  ИдентификаторФормы  - УникальныйИдентификатор - уникальный идентификатор формы.
//
// Возвращаемое значение:
//   Структура - ДанныеФайла и сам файл как ДвоичныеДанные и подпись файла как ДвоичныеДанные.
//
Функция ДанныеФайлаИДвоичныеДанные(ФайлИлиВерсияСсылка, АдресПодписи = Неопределено, ИдентификаторФормы = Неопределено) Экспорт
	
	МетаданныеОбъекта = Метаданные.НайтиПоТипу(ТипЗнч(ФайлИлиВерсияСсылка));
	ЭтоСправочникФайлов = ОбщегоНазначения.ЕстьРеквизитОбъекта("ВладелецФайла", МетаданныеОбъекта);
	ВозможностьХранитьВерсии = ОбщегоНазначения.ЕстьРеквизитОбъекта("ТекущаяВерсия", МетаданныеОбъекта);
	Если ВозможностьХранитьВерсии И ЗначениеЗаполнено(ФайлИлиВерсияСсылка.ТекущаяВерсия) Тогда
		ВерсияСсылка = ФайлИлиВерсияСсылка.ТекущаяВерсия;
		ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка, ВерсияСсылка);
	ИначеЕсли ЭтоСправочникФайлов Тогда
		ВерсияСсылка = ФайлИлиВерсияСсылка;
		ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка);
	Иначе
		ВерсияСсылка = ФайлИлиВерсияСсылка;
		ДанныеФайла = ДанныеФайла(ФайлИлиВерсияСсылка.Владелец, ВерсияСсылка);
	КонецЕсли;
	
	ДвоичныеДанные = Неопределено;
	
	ТипХраненияФайла = ВерсияСсылка.ТипХраненияФайла;
	Если ТипХраненияФайла = Перечисления.ТипыХраненияФайлов.ВТомахНаДиске Тогда
		Если НЕ ВерсияСсылка.Том.Пустая() Тогда
			ПолныйПуть = РаботаСФайламиСлужебный.ПолныйПутьТома(ВерсияСсылка.Том) + ВерсияСсылка.ПутьКФайлу; 
			Попытка
				ДвоичныеДанные = Новый ДвоичныеДанные(ПолныйПуть);
			Исключение
				// Запись в журнал регистрации.
				СообщениеОбОшибке = РаботаСФайламиСлужебный.СформироватьТекстОшибкиПолученияФайлСТомаДляАдминистратора(
					ИнформацияОбОшибке(), ВерсияСсылка.Владелец);
				
				ЗаписьЖурналаРегистрации(
					НСтр("ru = 'Файлы.Открытие файла'",
					     ОбщегоНазначения.КодОсновногоЯзыка()),
					УровеньЖурналаРегистрации.Ошибка,
					Метаданные.Справочники.Файлы,
					ВерсияСсылка.Владелец,
					СообщениеОбОшибке);
				
				ВызватьИсключение РаботаСФайламиСлужебный.ОшибкаФайлНеНайденВХранилищеФайлов(
					ВерсияСсылка.ПолноеНаименование + "." + ВерсияСсылка.Расширение);
			КонецПопытки;
		КонецЕсли;
	Иначе
		ХранилищеФайла = РаботаСФайлами.ХранилищеФайлаИзИнформационнойБазы(ВерсияСсылка);
		ДвоичныеДанные = ХранилищеФайла.Получить();
	КонецЕсли;

	ДвоичныеДанныеПодписи = Неопределено;
	Если АдресПодписи <> Неопределено Тогда
		ДвоичныеДанныеПодписи = ПолучитьИзВременногоХранилища(АдресПодписи);
	КонецЕсли;
	
	Если ИдентификаторФормы <> Неопределено Тогда
		ДвоичныеДанные = ПоместитьВоВременноеХранилище(ДвоичныеДанные, ИдентификаторФормы);
	КонецЕсли;
	
	СтруктураВозврата = Новый Структура("ДанныеФайла, ДвоичныеДанные, ДвоичныеДанныеПодписи",
		ДанныеФайла, ДвоичныеДанные, ДвоичныеДанныеПодписи);
	
	Возврат СтруктураВозврата;
КонецФункции

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ДвоичныеДанныеФайла (БСП)

ПоставляемыеДанныеИзКэша (БСП)

ХранилищеФайлаИзИнформационнойБазы (БСП)

ОписаниеФайла (БСП)

ЗаписатьФайлВИнформационнуюБазу (БСП)

ДанныеПисьмаДляСохраненияКакФайл (БСП)

УдалитьЗаписьИзРегистраДвоичныеДанныеФайлов (БСП)

ПоместитьМанифестКонфигурацииВоВременноеХранилище (БСП)

Синтакс-помощник БСП с нейросетевым ассистентом