//ирПортативный Перем ирПортативный Экспорт;
//ирПортативный Перем ирОбщий Экспорт;
//ирПортативный Перем ирСервер Экспорт;
//ирПортативный Перем ирКэш Экспорт;
//ирПортативный Перем ирКлиент Экспорт;

#Если Клиент Тогда	
Перем мПараметры Экспорт;
	
// Инициализирует экземпляр класса.

//

// Параметры:

//  *СтруктураЭкземляров - Структура, *Неопределено - содержит все объекты данного класса для данной формы;

//  пФорма       - Форма - владелец элементов управления;

//  пПолеТекстовогоДокумента - ПолеТекста;

//  пКоманднаяПанель - КоманднаяПанель - в конце которой будут размещены кнопки;

//

Процедура Инициализировать(пФорма, пФормула, пМетодВыполнения = "", пКонтекстВыполнения = Неопределено, Параметры = Неопределено, Описание = Неопределено) Экспорт



	Формула = пФормула;

	КонтекстВыполнения = пКонтекстВыполнения;

	МетодВыполнения = пМетодВыполнения;
	

	Если КонтекстВыполнения = Неопределено Тогда

		КонтекстВыполнения = ЭтотОбъект;

	КонецЕсли;

	Если МетодВыполнения = "" Тогда

		МетодВыполнения = "ВыполнитьЛокально";

	КонецЕсли;

	Попытка

		Выполнить("КонтекстВыполнения." + МетодВыполнения + "(""Неопределено"")");

	Исключение

		//Сообщить(ОписаниеОшибки(), СтатусСообщения.Информация);

		//Сообщить("Задан неверный контекст выполнения программы. Будет использован чистый контекст выполнения", СтатусСообщения.Информация);

		КонтекстВыполнения = ЭтотОбъект;

		МетодВыполнения = "ВычислитьЛокально";

	КонецПопытки;
	ЭтотОбъект.мПараметры = Параметры;
	Если Описание <> Неопределено Тогда
		ЭтотОбъект.Описание = Описание;
	КонецЕсли; 

	

КонецПроцедуры // Инициализировать()



// Освобождает ресурсы занятые экземпляром класса.

// Самое главное - очистить ссылки на формы и объекты БД.

//

// Параметры:

//  Нет.

//

Процедура Уничтожить() Экспорт



	Для Каждого Реквизит Из Метаданные().Реквизиты Цикл

		ЭтотОбъект[Реквизит.Имя] = Неопределено;

	КонецЦикла;



КонецПроцедуры // Уничтожить()


// Вычисляет программный код локально.

//

// Параметры:

//  ТекстДляВычисления - Строка.

//

Функция ВычислитьЛокально(ТекстДляВычисления) Экспорт

	
	Результат = ирОбщий.ВычислитьВыражение(ТекстДляВычисления, мПараметры, НаСервере);
	Возврат Результат;



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


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

Описание = "Здесь задается выражение для вычисления на встроенном языке. Для обращения к значениям параметров служит переменная Параметры.";
#КонецЕсли

