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

Процедура TurboBLВключен() Экспорт
	Сам = Сам();
	Сам.ПроверитьНастройку("EnableTurboBL", 1);
	Сам.ПроверитьНастройку("TurboBL", 1);
КонецПроцедуры

// не работает by design
Процедура ТестДобавлениеСтрокВТабличнуюЧастьЧерезКонтекстДокумента_НомерСтроки() Экспорт
	Сам = Сам();
	Сам.ПропуститьТест(, "Вне скобок StartBatch/EndBatch");
	Конт = Сам.ОткрытьФорму("Документ.Новый1");

	Конт.УдалитьСтроки(); // очистка контекста

	Конт.НоваяСтрока();
	Сам.ПроверитьРавенство(Конт.НомерСтроки, 1);

	Конт.НоваяСтрока();
	Сам.ПроверитьРавенство(Конт.НомерСтроки, 2);

	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 2);

	//Конт.Форма.Закрыть(0);
	//Конт = 0;
КонецПроцедуры

Процедура ТестДобавлениеСтрокВТабличнуюЧастьЧерезКонтекстДокументаРучнойБатч_НомерСтроки() Экспорт
	Сам = Сам();
	Конт = Сам.ОткрытьФорму("Документ.Новый1");

	_с=СоздатьОбъект("Система");
	_с.StartBatch(Конт);
	
	Конт.УдалитьСтроки(); // очистка контекста

	Конт.НоваяСтрока();
	Сам.ПроверитьРавенство(Конт.НомерСтроки, 1);

	Конт.НоваяСтрока();
	Сам.ПроверитьРавенство(Конт.НомерСтроки, 2);

	_с.EndBatch(Конт);
	
	//Конт.Форма.Закрыть(0);
	//Конт = 0;   
КонецПроцедуры

// не работает by design
Процедура ТестДобавлениеСтрокВТабличнуюЧастьЧерезКонтекстДокумента_РоднойМетод() Экспорт
	Сам = Сам();
	Сам.ПропуститьТест(, "Вне скобок StartBatch/EndBatch");
	Конт = Сам.ОткрытьФорму("Документ.Новый1");

	Конт.УдалитьСтроки(); // очистка контекста
	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 0);

	Конт.НоваяСтрока();
	Конт.Новый1 = "1";
	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 1);
	Сам.ПроверитьРавенство(СокрЛП(Конт.Новый1), "1");

	Конт.НоваяСтрока();
	Конт.Новый1 = "2";
	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 2);
	Сам.ПроверитьРавенство(СокрЛП(Конт.Новый1), "2");

	Конт.НоваяСтрока();
	Конт.Новый1 = "3";
	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 3);
	Сам.ПроверитьРавенство(СокрЛП(Конт.Новый1), "3");

	//Конт.Форма.Закрыть(0);
	//Конт = 0;
КонецПроцедуры

Процедура ТестДобавлениеСтрокВТабличнуюЧастьЧерезКонтекстДокументаРучнойБатч_РоднойМетод() Экспорт
	Сам = Сам();

	_с=СоздатьОбъект("Система");

	Конт = Сам.ОткрытьФорму("Документ.Новый1");

	_с.StartBatch(Конт);
	Конт.УдалитьСтроки(); // очистка контекста

	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 0);

	Конт.НоваяСтрока();
	Конт.Новый1 = "1";
	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 1);
	Сам.ПроверитьРавенство(СокрЛП(Конт.Новый1), "1");

	Конт.НоваяСтрока();
	Конт.Новый1 = "2";
	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 2);
	Сам.ПроверитьРавенство(СокрЛП(Конт.Новый1), "2");

	Конт.НоваяСтрока();
	Конт.Новый1 = "3";
	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 3);
	Сам.ПроверитьРавенство(СокрЛП(Конт.Новый1), "3");

	_с.EndBatch(Конт, 0);
	//Конт.Форма.Закрыть(0);
	//Конт = 0;
КонецПроцедуры

// для чужих методов пока работает автоматически
Процедура ТестДобавлениеСтрокВТабличнуюЧастьЧерезКонтекстДокумента_ЧужойМетод() Экспорт
	TurboBLВключен();
	
	Сам = Сам();
	Конт = Сам.ОткрытьФорму("Документ.Новый1");

	Конт._УдалитьСтроки(); // очистка контекста
	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 0);

	Конт._НоваяСтрока();
	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 1);

	_т =Конт._Заполнить();
	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 3);

	_т.ВыбратьСтроки();
	_т.ПолучитьСтроку();
	Сам.ПроверитьРавенство(СокрЛП(_т.новый1), "1");
	_т.ПолучитьСтроку();
	Сам.ПроверитьРавенство(СокрЛП(_т.новый1), "2");
	_т.ПолучитьСтроку();
	Сам.ПроверитьРавенство(СокрЛП(_т.новый1), "3");

	//Конт.Форма.Закрыть(0);
	//Конт = 0;
КонецПроцедуры

// повторное открытие
Процедура Тест_РаботаСКонтекстомНовогоДокумента_И_ДобавлениеСтрокВТабличнуюЧасть() Экспорт
	Перем Конт, Конт2;

	Сам = Сам();
	Сам.ПропуститьТест(, "Вне скобок StartBatch/EndBatch");

	Конт = Сам.ОткрытьФорму("Документ.Новый1");
	
	Конт.УдалитьСтроки();
	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 0);
	Конт.Форма.Закрыть(0);

	// если закомментированный код раскомментировать, тест будет падать
	//Конт2 = Сам.ОткрытьФорму("Документ.Новый1");
	Конт2 = 0;
	ОткрытьФорму("Документ.Новый1", Конт2);
	
	Конт2.УдалитьСтроки(); // очистка контекста - kms
	Сам.ПроверитьРавенство(Конт2.КоличествоСтрок(), 0);

	Конт2.НоваяСтрока();
	Сам.ПроверитьРавенство(Конт2.КоличествоСтрок(), 1);

КонецПроцедуры

// повторное открытие
Процедура Тест_РаботаСКонтекстомНовогоДокумента_И_ДобавлениеСтрокВТабличнуюЧастьРучнойБатч() Экспорт
	Перем Конт, Конт2;

	Сам = Сам();

	_с=СоздатьОбъект("Система");

	Конт = Сам.ОткрытьФорму("Документ.Новый1");

	_с.StartBatch(Конт);
	
	Конт.УдалитьСтроки();
	Сам.ПроверитьРавенство(Конт.КоличествоСтрок(), 0);
	Конт.Форма.Закрыть(0);
	_с.EndBatch(Конт, 0); // обязательно необходимо
                              
	// если закомментированный код раскомментировать, тест будет падать
	//Конт2 = Сам.ОткрытьФорму("Документ.Новый1");
	Конт2 = 0;
	ОткрытьФорму("Документ.Новый1", Конт2);

	_с.StartBatch(Конт2);
	
	Конт2.УдалитьСтроки(); // очистка контекста
	Сам.ПроверитьРавенство(Конт2.КоличествоСтрок(), 0);

	Конт2.НоваяСтрока();
	Сам.ПроверитьРавенство(Конт2.КоличествоСтрок(), 1);

	_с.EndBatch(Конт2, 0);
КонецПроцедуры
