
Функция Конт(Конт) Возврат Конт; КонецФункции
Функция Сам() Возврат Конт(Контекст); КонецФункции
//_____________________________________________________________________________
Функция ТЗ()
	Возврат СоздатьОбъект("ИндексированнаяТаблица");
КонецФункции

//_____________________________________________________________________________
Функция сз(п1, п2, п3 = "")
	Сп = СоздатьОбъект("СписокЗначений");
	Сп.ДобавитьЗначение(п1);
	Сп.ДобавитьЗначение(п2);
	Сп.ДобавитьЗначение(п3);
	Возврат Сп;
КонецФункции

//_____________________________________________________________________________
Функция Выборка_ЗаполнитьТЗ()
	ТЗ = ТЗ();
	ТЗ.НоваяКолонка("К1");
	ТЗ.НоваяКолонка("К2");
	
	ТЗ.НоваяСтрока(); //1
	ТЗ.к1 = 5; ТЗ.к2 = 1;
	
	ТЗ.НоваяСтрока(); //2
	ТЗ.к1 = 15;
	
	ТЗ.НоваяСтрока(); //3
	ТЗ.к1 = 5; ТЗ.к2 = 2;
	
	ТЗ.НоваяСтрока(); //4
	ТЗ.к1 = 10;
	
	ТЗ.НоваяСтрока(); //5
	ТЗ.к1 = 1;
	Возврат ТЗ;
КонецФункции

//_____________________________________________________________________________
Функция Док(ДатаДок, НомерДок)
	Док = СоздатьОбъект("Документ.Новый1");
	Док.Новый();
	Док.ДатаДок = ДатаДок;
	Док.НомерДок = НомерДок;
	Док.Записать();
	Возврат Док.ТекущийДокумент();
КонецФункции

//_____________________________________________________________________________
Функция Выборка_ЗаполнитьТЗ_Док()
	ТЗ = ТЗ();
	ТЗ.НоваяКолонка("Док");
	ТЗ.НоваяКолонка("стрДок");
	ТЗ.НоваяКолонка("ДатаДок");
	ТЗ.НоваяКолонка("Позиция");
	ТЗ.НоваяКолонка("К1");
	ТЗ.НоваяКолонка("К2");
	
	ТЗ.НоваяСтрока(); //1
	ТЗ.Док = Док('03.01.2005', 4);

	ТЗ.НоваяСтрока(); //2
	ТЗ.Док = Док('03.01.2005', 3);
	
	ТЗ.НоваяСтрока(); //3
	ТЗ.Док = Док('01.01.2005', 9);
	Док = ТЗ.Док;
	
	ТЗ.НоваяСтрока(); //4
	ТЗ.Док = Док;
	
	ТЗ.НоваяСтрока(); //5
	Док = Док('02.01.2005', 1);
	ТЗ.Док = Док;

	ТЗ.НоваяСтрока(); //6
	ТЗ.Док = Док;

	ТЗ.ВыбратьСтроки();
	Пока ТЗ.ПолучитьСтроку() = 1 Цикл
		ТЗ.стрДок = ""+ТЗ.Док;
		ТЗ.ДатаДок = ТЗ.Док.ДатаДок;
		ТЗ.Позиция = СформироватьПозициюДокумента(ТЗ.Док);
		ТЗ.к1 = ТЗ.НомерСтроки;
		ТЗ.к2 = ТЗ.НомерСтроки * 2;
	КонецЦикла;

	Возврат ТЗ;
КонецФункции

//_____________________________________________________________________________
Функция Спр(Наименование, Код)
	Спр = СоздатьОбъект("Справочник.Новый1");
	Спр.Новый();
	Спр.Наименование = Наименование;
	Спр.Код = Код;
	Спр.Записать();
	Возврат Спр.ТекущийЭлемент();
КонецФункции

//_____________________________________________________________________________
Функция Выборка_ЗаполнитьТЗ_Спр()
	ТЗ = ТЗ();
	ТЗ.НоваяКолонка("Спр");
	ТЗ.НоваяКолонка("стрСпр");
	ТЗ.НоваяКолонка("К1");
	ТЗ.НоваяКолонка("К2");
	
	ТЗ.НоваяСтрока(); //1
	ТЗ.Спр = Спр("1 Запись 5", 5);

	ТЗ.НоваяСтрока(); //2
	ТЗ.Спр = Спр("1 Запись 1", 1);

	ТЗ.НоваяСтрока(); //3
	ТЗ.Спр = Спр("3 Запись 6", 6);

	ТЗ.НоваяСтрока(); //4
	ТЗ.Спр = Спр("2 Запись 7", 7);

	ТЗ.НоваяСтрока(); //5
	ТЗ.Спр = Спр("4 Запись 2", 2);

	ТЗ.ВыбратьСтроки();
	Пока ТЗ.ПолучитьСтроку() = 1 Цикл
		ТЗ.стрСпр = ""+ТЗ.Спр;
		ТЗ.к1 = ТЗ.НомерСтроки;
		ТЗ.к2 = ТЗ.НомерСтроки * 2;
	КонецЦикла;

	Возврат ТЗ;
КонецФункции

//_____________________________________________________________________________
Процедура ВывестиТЗ(ТЗ, Индекс = "")
	ТЗ.ВыбратьСтроки(Индекс);
	Пока ТЗ.ПолучитьСтроку(Индекс) = 1 Цикл
		Сообщить(""+ТЗ.НомерСтроки+": "+ТЗ.к1+"  ("+ТипЗначенияСтр(ТЗ.к1)+")");
	КонецЦикла;
КонецПроцедуры

//_____________________________________________________________________________
Процедура _РедакторТЗ(ТЗ, Индекс = "")
	_ТЗ = СоздатьОбъект("ТаблицаЗначений");
	ТЗ.Выгрузить(_ТЗ, Индекс);
	РедакторТЗ(_ТЗ);
КонецПроцедуры


//_____________________________________________________________________________
Процедура тестСоздатьСтроку() Экспорт
	ТЗ = ТЗ();
	Сам().ПроверитьРавенство(ТЗ.НоваяСтрока(), 1);
	Сам().ПроверитьРавенство(ТЗ.НоваяСтрока(), 2);
КонецПроцедуры


//_____________________________________________________________________________
Процедура тестНомерСтроки() Экспорт
	Сам = Сам();
	ТЗ = ТЗ();

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

	ТЗ.НоваяСтрока();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 2);
	ТЗ.к1 = 10;

	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	
	ТЗ.НомерСтроки = 1;
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестНомерСтрокиСИндексом() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	
	ТЗ.ДобавитьИндекс("Инд1", "к1");
	ТЗ.ДобавитьИндекс("Инд2", "к2,к1");
	
	ТЗ.ВыбратьСтроки("Инд1");
	ТЗ.ПолучитьСтроку("Инд1");
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки("Инд1"), 5);
	ТЗ.ПолучитьСтроку("Инд1");
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки("Инд1"), 1);

	ТЗ.ВыбратьСтроки("Инд2");
	ТЗ.ПолучитьСтроку("Инд2");
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки("Инд2"), 5);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки("Инд1"), 1);

	ТЗ.ПолучитьСтроку("Инд2");
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки("Инд2"), 4);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки("Инд1"), 1);

	ТЗ.ПолучитьСтроку("Инд2");
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 2);
	Сам.ПроверитьРавенство(ТЗ.к1, 15);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки("Инд2"), 2);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки("Инд1"), 1);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестКоличествоСтрок() Экспорт
	Сам = Сам();
	ТЗ = ТЗ();

	ТЗ.НоваяКолонка("К1");
	
	Сам.ПроверитьРавенство(ТЗ.КоличествоСтрок(), 0);
	ТЗ.НоваяСтрока();
	Сам.ПроверитьРавенство(ТЗ.КоличествоСтрок(), 1);
	ТЗ.НоваяСтрока();
	Сам.ПроверитьРавенство(ТЗ.КоличествоСтрок(), 2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестКоличествоСтрокПоИндексу() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.ДобавитьИндекс("к1","к1", 0); // БЕЗ УНИКАЛЬНОСТИ
	Сам.ПроверитьРавенство(ТЗ.КоличествоСтрок("к1"), 5);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестКоличествоСтрокПоИндексуСУникальнымиЗначениями() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.ДобавитьИндекс("к1","к1", 1); // С УНИКАЛЬНЫМИ КЛЮЧАМИ
	Сам.ПроверитьРавенство(ТЗ.КоличествоСтрок("к1"), 4);
КонецПроцедуры
	
//_____________________________________________________________________________
Процедура тестКоличествоСтрокПоФильтру() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.Сортировать("к1");
	ТЗ.УстановитьФильтр(5, 11);
	Сам.ПроверитьРавенство(ТЗ.КоличествоСтрок(), 3);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестСоздатьКолонку() Экспорт
	ТЗ = ТЗ();
	Сам().ПроверитьРавенство(ТЗ.НоваяКолонка("К1"), 1);
	Сам().ПроверитьРавенство(ТЗ.НоваяКолонка("К2"), 2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестКоличествоКолонок() Экспорт
	ТЗ = ТЗ();
	Сам().ПроверитьРавенство(ТЗ.КоличествоКолонок(), 0);
	ТЗ.НоваяКолонка("К1");
	Сам().ПроверитьРавенство(ТЗ.КоличествоКолонок(), 1);
	ТЗ.НоваяКолонка("К2");
	Сам().ПроверитьРавенство(ТЗ.КоличествоКолонок(), 2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестИмяКолонки() Экспорт
	ТЗ = ТЗ();
	ТЗ.НоваяКолонка("К1");
	Сам().ПроверитьРавенство(ТЗ.ИмяКолонки(1), "К1");
КонецПроцедуры

//_____________________________________________________________________________
Процедура НовКол(Сп) Экспорт
	Сп.ПолучитьЗначение(1).НоваяКолонка(Сп.ПолучитьЗначение(2));
КонецПроцедуры
//_____________________________________________________________________________
Процедура тестСоздатьКолонку_Ошибка() Экспорт
	ТЗ = ТЗ();
	
	Сам().ПроверитьРавенство(ТЗ.НоваяКолонка("К1"), 1);
	Сам().ПроверитьРавенство(ТЗ.НоваяКолонка("К2"), 2);
	
	Сам().ПроверитьИсключение(Сам(), "НовКол", Сз(ТЗ, "К1"));
	//Сам().ПроверитьИсключение(Сам(), "НовКол", "/К2");
	Сам().ПроверитьИсключение(Сам(), "НовКол", ПолучитьПустоеЗначение());
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестУдалитьКолонку() Экспорт
	Сам = Сам();
	ТЗ = ТЗ();
	
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяСтрока();
	Сам().ПроверитьРавенство(ТЗ.КоличествоКолонок(), 2);
	ТЗ.УдалитьКолонку("к2");
	Сам().ПроверитьРавенство(ТЗ.КоличествоКолонок(), 1);
	ТЗ.УдалитьКолонку(1);
	Сам().ПроверитьРавенство(ТЗ.КоличествоКолонок(), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестУдалитьКолонку_Ошибка() Экспорт
	Сам = Сам();
	ТЗ = ТЗ();
	
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяСтрока();
	Сам().ПроверитьРавенство(ТЗ.КоличествоКолонок(), 2);
	
	ТЗ.ДобавитьИндекс("Индекс1", "к1, к2");

	Сам().ПроверитьИсключение(ТЗ, "УдалитьКолонку", "к2");
	Сам().ПроверитьИсключение(ТЗ, "УдалитьКолонку", "к3");
	Сам().ПроверитьИсключение(ТЗ, "УдалитьКолонку", 0);
	Сам().ПроверитьИсключение(ТЗ, "УдалитьКолонку", 1);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗаполнитьСтроку() Экспорт
	Сам = Сам();
	ТЗ = ТЗ();
	ТЗ.НоваяКолонка("к1");
	ТЗ2 = Выборка_ЗаполнитьТЗ();
	
	ТЗ.НоваяСтрока();
	ТЗ.ЗаполнитьСтроку(, ТЗ2, 1);
	Сам.ПроверитьРавенство(ТЗ.к1, ТЗ2.Получить(1, 1));

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

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

	н = ТЗ.НоваяСтрока();
	ТЗ.ЗаполнитьСтроку(н, ТЗ2, 1, 1); //по именам колонок
	Сам.ПроверитьРавенство(ТЗ.к1, ТЗ2.Получить(1, 1));
	Сам.ПроверитьРавенство(ТЗ.к2, ТЗ2.Получить(1, 2));
	Сам.ПроверитьРавенство(ТЗ.к3, ПолучитьПустоеЗначение());
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗаполнитьСтрокуИзСебя() Экспорт
	Сам = Сам();
	ТЗ = ТЗ();
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяКолонка("к3");
	
	н = ТЗ.НоваяСтрока();
	ТЗ.к1 = 10; ТЗ.к2 = 20; ТЗ.к3 = 30;

	ТЗ.НоваяСтрока();
	ТЗ.ЗаполнитьСтроку(, ТЗ, н, 0);
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.к2, 20);
	Сам.ПроверитьРавенство(ТЗ.к3, 30);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗаполнитьСтрокуСЗ() Экспорт
	Сам = Сам();
	ТЗ = ТЗ();
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяКолонка("к3");
	
	Сп = СоздатьОбъект("СписокЗначений");
	Сп.ДобавитьЗначение(1);
	Сп.ДобавитьЗначение(2);
	Сп.ДобавитьЗначение(3);
	Сп.Установить("к2", 4);
	Сп.Установить("к3", 5);
	Сп.Установить("к1", 6);
	
	ТЗ.НоваяСтрока();
	ТЗ.ЗаполнитьСтроку(, Сп);
	Сам.ПроверитьРавенство(ТЗ.Получить(, 1), 1);
	Сам.ПроверитьРавенство(ТЗ.Получить(, 2), 2);
	Сам.ПроверитьРавенство(ТЗ.Получить(, 3), 3);

	ТЗ.НоваяСтрока();
	ТЗ.ЗаполнитьСтроку(, Сп,, 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 6);
	Сам.ПроверитьРавенство(ТЗ.к2, 4);
	Сам.ПроверитьРавенство(ТЗ.к3, 5);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗаполнитьСтрокуТЗ() Экспорт
	Сам = Сам();

	_ТЗ = СоздатьОбъект("ТаблицаЗначений");
	_ТЗ.НоваяКолонка("к3");
	_ТЗ.НоваяКолонка("к2");
	_ТЗ.НоваяКолонка("к1");
	_ТЗ.НоваяСтрока();
	_ТЗ.к3 = 1;
	_ТЗ.к2 = 2;
	_ТЗ.к1 = 3;

	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяКолонка("к3");
	
	ТЗ.НоваяСтрока();
	ТЗ.ЗаполнитьСтроку(, _ТЗ, 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.к3, 3);

	ТЗ.НоваяСтрока();
	ТЗ.ЗаполнитьСтроку(, _ТЗ, 1, 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 3);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.к3, 1);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗаполнитьСтрокуЗнач() Экспорт
	Сам = Сам();

	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяКолонка("к3");
	
	ТЗ.НоваяСтрока();
	ТЗ.ЗаполнитьСтроку(, 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.к2, 1);
	Сам.ПроверитьРавенство(ТЗ.к3, 1);

	ТЗ.НоваяСтрока();
	ТЗ.ЗаполнитьСтроку(, 2);
	Сам.ПроверитьРавенство(ТЗ.к1, 2);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.к3, 2);

	ТЗ.ЗаполнитьСтроку(, 2, 2);
	Сам.ПроверитьРавенство(ТЗ.к1, 2);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.к3, 2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗаполнитьКолонкуЗнач() Экспорт
	Сам = Сам();

	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяКолонка("к3");
	
	Для н = 1 По 6 Цикл
		ТЗ.НоваяСтрока();
		ТЗ.к1 = н;
		ТЗ.к2 = 0;
		ТЗ.к3 = 0;
	КонецЦикла;
	
	ТЗ.ДобавитьИндекс("и1", "к1");
	ТЗ.УстановитьФильтр(3, 4, "и1");

	ТЗ.ЗаполнитьКолонку("и1", "к2", 2);
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(2, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(3, "к2"), 2);
	Сам.ПроверитьРавенство(ТЗ.Получить(4, "к2"), 2);
	Сам.ПроверитьРавенство(ТЗ.Получить(5, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(6, "к2"), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗаполнитьКолонкуСЗ() Экспорт
	Сам = Сам();

	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяКолонка("к3");
	
	Для н = 1 По 6 Цикл
		ТЗ.НоваяСтрока();
		ТЗ.к1 = н;
		ТЗ.к2 = 0;
		ТЗ.к3 = 0;
	КонецЦикла;
	
	ТЗ.ДобавитьИндекс("и1", "к1");
	ТЗ.УстановитьФильтр(2, 4, "и1");
	
	Сз = СоздатьОбъект("СписокЗначений");
	Сз.ДобавитьЗначение(4);
	Сз.ДобавитьЗначение(6);
	Сз.ДобавитьЗначение(8);
	Сз.ДобавитьЗначение(10);
	Сз.ДобавитьЗначение(12);

	ТЗ.ЗаполнитьКолонку("и1", "к2", Сз);
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(2, "к2"), 4);
	Сам.ПроверитьРавенство(ТЗ.Получить(3, "к2"), 6);
	Сам.ПроверитьРавенство(ТЗ.Получить(4, "к2"), 8);
	Сам.ПроверитьРавенство(ТЗ.Получить(5, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(6, "к2"), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗаполнитьКолонкуТЗ() Экспорт
	Сам = Сам();

	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяКолонка("к3");
	
	_ТЗ = СоздатьОбъект("ТаблицаЗначений");
	_ТЗ.НоваяКолонка("к1");
	_ТЗ.НоваяКолонка("к2");
	_ТЗ.НоваяКолонка("к3");
	
	Для н = 1 По 6 Цикл
		ТЗ.НоваяСтрока();
		ТЗ.к1 = н;
		ТЗ.к2 = 0;
		ТЗ.к3 = 0;

		_ТЗ.НоваяСтрока();
		_ТЗ.к1 = н;
		_ТЗ.к2 = н*2;
		_ТЗ.к3 = н*4;
	КонецЦикла;
	
	ТЗ.ДобавитьИндекс("и1", "к1");
	ТЗ.УстановитьФильтр(2, 4, "и1");
	
	ТЗ.ЗаполнитьКолонку("и1", "к2", _ТЗ, "к2");
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(2, "к2"), 2);
	Сам.ПроверитьРавенство(ТЗ.Получить(3, "к2"), 4);
	Сам.ПроверитьРавенство(ТЗ.Получить(4, "к2"), 6);
	Сам.ПроверитьРавенство(ТЗ.Получить(5, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(6, "к2"), 0);

	ТЗ.ЗаполнитьКолонку("и1", "к2", _ТЗ, "к3");
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(2, "к2"), 4);
	Сам.ПроверитьРавенство(ТЗ.Получить(3, "к2"), 8);
	Сам.ПроверитьРавенство(ТЗ.Получить(4, "к2"), 12);
	Сам.ПроверитьРавенство(ТЗ.Получить(5, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(6, "к2"), 0);

	ТЗ.ЗаполнитьКолонку("и1", "к3", _ТЗ);
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "к3"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(2, "к3"), 4);
	Сам.ПроверитьРавенство(ТЗ.Получить(3, "к3"), 8);
	Сам.ПроверитьРавенство(ТЗ.Получить(4, "к3"), 12);
	Сам.ПроверитьРавенство(ТЗ.Получить(5, "к3"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(6, "к3"), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗаполнитьКолонкуИндТЗ() Экспорт
	Сам = Сам();

	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяКолонка("к3");
	
	_ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	_ТЗ.НоваяКолонка("к1");
	_ТЗ.НоваяКолонка("к2");
	_ТЗ.НоваяКолонка("к3");
	
	Для н = 1 По 6 Цикл
		ТЗ.НоваяСтрока();
		ТЗ.к1 = н;
		ТЗ.к2 = 0;
		ТЗ.к3 = 0;

		_ТЗ.НоваяСтрока();
		_ТЗ.к1 = н;
		_ТЗ.к2 = н*2;
		_ТЗ.к3 = н*4;
	КонецЦикла;
	
	ТЗ.ДобавитьИндекс("и1", "к1");
	ТЗ.УстановитьФильтр(2, 4, "и1");
	
	_ТЗ.ДобавитьИндекс("и1", "к1");
	_ТЗ.УстановитьФильтр(3, 6, "и1");
	
	ТЗ.ЗаполнитьКолонку("и1", "к2", _ТЗ, "и1", "к2");
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(2, "к2"), 6);
	Сам.ПроверитьРавенство(ТЗ.Получить(3, "к2"), 8);
	Сам.ПроверитьРавенство(ТЗ.Получить(4, "к2"), 10);
	Сам.ПроверитьРавенство(ТЗ.Получить(5, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(6, "к2"), 0);

	ТЗ.ЗаполнитьКолонку("и1", "к2", _ТЗ, "и1", "к3");
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(2, "к2"), 12);
	Сам.ПроверитьРавенство(ТЗ.Получить(3, "к2"), 16);
	Сам.ПроверитьРавенство(ТЗ.Получить(4, "к2"), 20);
	Сам.ПроверитьРавенство(ТЗ.Получить(5, "к2"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(6, "к2"), 0);

	ТЗ.ЗаполнитьКолонку("и1", "к3", _ТЗ, "и1");
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "к3"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(2, "к3"), 12);
	Сам.ПроверитьРавенство(ТЗ.Получить(3, "к3"), 16);
	Сам.ПроверитьРавенство(ТЗ.Получить(4, "к3"), 20);
	Сам.ПроверитьРавенство(ТЗ.Получить(5, "к3"), 0);
	Сам.ПроверитьРавенство(ТЗ.Получить(6, "к3"), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗаполнитьКолонкуСИзменеиемИндекса() Экспорт
	Сам = Сам();

	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяКолонка("к3");
	
	Для н = 1 По 6 Цикл
		ТЗ.НоваяСтрока();
		ТЗ.к1 = н;
		ТЗ.к2 = 0;
		ТЗ.к3 = 0;
	КонецЦикла;
	
	ТЗ.ДобавитьИндекс("и1", "к1");
	ТЗ.УстановитьФильтр(3, 4, "и1");

	ТЗ.ЗаполнитьКолонку("и1", "к1", 10);
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "к1"), 1);
	Сам.ПроверитьРавенство(ТЗ.Получить(2, "к1"), 2);
	Сам.ПроверитьРавенство(ТЗ.Получить(3, "к1"), 10);
	Сам.ПроверитьРавенство(ТЗ.Получить(4, "к1"), 10);
	Сам.ПроверитьРавенство(ТЗ.Получить(5, "к1"), 5);
	Сам.ПроверитьРавенство(ТЗ.Получить(6, "к1"), 6);

	Сам.ПроверитьРавенство(ТЗ.КоличествоСтрок("и1"), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура _ЗаполнитьКолонкуОшибка(Парам) Экспорт
	ТЗ = Парам.ПолучитьЗначение(1);
	Индекс = Парам.ПолучитьЗначение(2);
	Колонка = Парам.ПолучитьЗначение(2);
	Значение = Парам.ПолучитьЗначение(2);
	ТЗ.ЗаполнитьКолонку(Индекс, Колонка, Значение);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗаполнитьКолонкуОшибка() Экспорт
	Сам = Сам();

	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяКолонка("к3");
	
	Для н = 1 По 6 Цикл
		ТЗ.НоваяСтрока();
		ТЗ.к1 = н;
		ТЗ.к2 = 0;
		ТЗ.к3 = 0;
	КонецЦикла;
	

	Сп = СоздатьОбъект("СписокЗначений");
	Сп.Установить("ТЗ", ТЗ);
	Сп.Установить("Индекс", "и1");
	Сп.Установить("Колонка", "к5");
	Сп.Установить("Значение", 1);

	Сам.ПроверитьИсключение(Сам, "_ЗаполнитьКолонкуОшибка", Сп);

	Сп.Установить("Индекс", "и2");
	Сп.Установить("Колонка", "к1");
	Сам.ПроверитьИсключение(Сам, "_ЗаполнитьКолонкуОшибка", Сп);

	Сп.Установить("Индекс", ПолучитьПустоеЗначение());
	Сп.Установить("Колонка", ПолучитьПустоеЗначение());
	Сам.ПроверитьИсключение(Сам, "_ЗаполнитьКолонкуОшибка", Сп);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестУстановитьЗначение() Экспорт
	Сам = Сам();
	ТЗ = ТЗ();
	
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяСтрока();
	ТЗ.УстановитьЗначение(1, 1, 123);
	Сам().ПроверитьРавенство(ТЗ.к1, 123);

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

	ТЗ.УстановитьЗначение(1, 1, 30);
	Сам().ПроверитьРавенство(ТЗ.Получить(1, 1), 30);

	ТЗ.УстановитьЗначение(1, "к1", 60);
	Сам().ПроверитьРавенство(ТЗ.ПолучитьЗначение(1, 1), 60);

	ТЗ.Установить(1, "к1", 70);
	Сам().ПроверитьРавенство(ТЗ.Получить(1, 1), 70);
КонецПроцедуры

//_____________________________________________________________________________
Процедура _ПолучитьЗначение(Сп) Экспорт
	ТЗ = ТЗ();
	ТЗ.Получить(Сп.ПолучитьЗначение(1), Сп.ПолучитьЗначение(2));
КонецПроцедуры
//_____________________________________________________________________________
Процедура _НетТакойКолонки(парам) Экспорт
	ТЗ = ТЗ();
	з = ТЗ.НетТакойКолонки;
КонецПроцедуры
//_____________________________________________________________________________
Процедура тестПолучитьЗначение() Экспорт
	Сам = Сам();
	ТЗ = ТЗ();
	
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяСтрока();
	ТЗ.Установить(1, 1, 123);

	Сам.ПроверитьРавенство(ТЗ.Получить(1, 1), 123);
	Сам.ПроверитьРавенство(ТЗ.ПолучитьЗначение(1, 1), 123);
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "к1"), 123);
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "К1"), 123);
	Сам.ПроверитьРавенство(ТЗ.ПолучитьЗначение(1, "к1"), 123);
	Сам.ПроверитьРавенство(ТЗ.Получить(, 1), 123);
	Сам.ПроверитьРавенство(ТЗ.к1, 123);
	Сам.ПроверитьРавенство(ТЗ.К1, 123);
	
	ТЗ.к1 = 333;
	Сам.ПроверитьРавенство(ТЗ.к1, 333);
	ТЗ.НоваяСтрока();
	Сам.ПроверитьРавенство(ТЗ.к1, ПолучитьПустоеЗначение());
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестПолучитьЗначение_Ошибка() Экспорт
	Сам = Сам();
	ТЗ = ТЗ();

	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяСтрока();

	Сам.ПроверитьИсключение(Сам, "_ПолучитьЗначение", сз(0, 1));
	Сам.ПроверитьИсключение(Сам, "_ПолучитьЗначение", сз(1, 0));
	Сам.ПроверитьИсключение(Сам, "_ПолучитьЗначение", сз(2, 1));
	Сам.ПроверитьИсключение(Сам, "_ПолучитьЗначение", сз(1, 2));
	Сам.ПроверитьИсключение(Сам, "_ПолучитьЗначение", сз(2, 2));

	Сам.ПроверитьИсключение(Сам, "_НетТакойКолонки", "");
КонецПроцедуры


//_____________________________________________________________________________
Процедура __тестВыборкаВперед(ИмяИндекса)
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	
	Если ПустаяСтрока(ИмяИндекса) = 1 Тогда
		ТЗ.Сортировать("к1");
	Иначе
		ТЗ.ДобавитьИндекс(ИмяИндекса, "к1");
	КонецЕсли;
	
	Сам.ПроверитьРавенство(ТЗ.ВыбратьСтроки(ИмяИндекса), 1);
	
	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(ИмяИндекса), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(ИмяИндекса), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(ИмяИндекса), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(ИмяИндекса), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(ИмяИндекса), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 15);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 2);

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(ИмяИндекса), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВыборкаВперед() Экспорт
	__тестВыборкаВперед("");
	__тестВыборкаВперед(ПолучитьПустоеЗначение());
	__тестВыборкаВперед("Индекс1");
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестСортировкаПоУбыванию() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.Сортировать("-к1");
	
	Сам.ПроверитьРавенство(ТЗ.ВыбратьСтроки(), 1);
	
	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 15);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 2);

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);

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

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);

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

//_____________________________________________________________________________
Процедура тестСортировкаСОбрезаниемПробелов() Экспорт
	Сам = Сам();
	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	
	ТЗ.НоваяСтрока(); ТЗ.К1 = "222";
	ТЗ.НоваяСтрока(); ТЗ.К1 = "  111  ";
	ТЗ.НоваяСтрока(); ТЗ.К1 = "111";
	ТЗ.НоваяСтрока(); ТЗ.К1 = "  222  ";
	ТЗ.НоваяСтрока(); ТЗ.К1 = " 111";
	
	ТЗ.Сортировать("к1#");
	ТЗ.ВыбратьСтроки();

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, "  111  ");

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, "111");

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, " 111");

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, "222");

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, "  222  ");
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестСортировкаБезУчетаРегистра() Экспорт
	Сам = Сам();
	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	
	ТЗ.НоваяСтрока(); ТЗ.К1 = "один";
	ТЗ.НоваяСтрока(); ТЗ.К1 = "Один";
	ТЗ.НоваяСтрока(); ТЗ.К1 = "ОдиН";
	ТЗ.НоваяСтрока(); ТЗ.К1 = "два";
	ТЗ.НоваяСтрока(); ТЗ.К1 = "Два";

	ТЗ.Сортировать("^к1");
	ТЗ.ВыбратьСтроки();

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, "два");

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, "Два");

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, "один");

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, "Один");

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, "ОдиН");
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВыборкаНазад() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.Сортировать("к1");
	
	Сам.ПроверитьРавенство(ТЗ.ВКонец(), 1);
	
	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 15);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 2);

	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);

	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);
	
	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВыборкаВпередНазад() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.Сортировать("к1");
	
	Сам.ПроверитьРавенство(ТЗ.ВыбратьСтроки(), 1);
	
	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);

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

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);

	//Назад
	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);

	//и снова вперед
	Сам.ПроверитьРавенство(ТЗ.СледующаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестИндексУникален() Экспорт
	Сам = Сам();
	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяСтрока(); ТЗ.к1 = 1;
	ТЗ.НоваяСтрока(); ТЗ.к1 = 2;
	ТЗ.НоваяСтрока(); ТЗ.к1 = 3;
	ТЗ.Сортировать("к1");

	Сам.ПроверитьРавенство(ТЗ.ИндексУникален(), 1);

	ТЗ.НоваяСтрока(); ТЗ.к1 = 1;
	Сам.ПроверитьРавенство(ТЗ.ИндексУникален(), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестКоличествоУникальныхКлючей() Экспорт
	Сам = Сам();
	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяСтрока(); ТЗ.к1 = 1;
	ТЗ.НоваяСтрока(); ТЗ.к1 = 2;
	ТЗ.НоваяСтрока(); ТЗ.к1 = 3;
	ТЗ.Сортировать("к1");

	Сам.ПроверитьРавенство(ТЗ.КоличествоУникальныхКлючей(), 3);

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

	ТЗ.НоваяСтрока(); ТЗ.к1 = 3;
	//ТЗ.Сортировать("к1");
	Сам.ПроверитьРавенство(ТЗ.КоличествоУникальныхКлючей(), 1);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестКоличествоЗначений() Экспорт
	Сам = Сам();
	ТЗ = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяСтрока(); ТЗ.к1 = 1;
	ТЗ.НоваяСтрока(); ТЗ.к1 = 2;
	ТЗ.НоваяСтрока(); ТЗ.к1 = 3;
	ТЗ.Сортировать("к1");

	Сам.ПроверитьРавенство(ТЗ.КоличествоЗначенийКлюча(, 1), 1);

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

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

	ТЗ.НоваяСтрока(); ТЗ.к1 = 3;
	Сам.ПроверитьРавенство(ТЗ.КоличествоЗначенийКлюча(, 3), 2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестСортировкаУник() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Док();
	ТЗ.ДобавитьИндекс("Индекс1", "Док", 1);
	
	//_РедакторТЗ(ТЗ, "Индекс1");
	
	ТЗ.ВыбратьСтроки("Индекс1");

	ТЗ.СледующаяСтрока("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

	ТЗ.СледующаяСтрока("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);

	ТЗ.СледующаяСтрока("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

	ТЗ.СледующаяСтрока("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 2);

	Сам.ПроверитьРавенство(ТЗ.СледующаяСтрока("Индекс1"), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестСортировкаСпр() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Спр();
	ТЗ.Сортировать("Спр");
	
	//_РедакторТЗ(ТЗ);
	
	ТЗ.ВыбратьСтроки();
	
	ТЗ.СледующаяСтрока();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 2);
	
	ТЗ.СледующаяСтрока();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);
	
	ТЗ.СледующаяСтрока();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);
	
	ТЗ.СледующаяСтрока();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);
	
	ТЗ.СледующаяСтрока();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);
	
	Сам.ПроверитьРавенство(ТЗ.СледующаяСтрока(), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестДобавлениеИндекса() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	
	Сам.ПроверитьРавенство(ТЗ.ДобавитьИндекс("Индекс1", "к1"), 2);
	Сам.ПроверитьРавенство(ТЗ.ДобавитьИндекс("Индекс2", "к1, к2"), 3);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестУдалениеИндекса() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	
	ТЗ.ДобавитьИндекс("Индекс1", "к1");
	ТЗ.УдалитьИндекс("Индекс1");
	
	н = ТЗ.ДобавитьИндекс("Индекс2", "к1");
	ТЗ.УдалитьИндекс(2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестСортировка_Ошибка() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	
	Сам.ПроверитьИсключение(ТЗ, "Сортировать", 1);
	Сам.ПроверитьИсключение(ТЗ, "Сортировать", "к3");
	
	Сам.ПроверитьИсключение(ТЗ, "УдалитьИндекс", "");
	Сам.ПроверитьИсключение(ТЗ, "УдалитьИндекс", "к3");
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестИзменениеЗначения() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	
	ТЗ.Сортировать("к1");
	ТЗ.УстановитьЗначение(5, 1, 6);
	//ВывестиТЗ(ТЗ);
	ТЗ.ВНачало();
	ТЗ.СледующаяСтрока();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);
	ТЗ.СледующаяСтрока();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);
	ТЗ.СледующаяСтрока();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);
	Сам.ПроверитьРавенство(ТЗ.к1, 6);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВыборкаВпередБезИндекса() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();

	Сам.ПроверитьРавенство(ТЗ.ВыбратьСтроки(), 1);
	
	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

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

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);

	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);

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

//_____________________________________________________________________________
Процедура тестВыборкаНазадБезИндекса() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();

	Сам.ПроверитьРавенство(ТЗ.ВКонец(), 1);
	

	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);

	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);

	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 15);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 2);

	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

	Сам.ПроверитьРавенство(ТЗ.ПредыдущаяСтрока(), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестПоиск() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.Сортировать("к1");
	сзКлюч = СоздатьОбъект("СписокЗначений");
	сзКлюч.ДобавитьЗначение(0);
	
	сзКлюч.УстановитьЗначение(1, 5);
	Сам.ПроверитьРавенство(ТЗ.НайтиСтроку(, сзКлюч, 0, 1), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

	сзКлюч.УстановитьЗначение(1, 15);
	Сам.ПроверитьРавенство(ТЗ.НайтиСтроку(, сзКлюч, 0, 1), 2);
	Сам.ПроверитьРавенство(ТЗ.к1, 15);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 2);

	сзКлюч.УстановитьЗначение(1, 5);
	Сам.ПроверитьРавенство(ТЗ.НайтиСтроку(, сзКлюч, 1, 1), 3);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

	сзКлюч.УстановитьЗначение(1, 10);
	Сам.ПроверитьРавенство(ТЗ.НайтиСтроку(, сзКлюч, 0, 1), 4);
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);
	
	сзКлюч.УстановитьЗначение(1, 1);
	Сам.ПроверитьРавенство(ТЗ.НайтиСтроку(, сзКлюч, 0, 1), 5);
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);
	
	сзКлюч.УстановитьЗначение(1, 100);
	Сам.ПроверитьРавенство(ТЗ.НайтиСтроку(, сзКлюч, 0, 1), 0);


	сзКлюч.УстановитьЗначение(1, 10);
	Сам.ПроверитьРавенство(ТЗ.НайтиСтроку(, сзКлюч, 0, 1), 4);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);

	сзКлюч.УстановитьЗначение(1, 5);
	Сам.ПроверитьРавенство(ТЗ.НайтиСтроку(, сзКлюч, 0, 0), 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестПоискОдноЗначение() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.Сортировать("к1");
	
	Сам.ПроверитьРавенство(ТЗ.НайтиСтроку(, 5, 0, 1), 1);
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

	Сам.ПроверитьРавенство(ТЗ.НайтиСтроку(, 15, 0, 1), 2);
	Сам.ПроверитьРавенство(ТЗ.к1, 15);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестНайтиБлижайшее() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.Сортировать("к1");
	сзКлюч = СоздатьОбъект("СписокЗначений");
	сзКлюч.ДобавитьЗначение(0);
	
	//----------------------------------------------------------------
	сзКлюч.УстановитьЗначение(1, 0.1);
	Сам.ПроверитьРавенство(ТЗ.НайтиБлижайшуюБольше(сзКлюч, 1), 5);

	сзКлюч.УстановитьЗначение(1, 5);
	Сам.ПроверитьРавенство(ТЗ.НайтиБлижайшуюБольше(сзКлюч, 1), 1);

	сзКлюч.УстановитьЗначение(1, 4);
	Сам.ПроверитьРавенство(ТЗ.НайтиБлижайшуюБольше(сзКлюч, 1), 1);
	
	сзКлюч.УстановитьЗначение(1, 11);
	Сам.ПроверитьРавенство(ТЗ.НайтиБлижайшуюБольше(сзКлюч, 1), 2);
	
	сзКлюч.УстановитьЗначение(1, 100);
	Сам.ПроверитьРавенство(ТЗ.НайтиБлижайшуюБольше(сзКлюч, 1), 0);

	//----------------------------------------------------------------
	сзКлюч.УстановитьЗначение(1, 100);
	Сам.ПроверитьРавенство(ТЗ.НайтиБлижайшуюМеньше(сзКлюч, 1), 2);

	сзКлюч.УстановитьЗначение(1, 11);
	Сам.ПроверитьРавенство(ТЗ.НайтиБлижайшуюМеньше(сзКлюч, 1), 4);

	сзКлюч.УстановитьЗначение(1, 8);
	Сам.ПроверитьРавенство(ТЗ.НайтиБлижайшуюМеньше(сзКлюч, 1), 3);

	сзКлюч.УстановитьЗначение(1, 1);
	Сам.ПроверитьРавенство(ТЗ.НайтиБлижайшуюМеньше(сзКлюч, 1), 5);

	сзКлюч.УстановитьЗначение(1, 0.1);
	Сам.ПроверитьРавенство(ТЗ.НайтиБлижайшуюМеньше(сзКлюч, 1), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестПоиск_Ошибка_Найти(Сп) Экспорт
	ТЗ = Сп.ПолучитьЗначение(1);
	Индекс = Сп.ПолучитьЗначение(2);
	сзКлюч = Сп.ПолучитьЗначение(3);
	ТЗ.НайтиСтроку(Индекс, сзКлюч);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестПоиск_Ошибка() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.Сортировать("к1");

	сзКлюч = СоздатьОбъект("СписокЗначений");
	
	//в сз д.б. как минимум 1 значение
	Сам.ПроверитьИсключение(Сам, "тестПоиск_Ошибка_Найти", сз(ТЗ, "", сзКлюч));

	//если индекс по нескольким колонкам, то ключ д.б. СписокЗначений
	ТЗ.Сортировать("к1, к2");
	сзКлюч = 5;
	Сам.ПроверитьИсключение(Сам, "тестПоиск_Ошибка_Найти", сз(ТЗ, "", сзКлюч));
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестФильтр() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.Сортировать("к1");
	сзКлючМин = СоздатьОбъект("СписокЗначений");
	сзКлючМин.ДобавитьЗначение(0);
	сзКлючМакс = СоздатьОбъект("СписокЗначений");
	сзКлючМакс.ДобавитьЗначение(0);
	
	сзКлючМин.УстановитьЗначение(1, 0);
	сзКлючМакс.УстановитьЗначение(1, 5);
	ТЗ.УстановитьФильтр(сзКлючМин, сзКлючМакс);
	//ВывестиТЗ(ТЗ);
	ТЗ.ВыбратьСтроки();
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);
	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 0);


	ТЗ.ДобавитьИндекс("Индекс1", "к1");
	сзКлючМин.УстановитьЗначение(1, 4);
	сзКлючМакс.УстановитьЗначение(1, 20);
	ТЗ.УстановитьФильтр(сзКлючМин, сзКлючМакс, "Индекс1");
	ТЗ.ВыбратьСтроки("Индекс1");
	ТЗ.ПолучитьСтроку("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);
	ТЗ.ПолучитьСтроку("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);
	ТЗ.ПолучитьСтроку("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);
	ТЗ.ПолучитьСтроку("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 2);
	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку("Индекс1"), 0);
	
	ТЗ.ВыключитьФильтр("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.Итог("к1", "Индекс1"), 36);
	ТЗ.ВыключитьФильтр();
	Сам.ПроверитьРавенство(ТЗ.Итог("к1"), 36);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестФильтрОдноЗначение() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.Сортировать("к1");
	
	ТЗ.УстановитьФильтр(0, 5);
	//ВывестиТЗ(ТЗ);
	ТЗ.ВыбратьСтроки();
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

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

//_____________________________________________________________________________
Процедура тестФильтр2() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.Сортировать("к1,к2");
	
	сзФильтр = СоздатьОбъект("СписокЗначений");
	сзФильтр.Установить("к1", 5);
	ТЗ.Подмножество(сзФильтр, 1);
	
	//ВывестиТЗ(ТЗ);
	ТЗ.ВыбратьСтроки();
	
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 1);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	
	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестИтог() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	
	Сам.ПроверитьРавенство(ТЗ.Итог("к1"), 36);
	
	ТЗ.Сортировать("к1");
	сзКлючМин = СоздатьОбъект("СписокЗначений");
	сзКлючМин.ДобавитьЗначение(0);
	сзКлючМакс = СоздатьОбъект("СписокЗначений");
	сзКлючМакс.ДобавитьЗначение(0);
	
	сзКлючМин.УстановитьЗначение(1, 0);
	сзКлючМакс.УстановитьЗначение(1, 5);
	ТЗ.УстановитьФильтр(сзКлючМин, сзКлючМакс);
	Сам.ПроверитьРавенство(ТЗ.Итог(1), 11);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестСвернуть() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	
	ТЗ.НоваяСтрока();
	ТЗ.к1 = 10;
	ТЗ.НоваяСтрока();
	ТЗ.к1 = 10;
	ТЗ.НоваяСтрока();
	ТЗ.к1 = 1;
	
	ТЗ.ВыбратьСтроки();
	Пока ТЗ.ПолучитьСтроку() = 1 Цикл
		ТЗ.к2 = ТЗ.к1;
	КонецЦикла;
	
	ТЗ.Свернуть("к1", "к2");
	ТЗ.Сортировать("к1");
	
	ТЗ.ВыбратьСтроки();
	
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 10);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.к2, 30);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 15);
	Сам.ПроверитьРавенство(ТЗ.к2, 15);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестСвернутьПоИндексу() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	
	ТЗ.НоваяСтрока();
	ТЗ.к1 = 10;
	ТЗ.НоваяСтрока();
	ТЗ.к1 = 10;
	ТЗ.НоваяСтрока();
	ТЗ.к1 = 1;
	
	ТЗ.ВыбратьСтроки();
	Пока ТЗ.ПолучитьСтроку() = 1 Цикл
		ТЗ.к2 = ТЗ.к1;
	КонецЦикла;
	
	ТЗ.ДобавитьИндекс("Индекс1", "к1");
	ТЗ.Свернуть("к1", "к2", "Индекс1");
	
	ТЗ.ВыбратьСтроки("Индекс1");
	
	ТЗ.ПолучитьСтроку("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	
	ТЗ.ПолучитьСтроку("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 10);

	ТЗ.ПолучитьСтроку("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.к2, 30);

	ТЗ.ПолучитьСтроку("Индекс1");
	Сам.ПроверитьРавенство(ТЗ.к1, 15);
	Сам.ПроверитьРавенство(ТЗ.к2, 15);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестСвернутьСпр() Экспорт
	Сам = Сам();

	ТЗ = ТЗ();
	ТЗ.НоваяКолонка("Спр");
	ТЗ.НоваяКолонка("К1");

	ТЗ.НоваяСтрока();
	ТЗ.Спр = Спр("1 Запись 1", 1);
	Спр = ТЗ.Спр; ТЗ.к1 = 1;
	
	ТЗ.НоваяСтрока();
	ТЗ.Спр = Спр; ТЗ.к1 = 2;
	
	ТЗ.НоваяСтрока();
	ТЗ.Спр = Спр("1 Запись 1", 2);  ТЗ.к1 = 4;

	ТЗ.Свернуть("Спр", "К1");
	
	ТЗ.ВыбратьСтроки();
	
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 3);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 4);

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


//_____________________________________________________________________________
Процедура тестГруппировать1() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Док();
	//_РедакторТЗ(ТЗ);
	ТЗ.Группировать("ДатаДок: ДатаДок; Док: Док", "к1, к2", 1);
	
	//_РедакторТЗ(ТЗ);

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

	Сам.ПроверитьРавенство(ТЗ.Получить(1, "ДатаДок"), '03.01.2005');
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "к1"), 3);

	Сам.ПроверитьРавенство(ТЗ.Получить(2, "ДатаДок"), '01.01.2005');
	Сам.ПроверитьРавенство(ТЗ.Получить(2, "к1"), 7);

	Сам.ПроверитьРавенство(ТЗ.Получить(3, "ДатаДок"), '02.01.2005');
	Сам.ПроверитьРавенство(ТЗ.Получить(3, "к1"), 11);
	
	тзПотомки = ТЗ.Получить(2, "тзПотомки");
	Сам.ПроверитьРавенство(тзПотомки.КоличествоСтрок(), 1);
	Сам.ПроверитьРавенство(тзПотомки.Получить(1, "к1"), 7);

	тзПотомки = тзПотомки.Получить(1, "тзПотомки");
	Сам.ПроверитьРавенство(тзПотомки.КоличествоСтрок(), 2);
	Сам.ПроверитьРавенство(тзПотомки.Получить(1, "к1"), 3);
	Сам.ПроверитьРавенство(тзПотомки.Получить(2, "к1"), 4);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестГруппировать2() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Док();
	ТЗ.Группировать("ДатаДок: ДатаДок; Док: Док", "к1, к2");
	
	//_РедакторТЗ(ТЗ, "ДатаДок");

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

	Сам.ПроверитьРавенство(ТЗ.Получить(1, "ДатаДок"), '03.01.2005');
	Сам.ПроверитьРавенство(ТЗ.Получить(1, "к1"), 3);

	Сам.ПроверитьРавенство(ТЗ.Получить(2, "ДатаДок"), '01.01.2005');
	Сам.ПроверитьРавенство(ТЗ.Получить(2, "к1"), 7);

	Сам.ПроверитьРавенство(ТЗ.Получить(3, "ДатаДок"), '02.01.2005');
	Сам.ПроверитьРавенство(ТЗ.Получить(3, "к1"), 11);
	
	тзПотомки = ТЗ.Получить(2, "тзПотомки");
	Сам.ПроверитьРавенство(тзПотомки.КоличествоСтрок(), 1);
	Сам.ПроверитьРавенство(тзПотомки.Получить(1, "к1"), 7);

	Сам.ПроверитьРавенство(тзПотомки.НомерКолонки("тзПотомки"), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестСвернутьДок() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Док();

	ТЗ.ДобавитьИндекс("Индекс1", "Док");
	ТЗ.Свернуть(, "к1, к2", "Индекс1");
	
	//_РедакторТЗ(ТЗ, "Индекс1");
	
	ТЗ.ВыбратьСтроки("Индекс1");
	
	ТЗ.ПолучитьСтроку("Индекс1");
	Сам.ПроверитьРавенство(СокрЛП(ТЗ.Док.НомерДок), "9");
	Сам.ПроверитьРавенство(ТЗ.к1, 7);
	Сам.ПроверитьРавенство(ТЗ.к2, 14);

	ТЗ.ПолучитьСтроку("Индекс1");
	Сам.ПроверитьРавенство(СокрЛП(ТЗ.Док.НомерДок), "1");
	Сам.ПроверитьРавенство(ТЗ.к1, 11);
	Сам.ПроверитьРавенство(ТЗ.к2, 22);

	ТЗ.ПолучитьСтроку("Индекс1");
	Сам.ПроверитьРавенство(СокрЛП(ТЗ.Док.НомерДок), "4");
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);

	ТЗ.ПолучитьСтроку("Индекс1");
	Сам.ПроверитьРавенство(СокрЛП(ТЗ.Док.НомерДок), "3");
	Сам.ПроверитьРавенство(ТЗ.к1, 2);
	Сам.ПроверитьРавенство(ТЗ.к2, 4);
	
	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку("Индекс1"), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестОчистить() Экспорт
	ТЗ = ТЗ();
	Сам = Сам();
	
	ТЗ.НоваяКолонка("К1");
	ТЗ.НоваяКолонка("К2");
	ТЗ.НоваяСтрока();
	ТЗ.к1 = 1;
	ТЗ.НоваяСтрока();
	ТЗ.к2 = 2;
	
	Сам.ПроверитьРавенство(ТЗ.КоличествоКолонок(), 2);
	Сам.ПроверитьРавенство(ТЗ.КоличествоСтрок(), 2);
	
	ТЗ.Очистить();
	Сам.ПроверитьРавенство(ТЗ.КоличествоКолонок(), 0);
	Сам.ПроверитьРавенство(ТЗ.КоличествоСтрок(), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестУдалитьСтроку() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();

	ТЗ.Сортировать("к1");

	ТЗ.УдалитьСтроку(3);
	//ВывестиТЗ(ТЗ);
	
	ТЗ.ВыбратьСтроки();
	
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

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

	//==========================
	ТЗ.УдалитьСтроку(1);
	ТЗ.ВыбратьСтроки();
	
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

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

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 15);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестУдалитьСтроки() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();

	ТЗ.Сортировать("к1");

	ТЗ.УдалитьСтроки();
	Сам.ПроверитьРавенство(ТЗ.КоличествоСтрок(), 0);
	Сам.ПроверитьРавенство(ТЗ.КоличествоКолонок(), 2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВыгрузить() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ(); 
	
	ТЗ2 = СоздатьОбъект("ТаблицаЗначений");
	ТЗ.Выгрузить(ТЗ2);

	ТЗ = ТЗ2;
	
	ТЗ.ВыбратьСтроки();
	
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

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

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);

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

//_____________________________________________________________________________
Процедура тестВыгрузитьРасш() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ(); 
	
	ТЗ2 = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ.Выгрузить(ТЗ2);

	Сам.ПроверитьРавенство(ТЗ2.Итог("к1"), 36);
	Сам.ПроверитьРавенство(ТЗ2.КоличествоСтрок(), 5);
	Сам.ПроверитьРавенство(ТЗ2.КоличествоКолонок(), 2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВыгрузитьСЗ() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ(); 
	ТЗ.Сортировать("к1");
	
	Сз = СоздатьОбъект("СписокЗначений");
	ТЗ.Выгрузить(Сз,, "к1");

	Сам.ПроверитьРавенство(Сз.ПолучитьЗначение(1), 1);
	Сам.ПроверитьРавенство(Сз.ПолучитьЗначение(2), 5);
	Сам.ПроверитьРавенство(Сз.ПолучитьЗначение(3), 5);
	Сам.ПроверитьРавенство(Сз.ПолучитьЗначение(4), 10);
	Сам.ПроверитьРавенство(Сз.ПолучитьЗначение(5), 15);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВыгрузитьПуст() Экспорт
	Перем ТЗ2;
	
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ(); 
	
	ТЗ.Выгрузить(ТЗ2);

	Сам.ПроверитьРавенство(ТипЗначенияСтр(ТЗ2), "ИндексированнаяТаблица");
	Сам.ПроверитьРавенство(ТЗ2.Итог("к1"), 36);
	Сам.ПроверитьРавенство(ТЗ2.КоличествоСтрок(), 5);
	Сам.ПроверитьРавенство(ТЗ2.КоличествоКолонок(), 2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВыгрузитьСФильтром() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ(); 
	
	ТЗ.ДобавитьИндекс("ДляВыгрузки", "к1");
	сзКлючМин = СоздатьОбъект("СписокЗначений");
	сзКлючМин.ДобавитьЗначение(4);
	сзКлючМакс = СоздатьОбъект("СписокЗначений");
	сзКлючМакс.ДобавитьЗначение(11);
	ТЗ.УстановитьФильтр(сзКлючМин, сзКлючМакс, "ДляВыгрузки");
	
	ТЗ2 = СоздатьОбъект("ТаблицаЗначений");
	ТЗ.Выгрузить(ТЗ2, "ДляВыгрузки");

	ТЗ = ТЗ2;
	
	ТЗ.ВыбратьСтроки();
	
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 5);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 5);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	
	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 0);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВыгрузитьСФильтромДок() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Док();

	Док1 = ТЗ.ПолучитьЗначение(5, 1);
	Док2 = ТЗ.ПолучитьЗначение(1, 1);
	
	ТЗ.ДобавитьИндекс("ДляВыгрузки", "Док");
	
	сзКлючМин = СоздатьОбъект("СписокЗначений");
	сзКлючМин.ДобавитьЗначение(Док1);
	сзКлючМакс = СоздатьОбъект("СписокЗначений");
	сзКлючМакс.ДобавитьЗначение(Док2);
	ТЗ.УстановитьФильтр(сзКлючМин, сзКлючМакс, "ДляВыгрузки");
	
	ТЗ2 = СоздатьОбъект("ТаблицаЗначений");
	ТЗ.Выгрузить(ТЗ2, "ДляВыгрузки");

	ТЗ = ТЗ2;
	
	ТЗ.ВыбратьСтроки();
	
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 5);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 6);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	
	Сам.ПроверитьРавенство(ТЗ.ПолучитьСтроку(), 0);
КонецПроцедуры


//_____________________________________________________________________________
Процедура тестЗагрузить() Экспорт
	Сам = Сам();
	ТЗ = СоздатьОбъект("ТаблицаЗначений");
	ТЗ.НоваяКолонка("к1");
	ТЗ.НоваяКолонка("к2");
	ТЗ.НоваяСтрока();
	ТЗ.к1 = 1; ТЗ.к2 = 2;
	ТЗ.НоваяСтрока();
	ТЗ.к1 = 2; ТЗ.к2 = 4;
	ТЗ.НоваяСтрока();
	ТЗ.к1 = 3; ТЗ.к2 = 6;
	ТЗ.НоваяСтрока();
	ТЗ.к1 = 4; ТЗ.к2 = 8;
	ТЗ.НоваяСтрока();
	ТЗ.к1 = 5; ТЗ.к2 = 10;
	
	ТЗ2 = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ2.Загрузить(ТЗ, "");

	ТЗ = ТЗ2;
	
	ТЗ.ВыбратьСтроки();
	
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

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

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 3);
	Сам.ПроверитьРавенство(ТЗ.к2, 6);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 4);
	Сам.ПроверитьРавенство(ТЗ.к2, 8);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);

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

//_____________________________________________________________________________
Процедура тестОбъединить() Экспорт
	Сам = Сам();
	ТЗ1 = Выборка_ЗаполнитьТЗ();
	ТЗ2 = Выборка_ЗаполнитьТЗ_Док();
	н1 = ТЗ1.КоличествоСтрок();
	н2 = ТЗ2.КоличествоСтрок();
	
	ТЗ1.Объединить(ТЗ2);
	
	//_РедакторТЗ(ТЗ1);
	
	Сам.ПроверитьРавенство(ТЗ1.КоличествоСтрок(), н1 + н2);
	Сам.ПроверитьРавенство(ТЗ1.Итог("к1"), 36 + 21);
	Сам.ПроверитьРавенство(ТЗ1.НомерКолонки("Док"), 3);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗагрузитьРасш() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ(); 
	
	ТЗ2 = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ2.Загрузить(ТЗ);

	ТЗ = ТЗ2;
	
	ТЗ.ВыбратьСтроки();
	
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

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

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 5);
	Сам.ПроверитьРавенство(ТЗ.к2, 2);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 3);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 4);

	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 1);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 5);

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

//_____________________________________________________________________________
Процедура тестЗагрузитьСФильтром() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ(); 
	
	ТЗ.ДобавитьИндекс("ДляЗагрузки", "к1");
	сзКлючМин = СоздатьОбъект("СписокЗначений");
	сзКлючМин.ДобавитьЗначение(6);
	сзКлючМакс = СоздатьОбъект("СписокЗначений");
	сзКлючМакс.ДобавитьЗначение(100);
	ТЗ.УстановитьФильтр(сзКлючМин, сзКлючМакс, "ДляЗагрузки");
	
	ТЗ2 = СоздатьОбъект("ИндексированнаяТаблица");
	ТЗ2.Загрузить(ТЗ, "ДляЗагрузки");

	ТЗ = ТЗ2;
	
	ТЗ.ВыбратьСтроки();
	
	ТЗ.ПолучитьСтроку();
	Сам.ПроверитьРавенство(ТЗ.к1, 10);
	Сам.ПроверитьРавенство(ТЗ.НомерСтроки, 1);

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

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

//_____________________________________________________________________________
Процедура тестПересечение() Экспорт
	Сам = Сам();
	ТЗ1 = Выборка_ЗаполнитьТЗ(); 

	ТЗ2 = ТЗ();
	ТЗ2.НоваяКолонка("К1");
	ТЗ2.НоваяКолонка("К2");
	ТЗ2.НоваяКолонка("К3");
	
	ТЗ2.НоваяСтрока();
	ТЗ2.к1 = 5;  ТЗ2.к2 = "стр 1"; ТЗ2.к3 = "стр 1 к3";
	
	ТЗ2.НоваяСтрока();
	ТЗ2.к1 = 10; ТЗ2.к2 = "стр 2"; ТЗ2.к3 = "стр 2 к3";
	
	ТЗ2.НоваяСтрока();
	ТЗ2.к1 = 10; ТЗ2.к2 = "стр 3"; ТЗ2.к3 = "стр 3 к3";
	
	ТЗ2.НоваяСтрока();
	ТЗ2.к1 = 11; ТЗ2.к2 = "стр 4"; ТЗ2.к3 = "стр 4 к3";
	
	ТЗ1.ДобавитьИндекс("И1", "к1");
	ТЗ2.ДобавитьИндекс("И1", "к1");
	ТЗ1.Пересечение(ТЗ2, "И1", "И1");
	
	//_РедакторТЗ(ТЗ1);
	
	Сам.ПроверитьРавенство(ТЗ1.КоличествоСтрок(), 6);
	Сам.ПроверитьРавенство(ТЗ1.КоличествоКолонок(), 3);
	
	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(1, "к1"), 5);
	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(1, "к2"), 1);

	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(2, "к1"), 5);
	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(2, "к2"), 2);

	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(3, "к1"), 10);
	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(3, "к2"), ПолучитьПустоеЗначение());

	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(4, "к1"), 5);
	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(4, "к2"), "стр 1");
	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(4, "к3"), "стр 1 к3");
	
	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(5, "к1"), 10);
	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(5, "к2"), "стр 2");
	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(5, "к3"), "стр 2 к3");
	
	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(6, "к1"), 10);
	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(6, "к2"), "стр 3");
	Сам.ПроверитьРавенство(ТЗ1.ПолучитьЗначение(6, "к3"), "стр 3 к3");
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестЗаполнить() Экспорт
	Сам = Сам();
	ТЗ1 = ТЗ();
	ТЗ1.НоваяКолонка("К1");
	ТЗ1.НоваяКолонка("К2");
	ТЗ1.НоваяКолонка("К3");

	ТЗ2 = Выборка_ЗаполнитьТЗ(); 
	
	ТЗ1.НоваяСтрока();
	ТЗ1.НоваяСтрока();
	ТЗ1.НоваяСтрока();
	
	//ТЗ1.Заполнить(ТЗ2, );
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестКопия() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ();
	ТЗ.Сортировать("к1");
	ТЗ.ДобавитьИндекс("и1", "к1, к2");
	
	ТЗ2 = ТЗ.Копия(1);
	
	Сам.ПроверитьРавенство(ТЗ.КоличествоСтрок(), ТЗ2.КоличествоСтрок());
	Сам.ПроверитьРавенство(ТЗ.КоличествоКолонок(), ТЗ2.КоличествоКолонок());

	Для стр = 1 По ТЗ.КоличествоСтрок() Цикл
		Для кол = 1 По ТЗ.КоличествоКолонок() Цикл
			Сам.ПроверитьРавенство(ТЗ.Получить(стр, кол), ТЗ2.Получить(стр, кол));
		КонецЦикла;
	КонецЦикла;
	
	//_РедакторТЗ(ТЗ2, "и1");
	
	
	сзКлюч = СоздатьОбъект("СписокЗначений");
	сзКлюч.ДобавитьЗначение(15);
	Сам.ПроверитьРавенство(ТЗ.НайтиСтроку(, сзКлюч), 2);

	сзКлюч = СоздатьОбъект("СписокЗначений");
	сзКлюч.ДобавитьЗначение(5);
	сзКлюч.ДобавитьЗначение(2);
	Сам.ПроверитьРавенство(ТЗ2.НайтиСтроку("и1", сзКлюч), 3);
КонецПроцедуры

//_____________________________________________________________________________
Процедура СравнитьТЗ(ТЗ1, ТЗ2, Индекс = "")
	Сам = Сам();
	Сам.ПроверитьРавенство(ТЗ1.КоличествоСтрок(Индекс),   ТЗ2.КоличествоСтрок());
	Сам.ПроверитьРавенство(ТЗ1.КоличествоКолонок(), ТЗ2.КоличествоКолонок());
	
	ТЗ1.ВыбратьСтроки(Индекс);
	ТЗ2.ВыбратьСтроки();
	Пока ТЗ1.ПолучитьСтроку(Индекс) = 1 Цикл
		ТЗ2.ПолучитьСтроку();
		Для кол = 1 По ТЗ1.КоличествоКолонок() Цикл
			з1 = ТЗ1.Получить(, кол);
			з2 = ТЗ2.Получить(, кол);
			Если ТипЗначенияСтр(з1) = "ИндексированнаяТаблица" Тогда
				СравнитьТЗ(з1, з2);
			Иначе
				Сам.ПроверитьРавенство(з1, з2);
			КонецЕсли;
		КонецЦикла;
	КонецЦикла;
КонецПроцедуры

//_____________________________________________________________________________
Процедура СравнитьТЗПоПредставлениям(ТЗ1, ТЗ2, Индекс = "")
	Сам = Сам();
	Сам.ПроверитьРавенство(ТЗ1.КоличествоСтрок(Индекс),   ТЗ2.КоличествоСтрок());
	Сам.ПроверитьРавенство(ТЗ1.КоличествоКолонок(), ТЗ2.КоличествоКолонок());
	
	ТЗ1.ВыбратьСтроки(Индекс);
	ТЗ2.ВыбратьСтроки();
	Пока ТЗ1.ПолучитьСтроку(Индекс) = 1 Цикл
		ТЗ2.ПолучитьСтроку();
		Для кол = 1 По ТЗ1.КоличествоКолонок() Цикл
			з1 = ТЗ1.Получить(, кол);
			з2 = ТЗ2.Получить(, кол);
			Если (""+з2) = "НеизвестныйОбъект" Тогда
				Продолжить;
			КонецЕсли;
			Сам.ПроверитьРавенство(СокрЛП(""+з1), СокрЛП(""+з2));
		КонецЦикла;
	КонецЦикла;
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВФайл() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Док();
	ТЗ2 = Выборка_ЗаполнитьТЗ_Спр();
	ТЗ.УстановитьЗначение(1, 2, ТЗ2);
	ТЗ.УстановитьЗначение(6, "к1", "стр1""стр2");
	ТЗ.УстановитьЗначение(6, "к2", "стр1;стр2");
	ТЗ.ВФайл(КаталогИБ()+"тестВФайл1.ТЗ");
	ТЗ.ВФайл(КаталогИБ()+"тестВФайл2.ТЗ", 2);
	ТЗ.ВФайл(КаталогИБ()+"тестВФайл1.csv", 3);
	ТЗ.ВФайл(КаталогИБ()+"тестВФайл2.csv", 4);
	
	ТЗ2 = ТЗ();
	ТЗ2.ИзФайла(КаталогИБ()+"тестВФайл1.ТЗ");
	СравнитьТЗ(ТЗ, ТЗ2);

	ТЗ2.ИзФайла(КаталогИБ()+"тестВФайл2.ТЗ");
	СравнитьТЗПоПредставлениям(ТЗ, ТЗ2);

	ТЗ2.ИзФайла(КаталогИБ()+"тестВФайл1.csv", 3);
	//_РедакторТЗ(ТЗ);
	//_РедакторТЗ(ТЗ2);
	СравнитьТЗПоПредставлениям(ТЗ, ТЗ2);

	ТЗ2.ИзФайла(КаталогИБ()+"тестВФайл2.csv", 4);
	//_РедакторТЗ(ТЗ2);
	СравнитьТЗПоПредставлениям(ТЗ, ТЗ2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВФайлСортировка() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Док();
	
	ТЗ.ДобавитьИндекс("и1", "ДатаДок, СтрДок");
	ТЗ.ВФайл(КаталогИБ()+"тестВФайл1.ТЗ", 1, "и1");
	ТЗ.ВФайл(КаталогИБ()+"тестВФайл2.csv", 4, "и1");

	ТЗ2 = ТЗ();
	ТЗ2.ИзФайла(КаталогИБ()+"тестВФайл1.ТЗ");
	СравнитьТЗ(ТЗ, ТЗ2, "и1");

	ТЗ2.ИзФайла(КаталогИБ()+"тестВФайл2.csv", 4);
	СравнитьТЗПоПредставлениям(ТЗ, ТЗ2, "и1");
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВФайлСортировкаУник() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Док();
	
	ТЗ.ДобавитьИндекс("и1", "СтрДок", 1);
	ТЗ.ВФайл(КаталогИБ()+"тестВФайл1.ТЗ", 1, "и1");
	ТЗ.ВФайл(КаталогИБ()+"тестВФайл2.csv", 4, "и1");

	ТЗ2 = ТЗ();
	ТЗ2.ИзФайла(КаталогИБ()+"тестВФайл1.ТЗ");
	СравнитьТЗ(ТЗ, ТЗ2, "и1");

	ТЗ2.ИзФайла(КаталогИБ()+"тестВФайл2.csv", 4);
	СравнитьТЗПоПредставлениям(ТЗ, ТЗ2, "и1");
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВФайлФильтр() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Док();
	
	ТЗ.ДобавитьИндекс("и1", "ДатаДок");
	ТЗ.УстановитьФильтр('03.01.2005', '03.01.2005', "и1");
	
	ТЗ.ВФайл(КаталогИБ()+"тестВФайл1.ТЗ", 1, "и1");
	ТЗ.ВФайл(КаталогИБ()+"тестВФайл2.csv", 4, "и1");

	ТЗ2 = ТЗ();
	ТЗ2.ИзФайла(КаталогИБ()+"тестВФайл1.ТЗ");
	СравнитьТЗ(ТЗ, ТЗ2, "и1");
//
//	ТЗ2.ИзФайла(КаталогИБ()+"тестВФайл2.csv", 4);
//	СравнитьТЗПоПредставлениям(ТЗ, ТЗ2, "и1");
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестИзСтроки() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Док();
	
	Стр = ЗначениеВСтрокуВнутр(ТЗ);
	ТЗ2 = ТЗ();
	ТЗ2.ИзСтроки(Стр);
	СравнитьТЗ(ТЗ, ТЗ2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестИзСтрокиВнешн() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Док();
	
	Стр = ТЗ.ВСтроку(0);
	ТЗ2 = ТЗ();
	ТЗ2.ИзСтроки(Стр);
	СравнитьТЗПоПредставлениям(ТЗ, ТЗ2);
КонецПроцедуры

//_____________________________________________________________________________
Процедура тестВСтрокуСФильтром() Экспорт
	Сам = Сам();
	ТЗ = Выборка_ЗаполнитьТЗ_Док();
	ТЗ.ДобавитьИндекс("и1", "ДатаДок");
	ТЗ.УстановитьФильтр('03.01.2005', '03.01.2005', "и1");
	
	Стр = ТЗ.ВСтроку(, "и1");
	ТЗ2 = ТЗ();
	ТЗ2.ИзСтроки(Стр);
	СравнитьТЗ(ТЗ, ТЗ2, "и1");
КонецПроцедуры

////_____________________________________________________________________________
//Процедура тестВыбратьСтроку() Экспорт
//	Сам = Сам();
//	ТЗ = Выборка_ЗаполнитьТЗ(); 
//
//	ТЗ.ВыбратьСтроку("");	
//КонецПроцедуры	//ТестВыбратьСтроку

