ИзвлечьТекстИзФайлов (БСП)

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

Извлечь текст из файлов. Извлечение текста для полнотекстового поиска.

////////////////////////////////////////////////////////////////////////////////
// Извлечение текста для полнотекстового поиска.

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

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

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

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

ИзвлечьТекстИзФайлаНаДиске (БСП)

ИзвлечьТекстOpenDocument (БСП)

ИзвлечьТекстИзТекстовогоФайла (БСП)

ИзвлечьТекстИзФайловНаСервере (БСП)

ИзвлечьТекстВерсии (БСП)

ТекстЗапросаДляИзвлеченияТекста (БСП)

ИзвлечьТекстИзHTML (БСП)

ИзвлечьТекст (БСП)

ИзвлечьСообщениеБлокировки (БСП)

TurboConf ИР адаптер 1.75