
Функция Конт(Конт) Возврат Конт; КонецФункции  // : Контекст
Функция Сам() Возврат Конт(Контекст); КонецФункции
          
Функция БД() 
	БД = СоздатьОбъект("BinaryData");
	БД.Кодировка = 0;
	Возврат БД; 
КонецФункции // :BinaryData

//_________________________________________________________
//
// Универсальный перевод чисел в разные системы исчисления
// http://www.sinor.ru/~my1c/knowhow/uni_conv.html
//
Функция Из_10_В_Любую(Знач Значение=0,Нотация=36) Экспорт
     Если Нотация<=0 Тогда Возврат("") КонецЕсли;
     Значение=Число(Значение);
     Если Значение<=0 Тогда Возврат("0") КонецЕсли;
     Значение=Цел(Значение);
     Результат="";
     Пока Значение>0 Цикл
          Результат=Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Значение%Нотация+1,1)+Результат;
          Значение=Цел(Значение/Нотация) ;
     КонецЦикла;
     Возврат Результат;
КонецФункции

//_________________________________________________________
//
// Универсальный перевод чисел в разные системы исчисления
// http://www.sinor.ru/~my1c/knowhow/uni_conv.html
//
Функция Из_Любой_В_10(Знач Значение="0",Нотация=36) Экспорт
     Если Нотация<=0 Тогда Возврат(0) КонецЕсли;
     Значение=СокрЛП(Значение);
     Если Значение="0" Тогда Возврат(0) КонецЕсли;
     Результат=0;
     Длина=СтрДлина(Значение);
     Для Х=1 По Длина Цикл
          М=1;
          Для У=1 По Длина-Х Цикл М=М*Нотация КонецЦикла;
          Результат=Результат+(Найти("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ",Сред(Значение,Х,1))-1)*М;
     КонецЦикла;
     Возврат Окр(Результат);
КонецФункции

Процедура ТестПустойОбъект() Экспорт
	БД = БД();

	Сам().ПроверитьРавенство(Бд.Размер(), 0);
	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция
КонецПроцедуры

Процедура ТестПустойОбъектИЗакрыть() Экспорт
	БД = БД();
	Сам().ПроверитьРавенство(Бд.Размер(), 0);
	
	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция
	
	БД.Закрыть();

	Сам().ПроверитьРавенство(Бд.Размер(), 0);
	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция
КонецПроцедуры

Процедура ТестРазмер() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример");

	НоваяПозиция = БД.Перейти(0, 0);
	
	Сам().ПроверитьРавенство(Бд.Размер(), 8);

	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция не должна измениться
КонецПроцедуры

Процедура ТестЗаписатьСтроку() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример");

	Сам().ПроверитьРавенство(Бд.Размер(), 8);
	Позиция = БД.Перейти(0);
	Сам().ПроверитьРавенство(Позиция, 8); // позиция
	Сам().ПроверитьРавенство(БД.Перейти(0), 8); // позиция
КонецПроцедуры

Процедура ТестЗаписатьСтрокуБезТерминатора() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример", 1);

	Сам().ПроверитьРавенство(Бд.Размер(), 6);
	Сам().ПроверитьРавенство(БД.Перейти(0), 6); // позиция
КонецПроцедуры

Процедура ТестЗаписатьСтроку_1() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Аа");

	БД.Перейти(0, 0);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 192);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 224);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 13);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 10);
	
	БуферЧисло = -1;
	Сам().ПроверитьРавенство(БД.ПрочитатьДанные(БуферЧисло), 0);
КонецПроцедуры

Процедура ТестЗаписатьСтрокуБезТерминатора_1() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Аа", 1);

	БД.Перейти(0, 0);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 192);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 224);
	
	БуферЧисло = -1;
	Сам().ПроверитьРавенство(БД.ПрочитатьДанные(БуферЧисло), 0);
КонецПроцедуры

Процедура ТестЗакрыть() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример");
	
	БД.Закрыть();

	Сам().ПроверитьРавенство(Бд.Размер(), 0);
	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция
КонецПроцедуры

Процедура ТестЗаписатьДанные1Байт() Экспорт
	БД = БД();        
	
	БуферЧисло = Из_Любой_В_10("1234567890", 16);
	Бд.ЗаписатьДанные(БуферЧисло);

	Сам().ПроверитьРавенство(Бд.Размер(), 1);
	Сам().ПроверитьРавенство(БД.Перейти(0), 1);

	БуферЧисло = 0;
	Сам().ПроверитьРавенство(БД.ПрочитатьДанные(БуферЧисло), 0);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "0");
	
	БД.Перейти(-1);
	
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "90");
	
КонецПроцедуры

Процедура ТестЗаписатьДанные1БайтЯвно() Экспорт
	БД = БД();
	БуферЧисло = Из_Любой_В_10("1234567890", 16);
	Бд.ЗаписатьДанные(БуферЧисло, 0);

	Сам().ПроверитьРавенство(Бд.Размер(), 1);
	Сам().ПроверитьРавенство(БД.Перейти(0), 1); // позиция

	БуферЧисло = 0;
	Сам().ПроверитьРавенство(БД.ПрочитатьДанные(БуферЧисло), 0);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "0");
	
	БД.Перейти(-1);
	
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "90");
КонецПроцедуры

Процедура ТестЗаписатьДанные2Байта() Экспорт
	БД = БД();
	БуферЧисло = Из_Любой_В_10("1234567890", 16);
	Бд.ЗаписатьДанные(БуферЧисло, 1);

	Сам().ПроверитьРавенство(Бд.Размер(), 2);
	Сам().ПроверитьРавенство(БД.Перейти(0), 2); // позиция

	БуферЧисло = 0;
	Сам().ПроверитьРавенство(БД.ПрочитатьДанные(БуферЧисло), 0);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "0");
	
	БД.Перейти(-1);
	
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "78");
	
	БД.Перейти(-2);
	
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "90");
	
	БД.Перейти(0,0);
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло, 1);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "7890");
КонецПроцедуры

Процедура ТестЗаписатьДанные2Байта2() Экспорт
	БД = БД();
	БуферЧисло = Из_Любой_В_10("1234567890", 16);
	Бд.ЗаписатьДанные(БуферЧисло, 1);

	Сам().ПроверитьРавенство(Бд.Размер(), 2);
	Сам().ПроверитьРавенство(БД.Перейти(0), 2); // позиция

	БуферЧисло = 0;
	Сам().ПроверитьРавенство(БД.ПрочитатьДанные(БуферЧисло), 0);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "0");
	
	БД.Перейти(-2);
	
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "90");
	
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "78");
	
	БД.Перейти(0,0);
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло, 1);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "7890");
КонецПроцедуры

Процедура ТестЗаписатьДанные4Байта() Экспорт
	БД = БД();
	БуферЧисло = Из_Любой_В_10("1234567890", 16);
	Бд.ЗаписатьДанные(БуферЧисло, 2);

	Сам().ПроверитьРавенство(Бд.Размер(), 4);
	Сам().ПроверитьРавенство(БД.Перейти(0), 4); // позиция

	БуферЧисло = 0;
	Сам().ПроверитьРавенство(БД.ПрочитатьДанные(БуферЧисло), 0);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "0");
	
	БД.Перейти(0,0);
	
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "90");
	
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "78");
	
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "56");
	
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "34");
	
	БД.Перейти(0,0);
	БуферЧисло = 0;
	фРезультат = БД.ПрочитатьДанные(БуферЧисло, 2);
	Сам().ПроверитьРавенство(фРезультат, 1);
	Сам().ПроверитьРавенство(Из_10_В_Любую(БуферЧисло, 16), "34567890");
КонецПроцедуры

Процедура ТестПрочитатьСтрокуВПустомОбъекте() Экспорт
	
	БД = БД(); 
	
	Буфер = "";
	фРезультат = Бд.ПрочитатьСтроку(Буфер);

	Сам().ПроверитьРавенство(фРезультат, 0);
	Сам().ПроверитьРавенство(Буфер, "");
	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция
КонецПроцедуры

Процедура ТестПрочитатьСтрокуВПустомОбъекте_СтрокаСТерминатором() Экспорт
	БД = БД();
	
	Буфер = "";
	фРезультат = Бд.ПрочитатьСтроку(Буфер, 0);

	Сам().ПроверитьРавенство(фРезультат, 0);
	Сам().ПроверитьРавенство(Буфер, "");
	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция
КонецПроцедуры

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

	Сам().ПроверитьРавенство(фРезультат, 0);
	Сам().ПроверитьРавенство(Буфер, "");
	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция
КонецПроцедуры

Процедура ТестПрочитатьСтрокуВКонце() Экспорт
	
	БД = БД(); 
	Бд.ЗаписатьСтроку("Пример");
	
	Буфер = "";
	фРезультат = Бд.ПрочитатьСтроку(Буфер);

	Сам().ПроверитьРавенство(фРезультат, 0);
	Сам().ПроверитьРавенство(Буфер, "");
	Сам().ПроверитьРавенство(БД.Перейти(0), 8); // позиция
КонецПроцедуры

Процедура ТестПрочитатьСтрокуВКонце_СтрокаСТерминатором() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример");
	
	Буфер = "";
	фРезультат = Бд.ПрочитатьСтроку(Буфер, 0);

	Сам().ПроверитьРавенство(фРезультат, 0);
	Сам().ПроверитьРавенство(Буфер, "");
	Сам().ПроверитьРавенство(БД.Перейти(0), 8); // позиция
КонецПроцедуры

Процедура ТестПрочитатьСтрокуВКонце_КоличествоБайт() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример");
	
	Буфер = "";
	фРезультат = Бд.ПрочитатьСтроку(Буфер, 1);

	Сам().ПроверитьРавенство(фРезультат, 0);
	Сам().ПроверитьРавенство(Буфер, "");
	Сам().ПроверитьРавенство(БД.Перейти(0), 8); // позиция
КонецПроцедуры

Процедура ТестПерейтиВПустойОтносительноТекущей() Экспорт
	БД = БД();
	                         
	НоваяПозиция = БД.Перейти(0);
	
	Сам().ПроверитьРавенство(Бд.Размер(), 0);
	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция
	Сам().ПроверитьРавенство(НоваяПозиция, 0); // позиция
КонецПроцедуры

Процедура ТестПерейтиВПустойОтносительноТекущей1() Экспорт
	БД = БД();
	                         
	НоваяПозиция = БД.Перейти(0, 1);
	
	Сам().ПроверитьРавенство(Бд.Размер(), 0);
	Сам().ПроверитьРавенство(БД.Перейти(0, 1), 0); // позиция
	Сам().ПроверитьРавенство(НоваяПозиция, 0); // позиция
КонецПроцедуры

Процедура ТестПерейтиВПустойОтносительноНачала() Экспорт
	БД = БД();
	                         
	НоваяПозиция = БД.Перейти(0, 0);
	
	Сам().ПроверитьРавенство(Бд.Размер(), 0);
	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция
	Сам().ПроверитьРавенство(НоваяПозиция, 0); // позиция
КонецПроцедуры

Процедура ТестПерейтиВПустойОтносительноКонца() Экспорт
	БД = БД();
	                         
	НоваяПозиция = БД.Перейти(0, 2);
	
	Сам().ПроверитьРавенство(Бд.Размер(), 0);
	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция
	Сам().ПроверитьРавенство(НоваяПозиция, 0); // позиция
КонецПроцедуры

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

Процедура ТестПерейтиВНачалоОтносительноТекущей() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример");
	                         
	НоваяПозиция = БД.Перейти(-8);
	
	Сам().ПроверитьРавенство(Бд.Размер(), 8);
	Сам().ПроверитьРавенство(НоваяПозиция, 0); // позиция
	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция
КонецПроцедуры

Процедура ТестПерейтиВНачалоОтносительноТекущей1() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример");
	                         
	НоваяПозиция = БД.Перейти(-8, 1);
	
	Сам().ПроверитьРавенство(Бд.Размер(), 8);
	Сам().ПроверитьРавенство(НоваяПозиция, 0); // позиция
	Сам().ПроверитьРавенство(БД.Перейти(0), 0); // позиция
КонецПроцедуры

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

Процедура ТестПерейтиНазадОтносительноТекущей_ДляСтрокиСТерминатором() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример");
	Длина = СтрДлина("Пример");
	                         
	НоваяПозиция = БД.Перейти(-3);
	
	Сам().ПроверитьРавенство(Бд.Размер(), Длина+2);
	Сам().ПроверитьРавенство(БД.Перейти(0), Длина-1);
	                   
	Буфер = "";
	Бд.ПрочитатьСтроку(Буфер);
	
	Сам().ПроверитьРавенство(Буфер, "р"); // позиция
	
КонецПроцедуры

Процедура ТестПерейтиНазадОтносительноТекущей1_ДляСтрокиСТерминатором() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример");
	Длина = СтрДлина("Пример");
	                         
	НоваяПозиция = БД.Перейти(-3, 1);
	
	Сам().ПроверитьРавенство(Бд.Размер(), Длина+2);
	Сам().ПроверитьРавенство(БД.Перейти(0), Длина-1);
	                   
	Буфер = "";
	Бд.ПрочитатьСтроку(Буфер);
	Сам().ПроверитьРавенство(Буфер, "р"); // позиция
КонецПроцедуры

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

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

Процедура ТестПерейтиНазадОтносительноТекущей_ДляСтрокиБезТерминатора() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример", 1);
	Длина = СтрДлина("Пример");
	                         
	НоваяПозиция = БД.Перейти(-1);
	
	Сам().ПроверитьРавенство(Бд.Размер(), Длина);
	Сам().ПроверитьРавенство(БД.Перейти(0), Длина-1);
	                   
	Буфер = "";
	Бд.ПрочитатьСтроку(Буфер);
	
	Сам().ПроверитьРавенство(Буфер, "р"); // позиция
	
КонецПроцедуры

Процедура ТестПерейтиНазадОтносительноТекущей1_ДляСтрокиБезТерминатора() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример", 1);
	Длина = СтрДлина("Пример");
	                         
	НоваяПозиция = БД.Перейти(-1, 1);
	
	Сам().ПроверитьРавенство(Бд.Размер(), Длина);
	Сам().ПроверитьРавенство(БД.Перейти(0), Длина-1);
	                   
	Буфер = "";
	Бд.ПрочитатьСтроку(Буфер);
	Сам().ПроверитьРавенство(Буфер, "р"); // позиция
КонецПроцедуры

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

Процедура ТестПерейтиНазадОтносительноКонца_ДляСтрокиБезТерминатора() Экспорт
	БД = БД();
	Бд.ЗаписатьСтроку("Пример", 1);
	Длина = СтрДлина("Пример");
	                         
	НоваяПозиция = БД.Перейти(-1, 2);
	
	Сам().ПроверитьРавенство(Бд.Размер(), Длина);
	Сам().ПроверитьРавенство(БД.Перейти(0), Длина-1);
	                   
	Буфер = "";
	Бд.ПрочитатьСтроку(Буфер);
	Сам().ПроверитьРавенство(Буфер, "р"); // позиция
КонецПроцедуры
              
Процедура ТестКодировкаПоУмолчанию() Экспорт
	БД = СоздатьОбъект("BinaryData");
	Бд.ЗаписатьСтроку("Пример");
	
	БД.Перейти(0, 0);
	Буфер = "";
	БД.ПрочитатьСтроку(Буфер);
	Сам().ПроверитьРавенство(Буфер, "Пример");
КонецПроцедуры
              
Процедура ТестКодировкаANSI() Экспорт
	БД = СоздатьОбъект("BinaryData");
	БД.Кодировка = 0;
	Бд.ЗаписатьСтроку("Пример");
	
	БД.Кодировка = 1; // на всякий случай проверю смену кодировок
	БД.Кодировка = 0;
	БД.Перейти(0, 0);
	Буфер = "";
	БД.ПрочитатьСтроку(Буфер);
	Сам().ПроверитьРавенство(Буфер, "Пример");
КонецПроцедуры
              
Процедура ТестКодировкаANSI_2() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	БД.ЗаписатьДанные(КодСимв("А"));
	БД.ЗаписатьДанные(КодСимв("а"));
	БД.ЗаписатьДанные(13);
	БД.ЗаписатьДанные(10);
	
	БД.Перейти(0, 0);
	
	БД.Кодировка = 0;
	Буфер = "";
	Сам().ПроверитьРавенство(БД.ПрочитатьСтроку(Буфер), 1);
	Сам().ПроверитьРавенство(Буфер, "Аа");
КонецПроцедуры
              
Процедура ТестКодировкаANSI2OEM() Экспорт
	БД = СоздатьОбъект("BinaryData");
	Бд.ЗаписатьСтроку("Пример");
	
	БД.Кодировка = 1;
	БД.Кодировка = 0; // на всякий случай проверю смену кодировок
	БД.Кодировка = 1;
	БД.Перейти(0, 0);
	Буфер = "";
	БД.ПрочитатьСтроку(Буфер);

	Сам().ПроверитьРавенство(Буфер, OemToAnsi("Пример"));
КонецПроцедуры
              
Процедура ТестКодировкаOEM2ANSI() Экспорт
	БД = СоздатьОбъект("BinaryData");
	БД.Кодировка = 1;
	Бд.ЗаписатьСтроку("Пример");
	
	БД.Кодировка = 0;
	БД.Перейти(0, 0);
	Буфер = "";
	БД.ПрочитатьСтроку(Буфер);
	Сам().ПроверитьРавенство(OemToAnsi(Буфер), "Пример");
КонецПроцедуры
              
Процедура ТестКодировкаOEM() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	БД.ЗаписатьДанные(КодСимв(AnsiToOem("А")));
	БД.ЗаписатьДанные(КодСимв(AnsiToOem("а")));
	БД.ЗаписатьДанные(13);
	БД.ЗаписатьДанные(10);
	БД.ЗаписатьДанные(1);
	
	БД.Перейти(0, 0);
	
	БД.Кодировка = 1;
	Буфер = "";
	Сам().ПроверитьРавенство(БД.ПрочитатьСтроку(Буфер), 1);
	Сам().ПроверитьРавенство(Буфер, "Аа");

	Сам().ПроверитьРавенство(БД.Перейти(0), 4);
КонецПроцедуры
              
Процедура ТестКодировкаUTF16() Экспорт
	БД = СоздатьОбъект("BinaryData");
	БД.Кодировка = 2;
	Бд.ЗаписатьСтроку("Пример");
	Сам().ПроверитьРавенство(БД.Размер(), 16);
	
	БД.Перейти(0, 0);
	Буфер = "";
	БД.ПрочитатьСтроку(Буфер);
	Сам().ПроверитьРавенство(БД.Размер(), 16);
	Сам().ПроверитьРавенство(Буфер, "Пример");
КонецПроцедуры
              
Процедура ТестКодировкаUTF16_1() Экспорт
	БД = СоздатьОбъект("BinaryData");
	БД.Кодировка = 2;
	Бд.ЗаписатьСтроку("Аа");
	Сам().ПроверитьРавенство(БД.Размер(), 8);
	
	БД.Перейти(0, 0);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 16);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 4);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 48);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 4);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 13);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 0);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 10);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 0);
	
	БуферЧисло = -1;
	Сам().ПроверитьРавенство(БД.ПрочитатьДанные(БуферЧисло), 0);
КонецПроцедуры
              
Процедура ТестКодировкаUTF16_2() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	БД.ЗаписатьДанные(16);
	БД.ЗаписатьДанные(4);
	БД.ЗаписатьДанные(48);
	БД.ЗаписатьДанные(4);
	БД.ЗаписатьДанные(13);
	БД.ЗаписатьДанные(0);
	БД.ЗаписатьДанные(10);
	БД.ЗаписатьДанные(0);
	
	БД.ЗаписатьДанные(1);
	
	БД.Перейти(0, 0);
	
	БД.Кодировка = 2;
	Буфер = "";
	Сам().ПроверитьРавенство(БД.ПрочитатьСтроку(Буфер), 1);
	Сам().ПроверитьРавенство(Буфер, "Аа");

	Сам().ПроверитьРавенство(БД.Перейти(0), 8);
КонецПроцедуры
              
Процедура ТестКодировкаUTF8() Экспорт
	БД = СоздатьОбъект("BinaryData");
	БД.Кодировка = 3;
	Бд.ЗаписатьСтроку("Пример");
	Сам().ПроверитьРавенство(БД.Размер(), 14);
	
	БД.Перейти(0, 0);
	
	Буфер = "";
	БД.ПрочитатьСтроку(Буфер);
	
	Сам().ПроверитьРавенство(БД.Размер(), 14);
	Сам().ПроверитьРавенство(Буфер, "Пример");
КонецПроцедуры
              
Процедура ТестКодировкаUTF8_1() Экспорт
	БД = СоздатьОбъект("BinaryData");
	БД.Кодировка = 3;
	Бд.ЗаписатьСтроку("Аа");
	Сам().ПроверитьРавенство(БД.Размер(), 6);
	
	БД.Перейти(0, 0);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 208);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 144);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 208);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 176);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 13);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, 10);
	
	БуферЧисло = -1;
	Сам().ПроверитьРавенство(БД.ПрочитатьДанные(БуферЧисло), 0);
КонецПроцедуры
              
Процедура ТестКодировкаUTF8_2() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	БД.ЗаписатьДанные(208);
	БД.ЗаписатьДанные(144);
	БД.ЗаписатьДанные(208);
	БД.ЗаписатьДанные(176);
	БД.ЗаписатьДанные(13);
	БД.ЗаписатьДанные(10);
	
	БД.ЗаписатьДанные(1);
	
	БД.Перейти(0, 0);
	
	БД.Кодировка = 3;
	Буфер = "";
	Сам().ПроверитьРавенство(БД.ПрочитатьСтроку(Буфер), 1);
	Сам().ПроверитьРавенство(Буфер, "Аа");

	Сам().ПроверитьРавенство(БД.Перейти(0), 6);
КонецПроцедуры
              
Процедура ТестУстБлокировку() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	фРезультат = БД.УстБлокировку(0,1);
	Сам().ПроверитьРавенство(фРезультат, 0);
КонецПроцедуры
              
Процедура ТестСнятьБлокировку() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	Сам().ПроверитьИсключениеДляЛюбогоМетода(БД, "СнятьБлокировку", 0, 1); // БД.СнятьБлокировку(0,1);
КонецПроцедуры
              
Процедура ТестЗаписатьМПБ_ANSI() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	БД.ЗаписатьМПБ();
	Сам().ПроверитьРавенство(БД.Размер(), 0);
КонецПроцедуры
              
Процедура ТестЗаписатьМПБ_OEM() Экспорт
	БД = СоздатьОбъект("BinaryData");
	БД.Кодировка = 1;
	
	БД.ЗаписатьМПБ();
	Сам().ПроверитьРавенство(БД.Размер(), 0);
КонецПроцедуры
              
Процедура ТестЗаписатьМПБ_UTF16() Экспорт
	БД = СоздатьОбъект("BinaryData");
	БД.Кодировка = 2;
	
	БД.ЗаписатьМПБ();
	Сам().ПроверитьРавенство(БД.Размер(), 2);

	БД.Перейти(0, 0);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, Из_Любой_В_10("FF", 16));
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, Из_Любой_В_10("FE", 16));
	
	БуферЧисло = -1;
	Сам().ПроверитьРавенство(БД.ПрочитатьДанные(БуферЧисло), 0);
КонецПроцедуры
              
Процедура ТестЗаписатьМПБ_UTF8() Экспорт
	БД = СоздатьОбъект("BinaryData");
	БД.Кодировка = 3;
	
	БД.ЗаписатьМПБ();
	Сам().ПроверитьРавенство(БД.Размер(), 3);

	БД.Перейти(0, 0);
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, Из_Любой_В_10("EF", 16));
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, Из_Любой_В_10("BB", 16));
	
	БуферЧисло = -1;
	БД.ПрочитатьДанные(БуферЧисло);
	Сам().ПроверитьРавенство(БуферЧисло, Из_Любой_В_10("BF", 16));
	
	БуферЧисло = -1;
	Сам().ПроверитьРавенство(БД.ПрочитатьДанные(БуферЧисло), 0);
КонецПроцедуры

Процедура ТестПрочитатьМПБ_ANSI() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	БД.Кодировка = 0;
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.Перейти(0, 0);

	Бд.ПрочитатьМПБ();
	
	Сам().ПроверитьРавенство(БД.Перейти(0), 0);
	Сам().ПроверитьРавенство(БД.Кодировка, 0);
КонецПроцедуры

Процедура ТестПрочитатьМПБ_OEM() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	БД.Кодировка = 1;
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.Перейти(0, 0);

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

Процедура ТестПрочитатьМПБ_UTF16() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	БД.Кодировка = 2;
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);

	БД.Перейти(0, 0);

	Бд.ПрочитатьМПБ();
	
	Сам().ПроверитьРавенство(БД.Перейти(0), 0);
	Сам().ПроверитьРавенство(БД.Кодировка, 2);
КонецПроцедуры

Процедура ТестПрочитатьМПБ_UTF16_2() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	
	БД.Кодировка = 2;
	БД.ЗаписатьМПБ();
	БД.Перейти(4, 0);
	БД.Кодировка = 0;

	Бд.ПрочитатьМПБ();
	
	Сам().ПроверитьРавенство(БД.Перейти(0), 6);
	Сам().ПроверитьРавенство(БД.Кодировка, 2);
КонецПроцедуры

Процедура ТестПрочитатьМПБ_UTF8() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	БД.Кодировка = 3;
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);

	БД.Перейти(0, 0);

	Бд.ПрочитатьМПБ();
	
	Сам().ПроверитьРавенство(БД.Перейти(0), 0);
	Сам().ПроверитьРавенство(БД.Кодировка, 3);
КонецПроцедуры

Процедура ТестПрочитатьМПБ_UTF8_2() Экспорт
	БД = СоздатьОбъект("BinaryData");
	
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	БД.ЗаписатьДанные(1);
	
	БД.Кодировка = 3;
	БД.ЗаписатьМПБ();
	БД.Перейти(4, 0);
	БД.Кодировка = 0;

	Бд.ПрочитатьМПБ();
	
	Сам().ПроверитьРавенство(БД.Перейти(0), 7);
	Сам().ПроверитьРавенство(БД.Кодировка, 3);
КонецПроцедуры