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

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

Двоичные данные файла. Возвращает двоичные данные файла.

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

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

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

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

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

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

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

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

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

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

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

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

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз