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

Процедура ПриОткрытии()
	
	ирКлиент.Форма_ПриОткрытииЛкс(ЭтаФорма); 
	Если РежимВыбора Тогда
		ЭтаФорма.Заголовок = Заголовок + " (выбор)";
	КонецЕсли;

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

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

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

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

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

Процедура ДействияФормыОткрытьВКонфигураторе(Кнопка)
	ТекущаяСтрока = ЭлементыФормы.Стек.ТекущаяСтрока;
	Если ТекущаяСтрока = Неопределено Тогда
		Возврат;
	КонецЕсли; 
	ирКлиент.ОткрытьСсылкуВКонфигуратореЛкс(ТекущаяСтрока.Ссылка);
КонецПроцедуры

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

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

Процедура СтекВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
	Если РежимВыбора Тогда
		ОсновныеДействияФормыОК();
	КонецЕсли;
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	Если ЗначениеЗаполнено(ПараметрТекст) Тогда
		Текст = ПараметрТекст;
	Иначе
		Текст = ирКлиент.ТекстИзБуфераОбменаОСЛкс();
	КонецЕсли;
	Стек.Очистить();
	ШаблонСсылки = ирОбщий.ШаблонСсылкиСтрокиМодуляЛкс() + "(?:\:\s*([^\n{]*))?";
	Вхождения = ирОбщий.НайтиРегВыражениеЛкс(Текст, ШаблонСсылки, ", Расширение, Модуль,, НомерСтрокиМодуля,,,,, Текст"); 
	Вхождения.Колонки.Добавить("Ссылка");
	Вхождения.Колонки.Добавить("Метод");
	ТекстыМодулейКэш = Неопределено;
	Для Каждого ВхожденияЭлемент Из Вхождения Цикл
		ВхожденияЭлемент.Текст = СокрЛП(ВхожденияЭлемент.Текст);
		Если ВхожденияЭлемент.Текст = "<Стандартная>" Тогда
			Продолжить;
		КонецЕсли;
		//СтруктураСсылки = ирОбщий.СтруктураСсылкиСтрокиМодуляЛкс(ВхожденияЭлемент.ТекстВхождения);
		//АнализаторКода = мПлатформа.ПолеТекстаМодуля(СтруктураСсылки.МодульСРасширением);
		НоваяСтрока = Стек.Добавить();
		ЗаполнитьЗначенияСвойств(НоваяСтрока, ВхожденияЭлемент);
		НоваяСтрока.НомерСтрокиМодуля = Число(НоваяСтрока.НомерСтрокиМодуля);
		НоваяСтрока.Ссылка = ВхожденияЭлемент.ТекстВхождения;
		НоваяСтрока.Метод = мПлатформа.НайтиИмяМетодаСтрокиМодуля(НоваяСтрока.Модуль, НоваяСтрока.НомерСтрокиМодуля,, ТекстыМодулейКэш);
	КонецЦикла;
	Если Вхождения.Количество() = 0 Тогда
		Отказ = Истина;
		Возврат;
	КонецЕсли;  
	Если Истина
		И ЗначениеЗаполнено(ПараметрТекст) 
		И Стек.Количество() = 1
	Тогда
		ЭлементыФормы.Стек.ТекущаяСтрока = Стек[0];
		ОсновныеДействияФормыОК(); 
		Отказ = Истина;
	КонецЕсли;
КонецПроцедуры

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

Процедура СтекПриОкончанииРедактирования(Элемент, НоваяСтрока, ОтменаРедактирования)
	ОбновитьСсылкуСтроки();
КонецПроцедуры

Процедура СтекМодульПриИзменении(Элемент)
	// Нужен для групповой обработки ячеек
КонецПроцедуры

Процедура СтекРасширениеПриИзменении(Элемент)
	// Нужен для групповой обработки ячеек
КонецПроцедуры

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

