// Общие.ЛогФайл

Перем ИмяЛогФайла Экспорт;
Перем ВыводВОкноСообщений Экспорт;
Перем Включен Экспорт;

Перем	_Лог;

Функция Этот(Конт) Возврат Конт; КонецФункции

Функция Сам() Возврат Этот(Контекст) КонецФункции

//______________________________________________________________________________
//
// служебные процедуры для работы с файлом
// параметры: __лог: binarydata, __стр: строка, имя файла
//______________________________________________________________________________
//
Процедура _Открыть(__лог, __стр)
	Если ПустоеЗначение(__стр) = 0 Тогда
		__лог.ПодключитьсяКФайлу(__стр, 2, 2);
		__лог.Перейти(0, 2);
	КонецЕсли;
КонецПроцедуры

Процедура _Закрыть(__лог, __стр)
	Если ПустоеЗначение(__стр) = 0 Тогда
		__лог.Закрыть();
	КонецЕсли;
КонецПроцедуры
//------------------------------------ ------------------------------------
Процедура Конструктор()
	ВыводВОкноСообщений = 0;
	Включен = 1;

	//_Лог = СоздатьОбъект("Текст");
	_Лог =СоздатьОбъект("BinaryData");

	ИмяЛогФайла = "";
	Сам().ИмяЛогФайла = КаталогИБ()+"ЛогФайл.log";
//Сообщить("Создаю объект Общие.ЛогФайл");
КонецПроцедуры // Конструктор

//------------------------------------ ------------------------------------
Процедура ЗафиксироватьИзмененияВЛогФайле()
	//Если ПустаяСтрока(ИмяЛогФайла) = 0 Тогда
	//	Если Включен = 1 Тогда
	//		_Лог.Записать(ИмяЛогФайла);
	//	КонецЕсли;
	//КонецЕсли;
КонецПроцедуры // ЗафиксироватьИзмененияВЛогФайле

// ---------------------------------------  ---------------------------------
процедура ПриЗаписи_ИмяЛогФайла(ЗначениеДляУст)
	//ЗафиксироватьИзмененияВЛогФайле();
	ИмяЛогФайла = ЗначениеДляУст;
	//Если ФС.СуществуетФайл(ИмяЛогФайла)=1 Тогда
	//Иначе
	//	_Лог.Очистить();
	//	_Лог.Записать(ИмяЛогФайла);
	//КонецЕсли;
	//_Лог.Открыть(ИмяЛогФайла);
КонецПроцедуры // ПриЗаписи_ИмяЛогФайла

//------------------------------------ ------------------------------------
Процедура Сообщить(Сообщение, Маркер) Экспорт
	Если ВыводВОкноСообщений = 1 Тогда
		Сообщить(Сообщение, Маркер);
	КонецЕсли;

	_Открыть(_Лог, ИмяЛогФайла);
	Если Найти(Маркер, "!") > 0 Тогда
		//_Лог.ДобавитьСтроку(ТекущееВремя()+"- ОШИБКА: "+Сообщение);
		_Лог.ЗаписатьСтроку(ТекущееВремя()+"- ОШИБКА: "+Сообщение);
	Иначе
		//_Лог.ДобавитьСтроку(ТекущееВремя()+": "+Сообщение);
		_Лог.ЗаписатьСтроку(ТекущееВремя()+": "+Сообщение);
	КонецЕсли;
	_Закрыть(_Лог, ИмяЛогФайла);
	
	//ЗафиксироватьИзмененияВЛогФайле();
КонецПроцедуры // Сообщить

//------------------------------------ ------------------------------------
Процедура СообщитьСДатой(Сообщение, Маркер) Экспорт
	Сообщение2 = ""+ТекущаяДата()+": "+Сообщение;
	Если ВыводВОкноСообщений = 1 Тогда
		Сообщить(Сообщение2, Маркер);
	КонецЕсли;
	
	_Открыть(_Лог, ИмяЛогФайла);
	Если Найти(Маркер, "!") > 0 Тогда
		//_Лог.ДобавитьСтроку(""+ТекущаяДата()+"- ОШИБКА: "+Сообщение);
		_Лог.ЗаписатьСтроку(""+ТекущаяДата()+"- ОШИБКА: "+Сообщение);
	Иначе
		//_Лог.ДобавитьСтроку(""+ТекущаяДата()+": "+Сообщение);
		_Лог.ЗаписатьСтроку(""+ТекущаяДата()+": "+Сообщение);
	КонецЕсли;
	_Закрыть(_Лог, ИмяЛогФайла);

	//ЗафиксироватьИзмененияВЛогФайле();
КонецПроцедуры // СообщитьСДатой

//------------------------------------ ------------------------------------
Процедура ДобавитьСтроку(Сообщение) Экспорт
	Сам().Сообщить(Сообщение);
КонецПроцедуры // ДобавитьСтроку

// ---------------------------------------  ---------------------------------
процедура ПриЗаписи_Включен(ЗначениеДляУст)
	Включен = ЗначениеДляУст;
КонецПроцедуры // ПриЗаписи_Включен

//------------------------------------ ------------------------------------
Процедура Выключить() Экспорт
	Включен = 0;
КонецПроцедуры // Выключить

//------------------------------------ ------------------------------------
Процедура Включить() Экспорт
	Включен = 1;
КонецПроцедуры // Включить