Перем ПолеТекстовогоДокументаСКонтекстнойПодсказкой;
Перем ОбработкаПолеТекстовогоДокументаСКонтекстнойПодсказкой;

// @@@.КЛАСС.ПолеТекстовогоДокументаСКонтекстнойПодсказкой
Процедура КлсПолеТекстовогоДокументаСКонтекстнойПодсказкойНажатие(Кнопка)
	
	ПолеТекстовогоДокументаСКонтекстнойПодсказкой[ЭлементыФормы.ВыражениеВнутреннегоЯзыка.Имя].Нажатие(Кнопка);
	
КонецПроцедуры

Процедура ПриОткрытии()
	
	Если ТипЗнч(ВладелецФормы) = Тип("Форма") Тогда
		ВладелецФормы.Панель.Доступность = Ложь;
	КонецЕсли;
	ЭлементыФормы.ВыражениеВнутреннегоЯзыка.УстановитьТекст(Формула);
	
	// +++.КЛАСС.ПолеТекстовогоДокументаСКонтекстнойПодсказкой
	ПолеТекстовогоДокументаСКонтекстнойПодсказкой = Новый Структура;
	ОбработкаПолеТекстовогоДокументаСКонтекстнойПодсказкой = ирОбщий.ПолучитьОбъектПоПолномуИмениМетаданныхЛкс("Обработка.ирКлсПолеТекстовогоДокументаСКонтекстнойПодсказкой");
	#Если Сервер И Не Сервер Тогда
		ОбработкаПолеТекстовогоДокументаСКонтекстнойПодсказкой = Обработки.ирКлсПолеТекстовогоДокументаСКонтекстнойПодсказкой.Создать();
	#КонецЕсли
	ОбработкаПолеТекстовогоДокументаСКонтекстнойПодсказкой.Инициализировать(ПолеТекстовогоДокументаСКонтекстнойПодсказкой,
		ЭтаФорма, ЭлементыФормы.ВыражениеВнутреннегоЯзыка, ЭлементыФормы.КоманднаяПанельВыражениеВнутреннегоЯзыка,
		Ложь, "ВычислитьВФорме", ЭтаФорма, "Выражение");
		
	Если мПараметры <> Неопределено Тогда
		ОбработкаПолеТекстовогоДокументаСКонтекстнойПодсказкой.ДобавитьСловоЛокальногоКонтекста(
			"Параметры", "Свойство", , мПараметры, , мПараметры);
	КонецЕсли; 
	// ---.КЛАСС.ПолеТекстовогоДокументаСКонтекстнойПодсказкой

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

Процедура ПриЗакрытии()
	
	// +++.КЛАСС.ПолеТекстовогоДокументаСКонтекстнойПодсказкой
	Для Каждого Экземпляр Из ПолеТекстовогоДокументаСКонтекстнойПодсказкой Цикл
		Экземпляр.Значение.Уничтожить();
	КонецЦикла;
	// ---.КЛАСС.ПолеТекстовогоДокументаСКонтекстнойПодсказкой

	Если ТипЗнч(ВладелецФормы) = Тип("Форма") Тогда
		ВладелецФормы.Панель.Доступность = Истина;
	КонецЕсли;
	
КонецПроцедуры

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

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

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

КонецФункции // ВычислитьВФорме()

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

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

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

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

Процедура ОбработчикОжиданияСПараметрамиЛкс() Экспорт 
	
	ирОбщий.ОбработчикОжиданияСПараметрамиЛкс();

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

ирОбщий.ИнициализироватьФормуЛкс(ЭтаФорма, "Обработка.ирВводВыраженияВстроенногоЯзыка.Форма.Форма");
