2024-03-19 13:56:38 +03:00
|
|
|
#Использовать cmdline
|
|
|
|
#Использовать oint
|
2024-03-22 10:40:03 +03:00
|
|
|
#Использовать "../../tools"
|
|
|
|
#Использовать "../../help"
|
2024-03-19 13:56:38 +03:00
|
|
|
|
2024-03-22 10:40:03 +03:00
|
|
|
Перем ОбъектОПИ;
|
|
|
|
Перем Парсер;
|
2024-03-21 08:48:40 +03:00
|
|
|
|
2024-03-22 10:40:03 +03:00
|
|
|
Процедура ПриСозданииОбъекта()
|
|
|
|
|
|
|
|
ОбъектОПИ = Новый СвязьОПИ;
|
|
|
|
|
|
|
|
КонецПроцедуры
|
2024-03-21 08:48:40 +03:00
|
|
|
|
2024-03-20 14:52:23 +03:00
|
|
|
#Область СлужебныеПроцедурыИФункции
|
|
|
|
|
|
|
|
#Область Основные
|
|
|
|
|
2024-03-19 13:56:38 +03:00
|
|
|
Процедура ОсновнойОбработчик()
|
|
|
|
|
|
|
|
Парсер = Новый ПарсерАргументовКоманднойСтроки();
|
2024-03-22 10:40:03 +03:00
|
|
|
|
|
|
|
Для Каждого Команда Из ОбъектОПИ.ПолучитьИмяМодуля() Цикл
|
2024-03-20 14:52:23 +03:00
|
|
|
СформироватьКоманду(Команда.Ключ, Парсер);
|
|
|
|
КонецЦикла;
|
2024-03-22 10:40:03 +03:00
|
|
|
|
2024-03-20 14:52:23 +03:00
|
|
|
Результат = Парсер.Разобрать(АргументыКоманднойСтроки);
|
2024-03-19 13:56:38 +03:00
|
|
|
ТекущаяКоманда = Результат["Команда"];
|
|
|
|
|
|
|
|
Если ТекущаяКоманда = Неопределено Тогда
|
2024-03-22 10:40:03 +03:00
|
|
|
Справка.ВывестиНачальнуюСтраницу();
|
2024-03-19 13:56:38 +03:00
|
|
|
Иначе
|
|
|
|
ВыполнитьОбработкуКоманды(Результат);
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
КонецПроцедуры
|
|
|
|
|
2024-03-20 14:52:23 +03:00
|
|
|
Процедура СформироватьКоманду(Знач Имя, Парсер)
|
2024-03-19 13:56:38 +03:00
|
|
|
|
2024-03-20 14:52:23 +03:00
|
|
|
Команда = Парсер.ОписаниеКоманды(Имя);
|
2024-03-22 10:40:03 +03:00
|
|
|
ТаблицаПараметров = ОбъектОПИ.ПолучитьТаблицуПараметров(Имя).Скопировать();
|
2024-03-20 14:52:23 +03:00
|
|
|
Парсер.ДобавитьПозиционныйПараметрКоманды(Команда, "Метод");
|
2024-03-19 13:56:38 +03:00
|
|
|
|
2024-03-20 14:52:23 +03:00
|
|
|
ДобавитьПараметрыКоманды(Парсер, Команда, ТаблицаПараметров);
|
2024-03-19 13:56:38 +03:00
|
|
|
|
2024-03-20 14:52:23 +03:00
|
|
|
Парсер.ДобавитьКоманду(Команда);
|
2024-03-19 13:56:38 +03:00
|
|
|
|
|
|
|
КонецПроцедуры
|
|
|
|
|
|
|
|
Процедура ВыполнитьОбработкуКоманды(Знач Данные)
|
|
|
|
|
|
|
|
ТекущаяКоманда = Данные["Команда"];
|
|
|
|
Вывод = "";
|
|
|
|
|
|
|
|
Попытка
|
|
|
|
|
2024-03-20 14:52:23 +03:00
|
|
|
Вывод = ПолучитьРезультатОбработки(ТекущаяКоманда, Данные);
|
2024-03-22 09:15:57 +03:00
|
|
|
ОбработатьВыводJSON(Вывод);
|
2024-03-19 13:56:38 +03:00
|
|
|
|
|
|
|
Если ЗначениеЗаполнено(Вывод) Тогда
|
2024-03-20 08:59:32 +03:00
|
|
|
Сообщить(Символы.ПС + Вывод + Символы.ПС, СтатусСообщения.Внимание);
|
2024-03-19 13:56:38 +03:00
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
Исключение
|
|
|
|
|
|
|
|
Если ЗначениеЗаполнено(Вывод) Тогда
|
|
|
|
Сообщить(Вывод);
|
|
|
|
Иначе
|
|
|
|
Сообщить(ОписаниеОшибки(), СтатусСообщения.ОченьВажное);
|
|
|
|
Сообщить(Символы.ПС);
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
КонецПопытки;
|
|
|
|
|
|
|
|
КонецПроцедуры
|
|
|
|
|
2024-03-20 14:52:23 +03:00
|
|
|
Функция ПолучитьРезультатОбработки(Знач Команда, Знач Данные)
|
2024-03-22 10:40:03 +03:00
|
|
|
|
|
|
|
Модуль = ОбъектОПИ.ПолучитьИмяМодуля(Команда);
|
2024-03-19 13:56:38 +03:00
|
|
|
Параметры = Данные["ЗначенияПараметров"];
|
|
|
|
Метод = Параметры["Метод"];
|
|
|
|
Ответ = "<пустой возврат>";
|
|
|
|
|
2024-03-22 10:40:03 +03:00
|
|
|
ТаблицаПараметров = ОбъектОПИ.ПолучитьТаблицуПараметров(Команда);
|
2024-03-19 13:56:38 +03:00
|
|
|
|
|
|
|
Если Не ЗначениеЗаполнено(Метод) Тогда
|
2024-03-22 10:40:03 +03:00
|
|
|
Справка.ВывестиСправкуПоМетодам(Команда, ТаблицаПараметров);
|
2024-03-19 13:56:38 +03:00
|
|
|
Возврат "";
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
ОтборКоманды = Новый Структура("МетодПоиска", вРег(Метод));
|
|
|
|
ПараметрыМетода = ТаблицаПараметров.НайтиСтроки(ОтборКоманды);
|
|
|
|
|
|
|
|
Если Параметры.Количество() = 1 Тогда
|
2024-03-22 10:40:03 +03:00
|
|
|
Справка.ВывестиСправкуПоПараметрам(ПараметрыМетода);
|
2024-03-19 13:56:38 +03:00
|
|
|
Возврат "";
|
|
|
|
КонецЕсли;
|
|
|
|
|
2024-03-22 10:40:03 +03:00
|
|
|
ТекстВыполнения = СформироватьСтрокуВызоваМетода(Параметры, ПараметрыМетода, Модуль, Метод);
|
|
|
|
|
2024-03-22 09:15:57 +03:00
|
|
|
Выполнить(ТекстВыполнения);
|
|
|
|
|
|
|
|
Возврат Ответ;
|
|
|
|
|
|
|
|
КонецФункции
|
|
|
|
|
|
|
|
#КонецОбласти
|
|
|
|
|
|
|
|
#Область Вспомогательные
|
|
|
|
|
|
|
|
Процедура ДобавитьПараметрыКоманды(Парсер, Команда, Знач ТаблицаПараметров);
|
|
|
|
|
|
|
|
ТаблицаПараметров.Свернуть("Параметр");
|
|
|
|
|
|
|
|
МассивПараметров = ТаблицаПараметров.ВыгрузитьКолонку("Параметр");
|
|
|
|
|
|
|
|
Для Каждого Параметр Из МассивПараметров Цикл
|
|
|
|
Парсер.ДобавитьИменованныйПараметрКоманды(Команда, Параметр);
|
|
|
|
КонецЦикла;
|
|
|
|
|
|
|
|
КонецПроцедуры
|
|
|
|
|
2024-03-22 10:40:03 +03:00
|
|
|
Процедура ОбработатьВыводJSON(Вывод)
|
2024-03-22 09:15:57 +03:00
|
|
|
|
|
|
|
Если ТипЗнч(Вывод) = Тип("Структура")
|
|
|
|
Или ТипЗнч(Вывод) = Тип("Соответствие")
|
|
|
|
Или ТипЗнч(Вывод) = Тип("Массив") Тогда
|
|
|
|
|
|
|
|
Вывод = OPI_Инструменты.JSONСтрокой(Вывод);
|
|
|
|
|
|
|
|
КонецЕсли;
|
|
|
|
КонецПроцедуры
|
|
|
|
|
2024-03-22 10:40:03 +03:00
|
|
|
Функция СформироватьСтрокуВызоваМетода(Знач ПереданныеПараметры, Знач ПараметрыМетода, Знач Модуль, Знач Метод)
|
|
|
|
|
|
|
|
ТекстВыполнения = "";
|
|
|
|
СтрокаВызова = Модуль + "." + Метод + "(";
|
|
|
|
Счетчик = 0;
|
2024-03-22 09:15:57 +03:00
|
|
|
|
2024-03-19 13:56:38 +03:00
|
|
|
Для Каждого НеобходимыйПараметр Из ПараметрыМетода Цикл
|
|
|
|
|
2024-03-22 09:15:57 +03:00
|
|
|
ЗначениеПараметра = ПереданныеПараметры.Получить(НеобходимыйПараметр.Параметр);
|
2024-03-19 13:56:38 +03:00
|
|
|
|
|
|
|
Если ЗначениеЗаполнено(ЗначениеПараметра) Тогда
|
|
|
|
|
2024-03-22 10:40:03 +03:00
|
|
|
ИмяПараметра = "Параметра" + Строка(Счетчик);
|
|
|
|
|
2024-03-19 13:56:38 +03:00
|
|
|
ТекстВыполнения = ТекстВыполнения
|
|
|
|
+ Символы.ПС
|
2024-03-22 10:40:03 +03:00
|
|
|
+ ИмяПараметра
|
2024-03-20 14:52:23 +03:00
|
|
|
+ " = ОбработатьВходящийПараметр("""
|
2024-03-19 13:56:38 +03:00
|
|
|
+ ЗначениеПараметра
|
2024-03-20 14:52:23 +03:00
|
|
|
+ """, """
|
|
|
|
+ НеобходимыйПараметр.ВариантОбработки
|
|
|
|
+ """);";
|
2024-03-19 13:56:38 +03:00
|
|
|
|
2024-03-22 10:40:03 +03:00
|
|
|
СтрокаВызова = СтрокаВызова + ИмяПараметра + ", ";
|
|
|
|
Счетчик = Счетчик + 1;
|
2024-03-19 13:56:38 +03:00
|
|
|
Иначе
|
|
|
|
СтрокаВызова = СтрокаВызова + " , ";
|
|
|
|
КонецЕсли;
|
|
|
|
|
|
|
|
КонецЦикла;
|
|
|
|
|
2024-03-22 10:40:03 +03:00
|
|
|
ЛишниеСимволы = 2;
|
|
|
|
СтрокаВызова = Лев(СтрокаВызова, СтрДлина(СтрокаВызова) - ЛишниеСимволы);
|
|
|
|
СтрокаВызова = СтрокаВызова + ");";
|
|
|
|
СтрокаВызова = "Ответ = " + СтрокаВызова;
|
|
|
|
ТекстВыполнения = ТекстВыполнения + Символы.ПС + СтрокаВызова;
|
2024-03-20 14:52:23 +03:00
|
|
|
|
2024-03-22 10:40:03 +03:00
|
|
|
Возврат ТекстВыполнения;
|
2024-03-20 14:52:23 +03:00
|
|
|
|
2024-03-21 14:10:44 +03:00
|
|
|
КонецФункции
|
|
|
|
|
2024-03-20 14:52:23 +03:00
|
|
|
#КонецОбласти
|
|
|
|
|
|
|
|
#КонецОбласти
|
2024-03-19 13:56:38 +03:00
|
|
|
|
|
|
|
Попытка
|
2024-03-22 10:40:03 +03:00
|
|
|
ПриСозданииОбъекта();
|
2024-03-19 13:56:38 +03:00
|
|
|
ОсновнойОбработчик();
|
|
|
|
Исключение
|
|
|
|
Сообщить(Символы.ПС + "!!! ОШИБКА: Проверьте корректность введенных данных" + Символы.ПС, СтатусСообщения.ОченьВажное);
|
|
|
|
Сообщить(КраткоеПредставлениеОшибки(ИнформацияОбОшибке()) + Символы.ПС, СтатусСообщения.Важное);
|
|
|
|
КонецПопытки;
|
|
|
|
|