mirror of
https://github.com/tormozit/RDT1C.git
synced 2025-12-17 13:14:11 +00:00
870 lines
57 KiB
Plaintext
870 lines
57 KiB
Plaintext
Перем мСписокВнешнихПараметров Экспорт;
|
||
Перем КоличествоВнешнихПараметров;
|
||
Перем ТекстМодуляТекущейВнешнейОбработки;
|
||
Перем ФайлВнешнейОбработки;
|
||
Перем ИмяВнешнейОбработки;
|
||
Перем ВнешняяОбработка;
|
||
Перем СтартоваяСтрока;
|
||
Перем ДатаИзмененияВнешнейОбработки;
|
||
Перем НаСервере Экспорт;
|
||
Перем РежимВнешнейОбработки Экспорт;
|
||
Перем АвтоПараметрыВыхода Экспорт;
|
||
Перем мСтруктураВосстановления;
|
||
Перем мАнализТехножурнала;
|
||
Перем мПлатформа;
|
||
|
||
// @@@.КЛАСС.ПолеТекстовогоДокументаСКонтекстнойПодсказкой
|
||
|
||
// Транслятор обработки событий нажатия на кнопки командной панели в компоненту.
|
||
|
||
// Является обязательным.
|
||
|
||
//
|
||
|
||
// Параметры:
|
||
|
||
// Кнопка – КнопкаКоманднойПанели.
|
||
|
||
//
|
||
|
||
Процедура КлсПолеТекстовогоДокументаСКонтекстнойПодсказкойНажатие(Кнопка)
|
||
|
||
|
||
ИнициализироватьГлобальныйКонтекстПодсказки(ПолеВстроенногоЯзыка);
|
||
Попытка
|
||
Выполнить("Ядро2iS.ДобавитьГлобальныйКонтекстВКонтекстнуюПодсказку2iS(ПолеВстроенногоЯзыка)");
|
||
Исключение
|
||
КонецПопытки;
|
||
|
||
ЭтоВыполнениеКода = (Кнопка = ЛксПолучитьКнопкуКоманднойПанелиЭкземпляраКомпоненты(ПолеВстроенногоЯзыка, "Выполнить"));
|
||
Для Каждого СтрокаПараметра Из Параметры Цикл
|
||
Если Истина
|
||
//И СтрокаПараметра.Значение <> Неопределено
|
||
//И СтрокаПараметра.Вход
|
||
Тогда
|
||
ЗначениеПараметра = СтрокаПараметра.Значение;
|
||
Если Истина
|
||
И Не СтрокаПараметра.Вход
|
||
И ЭтоВыполнениеКода
|
||
Тогда
|
||
ЗначениеПараметра = Неопределено; // Это нужно для избежания залипания блокирующих объектов типа ЗаписьСообщения
|
||
КонецЕсли;
|
||
//МассивТипов = Новый Массив;
|
||
//МассивТипов.Добавить(ТипЗнч(СтрокаПараметра.Значение));
|
||
ПолеВстроенногоЯзыка.ДобавитьСловоЛокальногоКонтекста(
|
||
СтрокаПараметра.Имя, "Свойство", , ЗначениеПараметра, , ЗначениеПараметра);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Если Ложь
|
||
Или Кнопка = ЛксПолучитьКнопкуКоманднойПанелиЭкземпляраКомпоненты(ПолеВстроенногоЯзыка, "Проверить")
|
||
Или ЭтоВыполнениеКода
|
||
Тогда
|
||
Если Не Справочники.ирАлгоритмы.ПараметрыКорректны(Параметры) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
Если ЭтоВыполнениеКода Тогда
|
||
Если Не ПолеВстроенногоЯзыка.ПроверитьПрограммныйКод() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
СохранитьВФайл(мСтруктураВосстановления.ФайлВосстановления.ПолноеИмя);
|
||
КонецЕсли;
|
||
|
||
ПолеВстроенногоЯзыка.Нажатие(Кнопка);
|
||
|
||
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
// @@@.КЛАСС.ПолеТекстовогоДокументаСКонтекстнойПодсказкой
|
||
Процедура КлсПолеТекстовогоДокументаСКонтекстнойПодсказкойАвтоОбновитьСправку()
|
||
|
||
ПолеВстроенногоЯзыка.АвтоОбновитьСправку();
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
Процедура ПриОткрытии()
|
||
|
||
|
||
ПолеВстроенногоЯзыка.Инициализировать(,
|
||
|
||
ЭтаФорма, ЭлементыФормы.ВстроенныйЯзык, ЭлементыФормы.КоманднаяПанельВстроенныйЯзык, Ложь, "ВыполнитьЛокально", ЭтаФорма);
|
||
ПолеВстроенногоЯзыка.ПолеТекстовогоДокумента.УстановитьТекст(Текст);
|
||
|
||
ЭтаФорма.Модифицированность = Ложь;
|
||
Если мСписокВнешнихПараметров.Количество() > 0 Тогда
|
||
Для Каждого ВнешнийПараметр Из мСписокВнешнихПараметров Цикл
|
||
СтрокаПараметра = Параметры.Добавить();
|
||
СтрокаПараметра.Имя = ВнешнийПараметр.Представление;
|
||
СтрокаПараметра.НИмя = НРег(СтрокаПараметра.Имя);
|
||
СтрокаПараметра.Вход = Истина;
|
||
СтрокаПараметра.Выход = Истина;
|
||
СтрокаПараметра.Значение = ВнешнийПараметр.Значение;
|
||
ОбновитьПредставлениеИТипЗначенияВСтроке(СтрокаПараметра);
|
||
СтрокаПараметра.Позиция = Параметры.Количество();
|
||
КонецЦикла;
|
||
ИначеЕсли Не МодальныйРежим Тогда
|
||
ИмяФайлаВосстановления = ирНеглобальный.ПроверитьВыбратьФайлВосстановленияКонсолиЛкс(мСтруктураВосстановления);
|
||
Если ИмяФайлаВосстановления <> "" Тогда
|
||
ЗагрузитьИзФайла(ИмяФайлаВосстановления);
|
||
Модифицированность = Истина;
|
||
УдалитьФайлы(ИмяФайлаВосстановления);
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если Ложь
|
||
Или Параметры.Количество() = 0
|
||
Или Не МодальныйРежим
|
||
Тогда
|
||
Кнопки = ЭлементыФормы.ОсновныеДействияФормы.Кнопки;
|
||
Кнопки.Удалить(Кнопки.Применить);
|
||
КонецЕсли;
|
||
|
||
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
// <Описание процедуры>
|
||
//
|
||
// Параметры:
|
||
// <Параметр1> – <Тип.Вид> – <описание параметра>
|
||
// <продолжение описания параметра>;
|
||
// <Параметр2> – <Тип.Вид> – <описание параметра>
|
||
// <продолжение описания параметра>.
|
||
//
|
||
Процедура ОбновитьЗначенияПараметровВыхода(СтруктураПараметров)
|
||
|
||
Для Каждого СтрокаПараметра Из Параметры Цикл
|
||
Если СтрокаПараметра.Выход Тогда
|
||
СтрокаПараметра.Значение = СтруктураПараметров[СтрокаПараметра.Имя];
|
||
ОбновитьПредставлениеИТипЗначенияВСтроке(СтрокаПараметра);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры // ОбновитьЗначенияПараметровВыхода()
|
||
|
||
Функция ПолучитьТелоМетода(ТекстДляВыполнения = Неопределено, СтруктураПараметров = Неопределено, ЛиСинтаксическийКонтроль = Ложь, РежимВнешнейОбработки = Ложь)
|
||
|
||
Если ТекстДляВыполнения = Неопределено Тогда
|
||
ТекстДляВыполнения = ПолеВстроенногоЯзыка.ПолеТекстовогоДокумента.ПолучитьТекст();
|
||
КонецЕсли;
|
||
ТекстВхода = "";
|
||
ТекстВыхода = "";
|
||
СтартоваяСтрока = 0;
|
||
|
||
// Строка инициализации параметров
|
||
Для Каждого СтрокаПараметра Из Параметры Цикл
|
||
Если СтруктураПараметров <> Неопределено Тогда
|
||
СтруктураПараметров.Вставить(СтрокаПараметра.Имя);
|
||
КонецЕсли;
|
||
//Если СтрокаПараметра.Вход Тогда // Здесь отрезаются параметры выхода полученные из определения типа в комментариях
|
||
ТекстВхода = ТекстВхода + СтрокаПараметра.Имя + " = _АлгоритмОбъект." + СтрокаПараметра.Имя + ";";
|
||
//Если РежимВнешнейОбработки Тогда
|
||
// ТекстВхода = ТекстВхода + Символы.ПС;
|
||
// СтартоваяСтрока = СтартоваяСтрока + 1;
|
||
//КонецЕсли;
|
||
Если СтрокаПараметра.Вход Тогда
|
||
Если СтруктураПараметров <> Неопределено Тогда
|
||
СтруктураПараметров[СтрокаПараметра.Имя] = СтрокаПараметра.Значение;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Если Не ЛиСинтаксическийКонтроль Тогда
|
||
Если СтрокаПараметра.Выход Тогда
|
||
Если РежимВнешнейОбработки Тогда
|
||
ТекстВыхода = ТекстВыхода + Символы.ПС;
|
||
КонецЕсли;
|
||
ТекстВыхода = ТекстВыхода + "_АлгоритмОбъект." + СтрокаПараметра.Имя + " = " + СтрокаПараметра.Имя + ";" ;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
Если РежимВнешнейОбработки Тогда
|
||
ТекстВхода = ТекстВхода + Символы.ПС;
|
||
СтартоваяСтрока = СтартоваяСтрока + 1;
|
||
КонецЕсли;
|
||
|
||
// Для обновления значений выходных параметров в случае ошибки выполнения добавляем попытку
|
||
ТелоМетода = "";
|
||
ТелоМетода = ТелоМетода + ТекстВхода;
|
||
ТелоМетода = ТелоМетода + "Попытка ";
|
||
Если РежимВнешнейОбработки Тогда
|
||
ТелоМетода = ТелоМетода + Символы.ПС;
|
||
СтартоваяСтрока = СтартоваяСтрока + 1;
|
||
ТелоМетода = ТелоМетода + "///////////////////////// Текст НАЧАЛО" + Символы.ПС;
|
||
СтартоваяСтрока = СтартоваяСтрока + 1;
|
||
КонецЕсли;
|
||
ТелоМетода = ТелоМетода + ТекстДляВыполнения;
|
||
Если РежимВнешнейОбработки Тогда
|
||
ТелоМетода = ТелоМетода + Символы.ПС + "///////////////////////// Текст КОНЕЦ";
|
||
КонецЕсли;
|
||
ТелоМетода = ТелоМетода + "
|
||
|Исключение " + ТекстВыхода + "
|
||
|ВызватьИсключение;
|
||
|КонецПопытки;
|
||
|~Конец:" + ТекстВыхода;
|
||
Возврат ТелоМетода;
|
||
|
||
КонецФункции
|
||
|
||
// @@@.КЛАСС.ПолеТекстовогоДокументаСКонтекстнойПодсказкой
|
||
|
||
// Процедура служит для выполнения программы поля текстового документа в локальном контексте.
|
||
|
||
// Вызывается из компоненты ирКлсПолеТекстовогоДокументаСКонтекстнойПодсказкой в режиме внутреннего языка.
|
||
|
||
// Не является обязательной.
|
||
|
||
//
|
||
|
||
// Параметры:
|
||
|
||
// ТекстДляВыполнения – Строка;
|
||
|
||
// *ЛиСинтаксическийКонтроль - Булево, *Ложь - признак вызова только для синтаксического контроля.
|
||
|
||
//
|
||
|
||
Функция ВыполнитьЛокально(ТекстДляВыполнения, ЛиСинтаксическийКонтроль = Ложь) Экспорт
|
||
|
||
|
||
Если Истина
|
||
И Не ЛиСинтаксическийКонтроль
|
||
И АвтоПараметрыВыхода
|
||
Тогда
|
||
ЗаполнитьПараметры(Ложь, Истина);
|
||
КонецЕсли;
|
||
СтруктураПараметров = Новый Структура;
|
||
Если Истина
|
||
И Не ЛиСинтаксическийКонтроль
|
||
И РежимВнешнейОбработки
|
||
Тогда
|
||
ПолучитьОбновитьФайлВнешнейОбработки(СтруктураПараметров);
|
||
Иначе
|
||
ТекстДляВыполнения = ПолучитьТелоМетода(ТекстДляВыполнения, СтруктураПараметров, ЛиСинтаксическийКонтроль);
|
||
КонецЕсли;
|
||
Если Не ЛиСинтаксическийКонтроль Тогда
|
||
ОбновитьЗначенияПараметровВыхода(СтруктураПараметров);
|
||
КонецЕсли;
|
||
мАнализТехножурнала = Обработки.ирАнализТехножурнала.Создать();
|
||
Если Не ЛиСинтаксическийКонтроль Тогда
|
||
мАнализТехножурнала.НачатьТрассу("КонсольКода");
|
||
КонецЕсли;
|
||
Попытка
|
||
Если Истина
|
||
И Не ЛиСинтаксическийКонтроль
|
||
И РежимВнешнейОбработки
|
||
Тогда
|
||
ВнешняяОбработка = ВнешниеОбработки.Создать(ФайлВнешнейОбработки.ПолноеИмя, Ложь);
|
||
Если ЛиЗамерВремени Тогда
|
||
ВремяНачала = ЛксПолучитьТекущееВремяВМиллисекундах();
|
||
КонецЕсли;
|
||
ВнешняяОбработка.мМетод(СтруктураПараметров);
|
||
Иначе
|
||
Если НаСервере Тогда
|
||
КонтекстВыполнения = ирСервер;
|
||
Иначе
|
||
КонтекстВыполнения = ирНеглобальный;
|
||
КонецЕсли;
|
||
Если ЛиЗамерВремени Тогда
|
||
ВремяНачала = ЛксПолучитьТекущееВремяВМиллисекундах();
|
||
КонецЕсли;
|
||
КонтекстВыполнения.ВыполнитьАлгоритм(ТекстДляВыполнения, СтруктураПараметров);
|
||
КонецЕсли;
|
||
Исключение
|
||
Если Не ЛиСинтаксическийКонтроль Тогда
|
||
Если ЛиЗамерВремени Тогда
|
||
ВремяКонца = ЛксПолучитьТекущееВремяВМиллисекундах();
|
||
Сообщить("Время выполнения - " + Строка(ВремяКонца - ВремяНачала) + " мс");
|
||
КонецЕсли;
|
||
мАнализТехножурнала.КончитьТрассу();
|
||
//ОбновитьЗначенияПараметровВыхода(СтруктураПараметров);
|
||
КонецЕсли;
|
||
ИмяМодуля = ПолучитьИмяМодуляВнешнейОбработки();
|
||
ИнформацияОбОшибке = ИнформацияОбОшибке();
|
||
//Если ИнформацияОбОшибке.Причина <> Неопределено Тогда
|
||
// ИнформацияОбОшибке = ИнформацияОбОшибке.Причина;
|
||
//КонецЕсли;
|
||
//НрегОписание = НРег(ИнформацияОбОшибке.Описание);
|
||
Если ИнформацияОбОшибке.Причина <> Неопределено Тогда
|
||
НрегОписание = НРег(ПодробноеПредставлениеОшибки(ИнформацияОбОшибке.Причина));
|
||
Маркер = "мутабельного значения";
|
||
ПозицияМаркера = Найти(НрегОписание, НРег(Маркер));
|
||
Если Истина
|
||
И ПозицияМаркера > 0
|
||
И Найти(НрегОписание, НРег("параметра метода ВыполнитьАлгоритм")) > 0
|
||
Тогда
|
||
Ошибка = Лев(ИнформацияОбОшибке.Причина.Описание, ПозицияМаркера - 1) + Маркер;
|
||
ВызватьИсключение Ошибка;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
// Перенес ниже
|
||
//Если Не ЛиСинтаксическийКонтроль Тогда
|
||
// ОбновитьЗначенияПараметровВыхода(СтруктураПараметров);
|
||
//КонецЕсли;
|
||
Если Истина
|
||
И Не ЛиСинтаксическийКонтроль
|
||
И РежимВнешнейОбработки
|
||
Тогда
|
||
ЛксПоказатьОшибкуВЗапросеИлиПрограммномКоде(ПолеВстроенногоЯзыка.ПолеТекстовогоДокумента, -СтартоваяСтрока,,, МодальныйРежим,
|
||
ИнформацияОбОшибке, ИмяМодуля);
|
||
Иначе
|
||
Если Не ЛиСинтаксическийКонтроль Тогда
|
||
ОбновитьЗначенияПараметровВыхода(СтруктураПараметров);
|
||
ЛксПоказатьОшибкуВЗапросеИлиПрограммномКоде(ПолеВстроенногоЯзыка.ПолеТекстовогоДокумента, -СтартоваяСтрока,,, МодальныйРежим,
|
||
ИнформацияОбОшибке);
|
||
Иначе
|
||
ВызватьИсключение;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Возврат Неопределено;
|
||
КонецПопытки;
|
||
Если Не ЛиСинтаксическийКонтроль Тогда
|
||
Если ЛиЗамерВремени Тогда
|
||
ВремяКонца = ЛксПолучитьТекущееВремяВМиллисекундах();
|
||
Сообщить("Время выполнения - " + Строка(ВремяКонца - ВремяНачала) + " мс");
|
||
КонецЕсли;
|
||
мАнализТехножурнала.КончитьТрассу();
|
||
ОбновитьЗначенияПараметровВыхода(СтруктураПараметров);
|
||
КонецЕсли;
|
||
|
||
|
||
КонецФункции // ВыполнитьЛокально()
|
||
|
||
|
||
Функция ПолучитьИмяМодуляВнешнейОбработки()
|
||
|
||
ИмяМодуля = "ВнешняяОбработка." + ИмяВнешнейОбработки + ".МодульОбъекта";
|
||
Возврат ИмяМодуля;
|
||
|
||
КонецФункции
|
||
|
||
|
||
|
||
Процедура ПриЗакрытии()
|
||
|
||
|
||
|
||
ирНеглобальный.УдалитьФайлВосстановленияКонсолиСБлокировкойЛкс(мСтруктураВосстановления);
|
||
|
||
// +++.КЛАСС.ПолеТекстовогоДокументаСКонтекстнойПодсказкой
|
||
|
||
// Уничтожение всех экземпляров компоненты. Обязательный блок.
|
||
|
||
ПолеВстроенногоЯзыка.Уничтожить();
|
||
|
||
// ---.КЛАСС.ПолеТекстовогоДокументаСКонтекстнойПодсказкой
|
||
|
||
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
Процедура ПараметрыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
|
||
|
||
//Если ДанныеСтроки.Позиция > 0 Тогда
|
||
// ОформлениеСтроки.ЦветФона = Новый Цвет(246, 252, 255);
|
||
//КонецЕсли;
|
||
//ОформлениеСтроки.Ячейки.Имя.ТолькоПросмотр = ДанныеСтроки.Позиция > 0;
|
||
ОформлениеСтроки.Ячейки.Вход.ТолькоПросмотр = ДанныеСтроки.Позиция > 0;
|
||
//ОформлениеСтроки.Ячейки.Выход.ТолькоПросмотр = ДанныеСтроки.Позиция > 0;
|
||
ОформлениеСтроки.Ячейки.ПредставлениеЗначения.ТолькоПросмотр = Не ДанныеСтроки.Вход;
|
||
ЛксОформитьЯчейкуСРасширеннымЗначением(ОформлениеСтроки.Ячейки.ПредставлениеЗначения, ДанныеСтроки.Значение, Элемент.Колонки.ПредставлениеЗначения);
|
||
ирНеглобальный.ТабличноеПолеПриВыводеСтрокиЛкс(Элемент, ОформлениеСтроки, ДанныеСтроки);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОбновитьПредставлениеИТипЗначенияВСтроке(СтрокаТаблицы = Неопределено)
|
||
|
||
Если СтрокаТаблицы = Неопределено Тогда
|
||
СтрокаТаблицы = ЭлементыФормы.Параметры.ТекущиеДанные;
|
||
КонецЕсли;
|
||
СтрокаТаблицы.ТипЗначения = ТипЗнч(СтрокаТаблицы.Значение);
|
||
СтрокаТаблицы.ПредставлениеЗначения = СтрокаТаблицы.Значение;
|
||
|
||
КонецПроцедуры
|
||
|
||
|
||
Процедура ПараметрыЗначениеПриИзменении(Элемент)
|
||
|
||
ТабличноеПоле = ЭтаФорма.ЭлементыФормы.Параметры;
|
||
ТабличноеПоле.ТекущиеДанные.Значение = Элемент.Значение;
|
||
ОбновитьПредставлениеИТипЗначенияВСтроке();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОсновныеДействияФормыПрименить(Кнопка)
|
||
|
||
ВозвращаемыеПараметры = Новый Структура;
|
||
Для Счетчик = 1 По мСписокВнешнихПараметров.Количество() Цикл
|
||
ВнешнийПараметр = мСписокВнешнихПараметров[Счетчик - 1];
|
||
ИмяПараметра = ВнешнийПараметр.Представление;
|
||
СтрокаПараметра = Параметры.Найти(Счетчик, "Позиция");
|
||
Если СтрокаПараметра <> Неопределено Тогда
|
||
ВнешнийПараметр.Значение = СтрокаПараметра.Значение;
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
Закрыть(мСписокВнешнихПараметров);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПараметрыПередУдалением(Элемент, Отказ)
|
||
|
||
Отказ = (Элемент.ТекущиеДанные.Позиция > 0);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПараметрыВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
|
||
|
||
Если Истина
|
||
И Колонка.Имя = "ПредставлениеЗначения"
|
||
И Не ВыбраннаяСтрока.Вход
|
||
Тогда
|
||
ирНеглобальный.ЯчейкаТабличногоПоляРасширенногоЗначения_ВыборЛкс(Элемент, СтандартнаяОбработка, ВыбраннаяСтрока.Значение);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПараметрыПриНачалеРедактирования(Элемент, НоваяСтрока, Копирование)
|
||
|
||
Если Не ЗначениеЗаполнено(Элемент.ТекущиеДанные.Имя) Тогда
|
||
Элемент.ТекущиеДанные.Имя = "в" + (Элемент.Значение.Индекс(Элемент.ТекущиеДанные) + 1);
|
||
Элемент.ТекущиеДанные.НИмя = НРег(Элемент.ТекущиеДанные.Имя);
|
||
КонецЕсли;
|
||
Если НоваяСтрока Тогда
|
||
Элемент.ТекущиеДанные.Вход = Истина;
|
||
Элемент.ТекущиеДанные.Значение = "";
|
||
ОбновитьПредставлениеИТипЗначенияВСтроке();
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПараметрыНачалоПеретаскивания(Элемент, ПараметрыПеретаскивания, Выполнение)
|
||
|
||
ПараметрыПеретаскивания.Значение = Элемент.ТекущаяСтрока.Имя;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельВстроенныйЯзыкСсылкаНаОбъектБД(Кнопка)
|
||
|
||
СтрокаПараметра = ПолеВстроенногоЯзыка.ВставитьСсылкуНаОбъектБД(ЭлементыФормы.Параметры);
|
||
Если СтрокаПараметра = Неопределено Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
СтрокаПараметра.НИмя = НРег(СтрокаПараметра.Имя);
|
||
СтрокаПараметра.Вход = Истина;
|
||
СтрокаПараметра.Выход = Ложь;
|
||
ОбновитьПредставлениеИТипЗначенияВСтроке(СтрокаПараметра);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельВстроенныйЯзыкВыполнятьНаСервере(Кнопка)
|
||
|
||
НаСервере = Не Кнопка.Пометка;
|
||
Кнопка.Пометка = НаСервере;
|
||
ЭлементыФормы.КоманднаяПанельВстроенныйЯзык.Кнопки.ОткрытьВОтладчике.Доступность = Не НаСервере;
|
||
ЭлементыФормы.КоманднаяПанельВстроенныйЯзык.Кнопки.РежимВнешнейОбработки.Доступность = Не НаСервере;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельПараметрыИсследоватьТаблицуПараметров(Кнопка)
|
||
|
||
Если ЭлементыФормы.Параметры.ТекущаяСтрока <> Неопределено Тогда
|
||
Исследовать(ЭлементыФормы.Параметры.ТекущаяСтрока.Значение);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПараметрыПриИзмененииФлажка(Элемент, Колонка)
|
||
|
||
Если Истина
|
||
И Элемент.ТекущиеДанные.Вход = Ложь
|
||
И Элемент.ТекущиеДанные.Выход = Ложь
|
||
Тогда
|
||
Если Колонка.Имя = "Вход" Тогда
|
||
Элемент.ТекущиеДанные.Выход = Истина;
|
||
ИначеЕсли Колонка.Имя = "Выход" Тогда
|
||
Элемент.ТекущиеДанные.Вход = Истина;
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПараметрыПроверкаПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка)
|
||
|
||
Если ТипЗнч(ПараметрыПеретаскивания.Значение) <> Тип("СтрокаТаблицыЗначений") Тогда
|
||
ПараметрыПеретаскивания.ДопустимыеДействия = ДопустимыеДействияПеретаскивания.Копирование;
|
||
СтандартнаяОбработка = Ложь
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПараметрыПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Колонка)
|
||
|
||
Если ТипЗнч(ПараметрыПеретаскивания.Значение) = Тип("Строка") Тогда
|
||
ЭлементыФормы.Параметры.ДобавитьСтроку();
|
||
СтрокаПараметра = ЭлементыФормы.Параметры.ТекущиеДанные;
|
||
СтрокаПараметра.Имя = ПараметрыПеретаскивания.Значение;
|
||
СтрокаПараметра.НИмя = НРег(СтрокаПараметра.Имя);
|
||
ПараметрыПеретаскивания.Действие = ДействиеПеретаскивания.Копирование;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ЗаполнитьПараметры(ПараметрыВхода = Истина, ПараметрыВыхода = Истина)
|
||
|
||
Если ПараметрыВхода Тогда
|
||
Пока Истина Цикл
|
||
ИнформацияОбОшибке = ПолеВстроенногоЯзыка.ПолучитьИнформациюОбОшибке();
|
||
НеопределеннаяПеременная = мПлатформа.ПолучитьИмяНеопределеннойПеременнойИзИнформацииОбОшибке(ИнформацияОбОшибке);
|
||
Если Не ЗначениеЗаполнено(НеопределеннаяПеременная) Тогда
|
||
ПолеВстроенногоЯзыка.ПроверитьПрограммныйКод(Ложь);
|
||
Прервать;
|
||
КонецЕсли;
|
||
СтрокаПараметра = Параметры.Найти(НРег(НеопределеннаяПеременная), "НИмя");
|
||
Если СтрокаПараметра = Неопределено Тогда
|
||
СтрокаПараметра = Параметры.Добавить();
|
||
СтрокаПараметра.Имя = НеопределеннаяПеременная;
|
||
СтрокаПараметра.НИмя = НРег(СтрокаПараметра.Имя);
|
||
ОбновитьПредставлениеИТипЗначенияВСтроке(СтрокаПараметра);
|
||
КонецЕсли;
|
||
СтрокаПараметра.Вход = Истина;
|
||
//ЭтаФорма.Модифицированность = Истина;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
Если ПараметрыВыхода Тогда
|
||
РекомендуемыеПараметрыВыхода = Новый Массив;
|
||
ПолеВстроенногоЯзыка.ЗаполнитьЛокальныеСвойстваИМетодыПоТексту(,,,, Истина);
|
||
СтрокиЛокальныхПеременных = ПолеВстроенногоЯзыка.ТаблицаСлов.НайтиСтроки(Новый Структура("ТипСлова, Определение", "Свойство", "Статистический"));
|
||
Для Каждого СтрокаПеременной Из СтрокиЛокальныхПеременных Цикл
|
||
СтрокаПараметра = Параметры.Найти(СтрокаПеременной.НСлово, "НИмя");
|
||
Если СтрокаПараметра = Неопределено Тогда
|
||
СтрокаПараметра = Параметры.Добавить();
|
||
СтрокаПараметра.Имя = СтрокаПеременной.Слово;
|
||
СтрокаПараметра.НИмя = НРег(СтрокаПараметра.Имя);
|
||
ОбновитьПредставлениеИТипЗначенияВСтроке(СтрокаПараметра);
|
||
КонецЕсли;
|
||
СтрокаПараметра.Выход = Истина;
|
||
//ЭтаФорма.Модифицированность = Истина;
|
||
РекомендуемыеПараметрыВыхода.Добавить(СтрокаПараметра.Имя);
|
||
КонецЦикла;
|
||
СтрокиПараметровТолькоВыхода = Параметры.НайтиСтроки(Новый Структура("Вход, Выход", Ложь, Истина));
|
||
Для Каждого СтрокаПараметра Из СтрокиПараметровТолькоВыхода Цикл
|
||
Если РекомендуемыеПараметрыВыхода.Найти(СтрокаПараметра.Имя) = Неопределено Тогда
|
||
Параметры.Удалить(СтрокаПараметра);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры // ЗаполнитьПараметры()
|
||
|
||
Процедура КоманднаяПанельПараметрыЗаполнить(Кнопка)
|
||
|
||
ЗаполнитьПараметры();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПараметрыИмяПриИзменении(Элемент)
|
||
|
||
Если Не ЛксЛиИмяПеременной(Элемент.Значение) Тогда
|
||
Элемент.Значение = мПлатформа.ПолучитьИдентификаторИзПредставления(Элемент.Значение);
|
||
КонецЕсли;
|
||
ЭлементыФормы.Параметры.ТекущиеДанные.НИмя = Нрег(Элемент.Значение);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельПараметрыАвтоПараметрыВыхода(Кнопка)
|
||
|
||
АвтоПараметрыВыхода = Не Кнопка.Пометка;
|
||
Кнопка.Пометка = АвтоПараметрыВыхода;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельПараметрыОчистить(Кнопка)
|
||
|
||
НачальноеКоличество = Параметры.Количество();
|
||
Для СчетчикПараметры = 1 По НачальноеКоличество Цикл
|
||
СтрокаПараметра = Параметры[НачальноеКоличество - СчетчикПараметры];
|
||
Если СтрокаПараметра.Позиция = 0 Тогда
|
||
Параметры.Удалить(СтрокаПараметра);
|
||
КонецЕсли;
|
||
КонецЦикла;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПараметрыПредставлениеЗначенияОкончаниеВводаТекста(Элемент, Текст, Значение, СтандартнаяОбработка)
|
||
|
||
ирНеглобальный.ПолеВвода_ОкончаниеВводаТекстаЛкс(Элемент, Текст, Значение, СтандартнаяОбработка, ЭлементыФормы.Параметры.ТекущаяСтрока.Значение);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОсновныеДействияФормыСохранить(Кнопка)
|
||
|
||
РезультатВыбора = ЛксВыбратьСсылку(Метаданные.Справочники.ирАлгоритмы, ТекущийАлгоритм);
|
||
Если ЗначениеЗаполнено(РезультатВыбора) Тогда
|
||
//Если Не ЗначениеЗаполнено(ТекущийАлгоритм) Тогда
|
||
ТекущийАлгоритм = РезультатВыбора;
|
||
//КонецЕсли;
|
||
//АлгоритмОбъект = РезультатВыбора.ПолучитьОбъект();
|
||
АлгоритмОбъект = РезультатВыбора;
|
||
Иначе
|
||
АлгоритмОбъект = Справочники.ирАлгоритмы.СоздатьЭлемент();
|
||
ТекущийАлгоритм = ирНеглобальный.ПолучитьТочнуюСсылкуОбъектаЛкс(АлгоритмОбъект);
|
||
КонецЕсли;
|
||
ФормаАлгоритма = АлгоритмОбъект.ПолучитьФорму();
|
||
АлгоритмОбъект = ФормаАлгоритма.ЭтотОбъект;
|
||
#Если _ Тогда
|
||
АлгоритмОбъект = Справочники.ирАлгоритмы.СоздатьЭлемент();
|
||
#КонецЕсли
|
||
ФормаАлгоритма.ТекстАлгоритма = ПолеВстроенногоЯзыка.ПолеТекстовогоДокумента.ПолучитьТекст();
|
||
//СтрокиПараметровКонсоли = Параметры.НайтиСтроки(Новый Структура("Вход", Истина));
|
||
СтрокиПараметровКонсоли = Параметры;
|
||
Для Каждого СтрокаПараметраКонсоли Из СтрокиПараметровКонсоли Цикл
|
||
СтрокаПараметраАлгоритма = АлгоритмОбъект.Параметры.Найти(СтрокаПараметраКонсоли.Имя, "Имя");
|
||
Если СтрокаПараметраАлгоритма = Неопределено Тогда
|
||
СтрокаПараметраАлгоритма = АлгоритмОбъект.Параметры.Добавить();
|
||
СтрокаПараметраАлгоритма.Имя = СтрокаПараметраКонсоли.Имя;
|
||
КонецЕсли;
|
||
ЗаполнитьЗначенияСвойств(СтрокаПараметраАлгоритма, СтрокаПараметраКонсоли);
|
||
Попытка
|
||
СтрокаПараметраАлгоритма.ЗначениеХранилище = Новый ХранилищеЗначения(СтрокаПараметраКонсоли.Значение);
|
||
Исключение
|
||
Сообщить("Значение параметра """ + СтрокаПараметраКонсоли.Имя + """ типа """ + ТипЗнч(СтрокаПараметраКонсоли.Значение)
|
||
+ """ не сохранено, т.к. имеет несериализуемый тип", СтатусСообщения.Внимание);
|
||
КонецПопытки;
|
||
КонецЦикла;
|
||
ФормаАлгоритма.СправочникОбъект = ФормаАлгоритма.СправочникОбъект;
|
||
ФормаАлгоритма.Открыть();
|
||
ФормаАлгоритма.Модифицированность = Истина;
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ПолучитьОбновитьФайлВнешнейОбработки(СтруктураПараметров = Неопределено) Экспорт
|
||
|
||
ТекстМодуля = ПолучитьТелоМетода(, СтруктураПараметров,, Истина);
|
||
ТекстМодуля = "Процедура мМетод(_АлгоритмОбъект) Экспорт
|
||
|Перем ЭтотОбъект;
|
||
|" + ТекстМодуля + "
|
||
|КонецПроцедуры";
|
||
СтартоваяСтрока = СтартоваяСтрока + 2;
|
||
Если Ложь
|
||
Или (Истина
|
||
И ФайлВнешнейОбработки.Существует()
|
||
И ФайлВнешнейОбработки.ПолучитьВремяИзменения() > ДатаИзмененияВнешнейОбработки
|
||
И мПлатформа.ФайловыйКэшАлгоритмовДопускаетРедактирование)
|
||
Или (Истина
|
||
И ФайлВнешнейОбработки.Существует()
|
||
И ФайлВнешнейОбработки.ПолучитьВремяИзменения() = ДатаИзмененияВнешнейОбработки
|
||
И ТекстМодуляТекущейВнешнейОбработки = ТекстМодуля)
|
||
Тогда
|
||
Возврат ФайлВнешнейОбработки;
|
||
КонецЕсли;
|
||
мПлатформа.СформироватьВнешнююОбработку(ИмяВнешнейОбработки, ФайлВнешнейОбработки, ТекстМодуля);
|
||
ТекстМодуляТекущейВнешнейОбработки = ТекстМодуля;
|
||
ДатаИзмененияВнешнейОбработки = ФайлВнешнейОбработки.ПолучитьВремяИзменения();
|
||
Возврат ФайлВнешнейОбработки;
|
||
|
||
КонецФункции // ПолучитьОбновитьФайлВнешнейОбработки()
|
||
|
||
Процедура КоманднаяПанельВстроенныйЯзыкОткрытьВОтладчике(Кнопка)
|
||
|
||
Если Не РежимВнешнейОбработки Тогда
|
||
КоманднаяПанельВстроенныйЯзыкРежимВнешнейОбработки();
|
||
КонецЕсли;
|
||
Если Не ПолеВстроенногоЯзыка.ПроверитьПрограммныйКод() Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
Если Не мПлатформа.ФайловыйКэшАлгоритмовДопускаетРедактирование Тогда
|
||
Сообщить("Т.к. не включено разрешение редактирования файлового кэша, изменения файла будут игнорироваться",
|
||
СтатусСообщения.Информация);
|
||
КонецЕсли;
|
||
ФайлВнешнейОбработки = ПолучитьОбновитьФайлВнешнейОбработки();
|
||
НомерСтрокиВАлгоритме = ПолеВстроенногоЯзыка.ПолучитьНомерТекущейСтроки();
|
||
НомерСтрокиВМодуле = НомерСтрокиВАлгоритме + СтартоваяСтрока;
|
||
Если ФайлВнешнейОбработки <> Неопределено Тогда
|
||
ИдентификаторПроцессаОтладчика = ирНеглобальный.ПроверитьЗапуститьОтладчик();
|
||
Если ИдентификаторПроцессаОтладчика = Неопределено Тогда
|
||
ИдентификаторПроцессаОтладчика = 0;
|
||
КонецЕсли;
|
||
мПлатформа.ОткрытьМодульВнешнейОбработкиВОтладчике(ФайлВнешнейОбработки.ПолноеИмя, НомерСтрокиВМодуле, ИдентификаторПроцессаОтладчика);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельВстроенныйЯзыкРежимВнешнейОбработки(Кнопка = Неопределено)
|
||
|
||
Кнопка = ЭлементыФормы.КоманднаяПанельВстроенныйЯзык.Кнопки.РежимВнешнейОбработки;
|
||
ЭтаФорма.РежимВнешнейОбработки = Не Кнопка.Пометка;
|
||
Кнопка.Пометка = РежимВнешнейОбработки;
|
||
ЭлементыФормы.КоманднаяПанельВстроенныйЯзык.Кнопки.ВыполнятьНаСервере.Доступность = Не РежимВнешнейОбработки;
|
||
//ЭлементыФормы.КоманднаяПанельВстроенныйЯзык.Кнопки.ОткрытьВОтладчике.Доступность = РежимВнешнейОбработки;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельПараметрыНовоеОкно(Кнопка)
|
||
|
||
ОткрытьФорму("ОбщаяФорма.ирКонсольКода",,, Новый УникальныйИдентификатор);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПараметрыПредставлениеЗначенияНачалоВыбора(Элемент, СтандартнаяОбработка)
|
||
|
||
ирНеглобальный.ПолеВводаРасширенногоЗначения_НачалоВыбораЛкс(ЭлементыФормы.Параметры, СтандартнаяОбработка, ЭлементыФормы.Параметры.ТекущаяСтрока.Значение);
|
||
ОбновитьПредставлениеИТипЗначенияВСтроке();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ОсновныеДействияФормыЗагрузить(Кнопка)
|
||
|
||
РезультатВыбора = ЛксВыбратьСсылку(Метаданные.Справочники.ирАлгоритмы, ТекущийАлгоритм);
|
||
Если Не ЗначениеЗаполнено(РезультатВыбора) Тогда
|
||
Возврат;
|
||
КонецЕсли;
|
||
ТекущийАлгоритм = РезультатВыбора;
|
||
#Если _ Тогда
|
||
ТекущийАлгоритм = Справочники.ирАлгоритмы.ПустаяСсылка();
|
||
#КонецЕсли
|
||
ПолеВстроенногоЯзыка.ПолеТекстовогоДокумента.УстановитьТекст(ТекущийАлгоритм.ТекстАлгоритма);
|
||
Если Параметры.Количество() > 0 Тогда
|
||
Ответ = Вопрос("Очистить параметры перед загрузкой?", РежимДиалогаВопрос.ДаНет);
|
||
Если Ответ = КодВозвратаДиалога.Да Тогда
|
||
Параметры.Очистить();
|
||
КонецЕсли;
|
||
КонецЕсли;
|
||
Для Каждого СтрокаПараметраАлгоритма Из ТекущийАлгоритм.Параметры Цикл
|
||
СтрокаПараметраКонсоли = Параметры.Найти(СтрокаПараметраАлгоритма.Имя, "Имя");
|
||
Если СтрокаПараметраКонсоли = Неопределено Тогда
|
||
СтрокаПараметраКонсоли = Параметры.Добавить();
|
||
СтрокаПараметраКонсоли.Имя = СтрокаПараметраАлгоритма.Имя;
|
||
СтрокаПараметраКонсоли.НИмя = НРег(СтрокаПараметраКонсоли.Имя);
|
||
КонецЕсли;
|
||
ЗаполнитьЗначенияСвойств(СтрокаПараметраКонсоли, СтрокаПараметраАлгоритма);
|
||
ЗначениеИзХранилища = СтрокаПараметраАлгоритма.ЗначениеХранилище.Получить();
|
||
Если ЗначениеИзХранилища <> Неопределено Тогда
|
||
СтрокаПараметраКонсоли.Значение = ЗначениеИзХранилища;
|
||
КонецЕсли;
|
||
ОбновитьПредставлениеИТипЗначенияВСтроке(СтрокаПараметраКонсоли);
|
||
КонецЦикла;
|
||
ЭтаФорма.Модифицированность = Ложь;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельПараметрыМенеджерТабличногоПоля(Кнопка)
|
||
|
||
Обработки.ирМенеджерТабличногоПоля.ПолучитьФорму(, ЭтаФорма, ).УстановитьСвязь(ЭлементыФормы.Параметры);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельВстроенныйЯзыкЗамерВремени(Кнопка)
|
||
|
||
Кнопка.Пометка = Не Кнопка.Пометка;
|
||
ЛиЗамерВремени = Кнопка.Пометка;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ПередЗакрытием(Отказ, СтандартнаяОбработка)
|
||
|
||
Если ЭтаФорма.Модифицированность Тогда
|
||
Ответ = Вопрос("Данные в форме были изменены. Закрыть форму?", РежимДиалогаВопрос.ОКОтмена);
|
||
Отказ = Ответ <> КодВозвратаДиалога.ОК;
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельВстроенныйЯзыкВозврат(Кнопка)
|
||
|
||
ЭлементыФормы.ВстроенныйЯзык.ВыделенныйТекст = "Перейти ~Конец;";
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельПараметрыОткрытьФайл(Кнопка)
|
||
|
||
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
|
||
ДиалогВыбораФайла.Заголовок = "Выберите файл для загрузки";
|
||
ДиалогВыбораФайла.Фильтр = ирНеглобальный.ПолучитьСтрокуФильтраДляВыбораФайлаЛкс("f1c", "Файлы консоли кода");
|
||
ДиалогВыбораФайла.Расширение = "f1c";
|
||
Если ДиалогВыбораФайла.Выбрать() Тогда
|
||
ЗагрузитьИзФайла(ДиалогВыбораФайла.ПолноеИмяФайла);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура ЗагрузитьИзФайла(ИмяФайла)
|
||
|
||
Попытка
|
||
ДанныеФайла = ЗначениеИзФайла(ИмяФайла);
|
||
Исключение
|
||
Предупреждение("Неправильный файл");
|
||
Возврат;
|
||
КонецПопытки;
|
||
ПолеВстроенногоЯзыка.ПолеТекстовогоДокумента.УстановитьТекст(ДанныеФайла.Текст);
|
||
Параметры = ДанныеФайла.Параметры;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельПараметрыСохранитьФайл(Кнопка)
|
||
|
||
СохранитьВФайл();
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура СохранитьВФайл(ИмяФайла = "")
|
||
|
||
ДиалогВыбораФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
|
||
ДиалогВыбораФайла.Заголовок = "Выберите файл для сохранения";
|
||
ДиалогВыбораФайла.Фильтр = ирНеглобальный.ПолучитьСтрокуФильтраДляВыбораФайлаЛкс("f1c", "Файлы консоли кода");
|
||
ДиалогВыбораФайла.Расширение = "f1c";
|
||
ДанныеДляФайла = Новый Структура();
|
||
ДанныеДляФайла.Вставить("Текст", ПолеВстроенногоЯзыка.ПолеТекстовогоДокумента.ПолучитьТекст());
|
||
ДанныеДляФайла.Вставить("Параметры", Параметры);
|
||
ЗапрашиватьИмяФайла = Не ЗначениеЗаполнено(ИмяФайла);
|
||
ФайлВыбран = ирНеглобальный.СохранитьФайлВКонсолиСВосстановлениемЛкс(ДиалогВыбораФайла, ИмяФайла, , ДанныеДляФайла,
|
||
мСтруктураВосстановления, ЗапрашиватьИмяФайла);
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельВстроенныйЯзыкВыполнитьАнализТрассы(Кнопка)
|
||
|
||
Если мАнализТехножурнала <> Неопределено Тогда
|
||
мАнализТехножурнала.ПоказатьТрассу(,,, 0);
|
||
КонецЕсли;
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельВстроенныйЯзыкНачалоЗамера(Кнопка)
|
||
|
||
ЭлементыФормы.ВстроенныйЯзык.ВыделенныйТекст = "ЛксНачатьЗамер();
|
||
|";
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельВстроенныйЯзыкКонецЗамера(Кнопка)
|
||
|
||
ЭлементыФормы.ВстроенныйЯзык.ВыделенныйТекст = "ЛксКончитьЗамер();
|
||
|";
|
||
|
||
КонецПроцедуры
|
||
|
||
Процедура КоманднаяПанельВстроенныйЯзыкАдаптироватьТекстИзМодуля(Кнопка)
|
||
|
||
ТекстАлгоритма = ЭлементыФормы.ВстроенныйЯзык.ПолучитьТекст();
|
||
ТекстАлгоритма = ЗаменитьВозвратыНаПерейтиВТекстеМетода1С(ТекстАлгоритма);
|
||
ЭлементыФормы.ВстроенныйЯзык.УстановитьТекст(ТекстАлгоритма);
|
||
|
||
КонецПроцедуры
|
||
|
||
Функция ЗаменитьВозвратыНаПерейтиВТекстеМетода1С(Знач Текст) Экспорт
|
||
|
||
ОбработкаРегулярныхВыражений = мПлатформа.RegExp;
|
||
ОбработкаРегулярныхВыражений.Global = Истина;
|
||
ОбработкаРегулярныхВыражений.MultiLine = Истина;
|
||
|
||
// Шаблон тут можно улучшить конечно
|
||
ОбработкаРегулярныхВыражений.Pattern = "((?:^|\n|\r)(?:\t| )*)Возврат(?:\t| )+(\s*[^\r;]+)(\r|;)";
|
||
Текст = ОбработкаРегулярныхВыражений.Replace(Текст, "$1Результат = $2;" + Символы.ПС + "$1Перейти ~Конец$3");
|
||
ОбработкаРегулярныхВыражений.Pattern = "((?:^|\n|\r)(?:\t| )*)Возврат(?:\t| )*(\n|\r|;)";
|
||
Текст = ОбработкаРегулярныхВыражений.Replace(Текст, "$1Перейти ~Конец$2");
|
||
//Вхождения = ОбработкаРегулярныхВыражений.Execute(Текст);
|
||
//Для Каждого Вхождение Из Вхождения Цикл
|
||
// СтрокаЗамены = "";
|
||
// Если Вхождение.SubMatches(1) <> Неопределено Тогда
|
||
// СтрокаЗамены = СтрокаЗамены + Вхождение.SubMatches(0) + "Результат = " + Вхождение.SubMatches(1) + ";";
|
||
// КонецЕсли;
|
||
// //СтрокаЗамены = СтрокаЗамены + Вхождение.SubMatches(0) + "Перейти ~Конец";
|
||
// СтрокаЗамены = СтрокаЗамены + " Перейти ~Конец";
|
||
// Текст = СтрЗаменить(Текст, Вхождение.Value, СтрокаЗамены);
|
||
//КонецЦикла;
|
||
Результат = Текст;
|
||
Возврат Результат;
|
||
|
||
КонецФункции
|
||
|
||
Процедура СтруктураКоманднойПанелиНажатие(Кнопка)
|
||
|
||
ирНеглобальный.ОткрытьСтруктуруКоманднойПанелиЛкс(ЭтаФорма, Кнопка);
|
||
|
||
КонецПроцедуры
|
||
|
||
ирНеглобальный.ВстроитьКнопкиСтруктурыКоманднойПанелиЛкс(ЭтаФорма);
|
||
|
||
мПлатформа = ирКэш.Получить();
|
||
НаСервере = Ложь;
|
||
РежимВнешнейОбработки = Ложь;
|
||
ДатаИзмененияВнешнейОбработки = Дата("00010101");
|
||
ДатаИзмененияВнешнейОбработки = ТекущаяДата() + 100000;
|
||
АвтоПараметрыВыхода = ЭтаФорма.ЭлементыФормы.КоманднаяПанельПараметры.Кнопки.АвтоПараметрыВыхода.Пометка;
|
||
// В управляемом приложении даже в файловой базе есть контекст сервера
|
||
//ЭтаФорма.ЭлементыФормы.КоманднаяПанельВстроенныйЯзык.Кнопки.ВыполнятьНаСервере.Доступность = Не мПлатформа.ЭтоФайловаяБаза;
|
||
Параметры.Колонки.Добавить("Значение");
|
||
|
||
Параметры.Колонки.Добавить("НИмя");
|
||
мСписокВнешнихПараметров = Новый СписокЗначений;
|
||
ИмяВнешнейОбработки = "DynamicExternalProcessorOfCodeConsole";
|
||
ФайлВнешнейОбработки = Новый Файл(мПлатформа.КаталогФайловогоКэша + "\" + ИмяВнешнейОбработки + ".epf");
|
||
мПлатформа.ПолучитьФайлОткрывателя1С();
|
||
мСтруктураВосстановления = ирНеглобальный.ПолучитьСтруктуруВосстановленияКонсолиЛкс("irCodeConsole");
|