Перем _СписокВременныхФайлов; // в деструкторе их нужно удалить, проверка существования файла выполняется только в деструкторе

Функция Конт(Конт) Возврат Конт; КонецФункции // : Контекст
Функция Сам() Возврат Конт(Контекст); КонецФункции // : Контекст
Функция База() Возврат Конт(Контекст).ПолучитьБазовыйКласс(); КонецФункции  // : ТестовыйСлучай

// виртуальный метод для переопределения в классах-наследниках
// вызывается всегда перед запуском тестирования теста
// в нем не должно быть исключений (иначе вся система тестирования не будет работать)
//	ВАЖНО: при переопределении метода в классе наследнике
// НЕ забывать вызывать метод из базового класса
//
Процедура Сетап() Экспорт
	База().Сетап(); // обязательно !!
//Сообщить(ТипЗначенияСтр(Сам())+" Сетап - перед НачатьТранзакцию");	
	НачатьТранзакцию();     
//Сообщить(ТипЗначенияСтр(Сам())+" Сетап - после НачатьТранзакцию");	
КонецПроцедуры
	
Процедура Конструктор()
	_СписокВременныхФайлов = СоздатьОбъект("СписокЗначений");
КонецПроцедуры

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

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

Функция ПровестиДокументШпионом(_Документ, СообщенияПроведения) Экспорт
	// Полезная функция для отлова сообщений, выдаваемых 1С-м о причине непроведенности документа.
	
	Попытка
		Шпион = СоздатьОбъект("Шпион1С");
	Исключение
		ЗагрузитьВнешнююКомпоненту("1spy.dll");
		Шпион = СоздатьОбъект("Шпион1С");
	КонецПопытки;
	Шпион.ОчиститьБуфер();
	РезультатПроведения = _Документ.Провести();
	СообщенияПроведения = Шпион.ПолучитьИзБуфера();
	
	Возврат РезультатПроведения;
КонецФункции          

// указываю, что в деструкторе указанный файл нужно удалить, проверка существования файла выполняется только в деструкторе
Процедура ДобавитьВременныйФайл(ПутьКФайлу) Экспорт   
	_СписокВременныхФайлов.ДобавитьЗначение(ПутьКФайлу);
КонецПроцедуры