
Процедура НадписьКакСохранитьНажатие(Элемент)
	
	ирКлиент.ОткрытьПанельИнструментовЛкс(Истина, Истина, "КаталогОбъектовДляОтладки");
	
КонецПроцедуры

Процедура НадписьФункцииДляОтладкиНажатие(Элемент)
	
	ЗапуститьПриложение("http://" + ирОбщий.АдресОсновногоСайтаЛкс() + "/index/funkcii_dlja_otladki/0-33");
	
КонецПроцедуры

Процедура ПриОткрытии()
	
	ирКлиент.Форма_ПриОткрытииЛкс(ЭтаФорма);
	БазоваяФорма = ирКлиент.ПолучитьФормуЛкс("Обработка.ирПортативный.Форма.Форма");
	ЭтаФорма.ШаблонВызова = БазоваяФорма.ПолучитьВычисляемыйКонтекстОтладчика();
	ФункцииРежимаОтладки.Загрузить(ирОбщий.ТаблицаЗначенийИзТабличногоДокументаЛкс(ПолучитьМакет("ФункцииРежимаОтладки"),,,, Истина));
	ирОбщий.ЗагрузитьВТаблицуЗначенийЛкс(ирОбщий.ТаблицаЗначенийИзТабличногоДокументаЛкс(ПолучитьМакет("ФункцияОтВарианты")), ФункцияОтВарианты);
	Для Каждого СтрокаФункции Из ФункцииРежимаОтладки Цикл
		СтрокаФункции.Вызов = СтрЗаменить(ирОбщий.ПервыйФрагментЛкс(ШаблонВызова, "()"), "*", СтрокаФункции.Имя) + "(" + СтрокаФункции.ОсновныеПараметры + ")";
		Если СтрокаФункции.ГенераторВыражения Тогда
			СтрокаФункции.Вызов = "Вычислить(" + СтрокаФункции.Вызов + ")";
		КонецЕсли;
	КонецЦикла;
	Для Каждого СтрокаФункции Из ФункцияОтВарианты Цикл
		СтрокаФункции.Вызов = СтрЗаменить(ирОбщий.ПервыйФрагментЛкс(ШаблонВызова, "()"), "*", "От") + "(" + СтрокаФункции.ТипПараметраОбъект + 
			?(ЗначениеЗаполнено(СтрокаФункции.ОстальныеПараметры), ", " + СтрокаФункции.ОстальныеПараметры, "") + ")";
	КонецЦикла;
	Если ирКэш.ЛиЭтоРасширениеКонфигурацииЛкс() Тогда
		ЭлементыФормы.ШаблонВызова.Подсказка = ЭлементыФормы.ШаблонВызова.Подсказка +
			". Вызов через общий модуль необходим, т.к. платформа не позволяет добавлять в расширении конфигурации глобальные серверные модули.";
	КонецЕсли;
	ЭлементыФормы.НадписьКлиентСерверногоЗапуска.Видимость = ирКлиент.ЛиНедоступныйПутьКлиентСервераЛкс(ЭтотОбъект, Истина);
	
КонецПроцедуры

Процедура ВнешнееСобытие(Источник, Событие, Данные) Экспорт
	
	ирКлиент.Форма_ВнешнееСобытиеЛкс(ЭтаФорма, Источник, Событие, Данные);

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

Процедура ТабличноеПолеПриПолученииДанных(Элемент, ОформленияСтрок) Экспорт 
	
	ирКлиент.ТабличноеПолеПриПолученииДанныхЛкс(ЭтаФорма, Элемент, ОформленияСтрок);

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

Процедура ОсновныеДействияФормыОбучающееВидео(Кнопка)
	
	ЗапуститьПриложение("https://youtu.be/-NJJP79TccI");
	
КонецПроцедуры

Процедура НадписьОписаниеНаСайтеНажатие(Элемент)
	ЗапуститьПриложение("http://" + ирОбщий.АдресОсновногоСайтаЛкс() + "/index/funkcii_dlja_otladki/0-33");
КонецПроцедуры

Процедура ФункцииПриАктивизацииСтроки(Элемент)
	
	ирКлиент.ТабличноеПолеПриАктивизацииСтрокиЛкс(ЭтаФорма, Элемент);
	
КонецПроцедуры

Процедура ФункцииПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) Экспорт
	
	ирКлиент.ТабличноеПолеПриВыводеСтрокиЛкс(ЭтаФорма, Элемент, ОформлениеСтроки, ДанныеСтроки);

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

Процедура ФункцияОтВариантыПриАктивизацииСтроки(Элемент)
	
	ирКлиент.ТабличноеПолеПриАктивизацииСтрокиЛкс(ЭтаФорма, Элемент);
	
КонецПроцедуры

Процедура ФункцияОтВариантыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) Экспорт
	ирКлиент.ТабличноеПолеПриВыводеСтрокиЛкс(ЭтаФорма, Элемент, ОформлениеСтроки, ДанныеСтроки);
	ОформлениеСтроки.Ячейки.Инструмент.УстановитьКартинку(ирКэш.КартинкаИнструментаЛкс(ДанныеСтроки.Инструмент));
КонецПроцедуры

Процедура КлсКомандаНажатие(Кнопка) Экспорт 
	
	ирКлиент.УниверсальнаяКомандаФормыЛкс(ЭтаФорма, Кнопка);
	
КонецПроцедуры

Процедура ДействияФормыПерейтиКОпределениюМетода(Кнопка)
	
	Если Ложь
		Или ирКэш.ЛиПортативныйРежимЛкс() 
		Или ЭлементыФормы.Функции.ТекущаяСтрока = Неопределено 
	Тогда
		Возврат;
	КонецЕсли; 
	ирКлиент.ОткрытьМетодМодуляПоИмениЛкс(ирОбщий.ПервыйФрагментЛкс(ЭлементыФормы.Функции.ТекущаяСтрока.Вызов, "("));
	
КонецПроцедуры

Процедура ПриЗакрытии()
	ирКлиент.Форма_ПриЗакрытииЛкс(ЭтаФорма);
КонецПроцедуры

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Экспорт
	
	ирКлиент.Форма_ОбработкаОповещенияЛкс(ЭтаФорма, ИмяСобытия, Параметр, Источник); 

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

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

Процедура КПВариантыОтНезависимыйСоздательСнимка(Кнопка)
	
	ТекущаяСтрока = ЭлементыФормы.ФункцияОтВарианты.ТекущаяСтрока;
	Если ТекущаяСтрока.ТипПараметраОбъект = "Запрос" Тогда
		#Если Сервер И Не Сервер Тогда
			Запрос = Новый Запрос;
		#КонецЕсли
		Текст = """Текст,Параметры,Таблицы"",Запрос.Текст,Запрос.Параметры";
		Если ирКэш.ДоступноТаблицыМенеджераВременныхТаблицЛкс() Тогда
			ТекстКлючей = "";
			ТекстЗначений = "";
			РазделительКлючей = "+"",""+";
			//// В окне "Вычислить выражение" макс. длина строки - 255
			//Для Счетчик = 1 По 5 Цикл 
			//	ТекстКлючей = ТекстКлючей + ирОбщий.СтрШаблонЛкс(РазделительКлючей + "?(Запрос.МенеджерВременныхТаблиц.Таблицы.Количество()>%1, Запрос.МенеджерВременныхТаблиц.Таблицы[%1].ПолноеИмя, ""_%1"")", Счетчик - 1);
			//	ТекстЗначений = ТекстЗначений + ирОбщий.СтрШаблонЛкс(",?(Запрос.МенеджерВременныхТаблиц.Таблицы.Количество()>%1, Запрос.МенеджерВременныхТаблиц.Таблицы[%1].ПолучитьДанные(), 0)", Счетчик - 1);
			//КонецЦикла;
			Для Счетчик = 1 По 1 Цикл
				ТекстКлючей = ТекстКлючей + ирОбщий.СтрШаблонЛкс(РазделительКлючей + "Запрос.МенеджерВременныхТаблиц.Таблицы[%1].ПолноеИмя", Счетчик - 1);
				ТекстЗначений = ТекстЗначений + ирОбщий.СтрШаблонЛкс(",Запрос.МенеджерВременныхТаблиц.Таблицы[%1].ПолучитьДанные()", Счетчик - 1);
			КонецЦикла;
			Текст = Текст + ",Новый Структура(" + Сред(ТекстКлючей, СтрДлина(РазделительКлючей) + 1) + ТекстЗначений + ")";
		КонецЕсли;
		Текст = "ЗначениеВСтрокуВнутр(Новый Структура(" + Текст + "))";
	КонецЕсли;
	ирКлиент.ОткрытьТекстЛкс(Текст, "Выражение независимого создания снимка " + ТекущаяСтрока.ТипПараметраОбъект);
	
КонецПроцедуры

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

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

Процедура ПодстрокаПоискаПриИзменении(Элемент)
	ирКлиент.ПолеВводаСИсториейВыбора_ПриИзмененииЛкс(Элемент, ЭтаФорма);
	ОбновитьОтбор();
КонецПроцедуры

Процедура ПодстрокаПоискаНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
	ирОбщий.ПолеВводаСИсториейВыбора_ОбновитьСписокЛкс(Элемент, ЭтаФорма);
КонецПроцедуры

Процедура ПодстрокаПоискаАвтоПодборТекста(Элемент, Текст, ТекстАвтоПодбора, СтандартнаяОбработка)
	Если ирКлиент.ПромежуточноеОбновлениеСтроковогоЗначенияПоляВводаЛкс(ЭтаФорма, Элемент, Текст) Тогда 
		ОбновитьОтбор();
	КонецЕсли;
КонецПроцедуры

Процедура ФункцияОтВариантыВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
	
	Если Колонка = ЭлементыФормы.ФункцияОтВарианты.Колонки.Инструмент Тогда
		// ирКлиент.ИмяФормыИзСтрокиИнструментаЛкс()
		ИмяФормы = ВыбраннаяСтрока.Инструмент;
		Если СтрЧислоВхождений(ИмяФормы, ".") = 1 Тогда
			ИмяФормы = ИмяФормы + ".Форма";
		КонецЕсли;
		Форма = ирКлиент.ПолучитьФормуЛкс(ИмяФормы);
		Форма.Открыть();
	КонецЕсли;
	
КонецПроцедуры

ирКлиент.ИнициироватьФормуЛкс(ЭтаФорма, "Обработка.ирПлатформа.Форма.ФункцииРежимаОтладки");
