﻿
&НаКлиенте
Процедура СоздатьКнопку(Команда)
	
	ПодключитьОбработчикОжидания("СоздатьКнопкиНаФорме", 3, Истина);
	
КонецПроцедуры



&НаСервере
Процедура СоздатьКнопкуНаСервере()
	
	УдалитьКнопкуНаСервере();
	
	Кнопка = Элементы.Добавить("НоваяКнопка", Тип("КнопкаФормы"), ЭтаФорма);
	Кнопка.Заголовок = "НоваяКнопка";
	Кнопка.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
	Кнопка.ИмяКоманды = "НоваяКнопка";
	Кнопка.Видимость = Истина;
	
	Кнопка2 = Элементы.Добавить("НоваяКнопка2", Тип("КнопкаФормы"), ЭтаФорма);
	Кнопка2.Заголовок = "НоваяКнопка2";
	Кнопка2.Вид = ВидКнопкиФормы.ОбычнаяКнопка;
	Кнопка2.ИмяКоманды = "НоваяКнопка";
	Кнопка2.Видимость = Ложь;
	
КонецПроцедуры

&НаКлиенте
Процедура НоваяКнопка(Команда)

	Сообщить("Кнопка создана програмно.");

КонецПроцедуры // НоваяКнопкаПриНажатии()

&НаКлиенте
Процедура СоздатьКнопкиНаФорме()

	СоздатьКнопкуНаСервере();

КонецПроцедуры // ЗакрытиеФормыПоТаймауту()

&НаКлиенте
Функция ВыполнитьКомандуОСБезПоказаЧерногоОкна(ТекстКоманды, ЖдатьОкончания = -1) Экспорт
	
	//если ЖдатьОкончания = -1, тогда будет ожидания окончания работы приложения
	ИмяВременногоФайлаКоманды = ПолучитьИмяВременногоФайла("bat");
	// 
	ЗТ = Новый ЗаписьТекста(ИмяВременногоФайлаКоманды, КодировкаТекста.ANSI, , Ложь); 
	ЗТ.Закрыть();
	ЗТ = Новый ЗаписьТекста(ИмяВременногоФайлаКоманды, КодировкаТекста.UTF8, , Истина); 
	ЗТ.ЗаписатьСтроку("chcp 65001"); 
	ЗТ.ЗаписатьСтроку(ТекстКоманды); 
	ЗТ.Закрыть();
	

	WshShell	= Новый COMОбъект("WScript.Shell");

	Рез			= WshShell.Run(ИмяВременногоФайлаКоманды, 0, ЖдатьОкончания);
	WshShell	= Неопределено;
	
	Возврат Рез;
	
КонецФункции

&НаКлиенте
Процедура Sleep(КолСекунд)
	
    Команда = "ping 127.0.0.1 -n "+СокрЛП(КолСекунд+1); //+1 нужен, т.к. в реальности происходит на один пинг меньше
    ВыполнитьКомандуОСБезПоказаЧерногоОкна(Команда);

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

&НаКлиенте
Процедура УдалитьКнопку(Команда)
	УдалитьКнопкуНаСервере();
КонецПроцедуры

&НаСервере
Процедура УдалитьКнопкуНаСервере()

	Попытка
		Элементы.Удалить(Элементы.НоваяКнопка);
		Элементы.Удалить(Элементы.НоваяКнопка2);
	Исключение
	КонецПопытки;

КонецПроцедуры // УдалитьКнопкуНаСервере()

&НаСервере
Процедура ЗаполнитьНачальнымиДаннымиТЗ()

	СтрТЗ = ТЗ.Добавить();
	СтрТЗ.ВидимаяКолонка        = "ВидимаяКолонка1";
	СтрТЗ.СкрытаяКолонка        = "СкрытаяКолонка1";
	СтрТЗ.ДоступнаяКолонка      = "ДоступнаяКолонка1";
	СтрТЗ.НеДоступнаяколонка    = "НеДоступнаяколонка1";
	СтрТЗ.КолонкаТолькоПросмотр = "КолонкаТолькоПросмотр1";
	СтрТЗ.Реквизит4             = "Реквизит41";
	
	
	СтрТЗ = ТЗ.Добавить();
	СтрТЗ.ВидимаяКолонка        = "ВидимаяКолонка2";
	СтрТЗ.СкрытаяКолонка        = "СкрытаяКолонка2";
	СтрТЗ.ДоступнаяКолонка      = "ДоступнаяКолонка2";
	СтрТЗ.НеДоступнаяколонка    = "НеДоступнаяколонка2";
	СтрТЗ.КолонкаТолькоПросмотр = "КолонкаТолькоПросмотр2";
	СтрТЗ.Реквизит4             = "Реквизит42";

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	ЗаполнитьНачальнымиДаннымиТЗ();
КонецПроцедуры
