You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
PXY: Добавление аргументов
This commit is contained in:
13011
service/dictionaries/en.json
vendored
13011
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
214
src/ru/OInt/core/Modules/OPI_ПроксиИнтеграций.os
vendored
214
src/ru/OInt/core/Modules/OPI_ПроксиИнтеграций.os
vendored
@@ -60,6 +60,44 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Запустить
|
||||
// Запускает прокси сервер интеграций
|
||||
//
|
||||
// Параметры:
|
||||
// Порт - Число - Порт запуска сервера - port
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Результат остановки сервера
|
||||
Функция Запустить(Знач Порт, Знач Проект) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Порт);
|
||||
|
||||
Результат = ПроверитьСуществованиеПроекта(Проект);
|
||||
|
||||
Если Не Результат["result"] Тогда
|
||||
Возврат Результат;
|
||||
Иначе
|
||||
Проект = Результат["path"];
|
||||
КонецЕсли;
|
||||
|
||||
ТипСервер = Тип("ВебСервер");
|
||||
|
||||
ПараметрыСервера = Новый Массив(1);
|
||||
ПараметрыСервера[0] = Порт;
|
||||
|
||||
ВебСервер = Новый(ТипСервер, ПараметрыСервера);
|
||||
|
||||
ВебСервер.ДобавитьОбработчикЗапросов(OPI_ПроксиИнтеграций, "ОсновнаяОбработка");
|
||||
ВебСервер.Запустить();
|
||||
|
||||
Возврат СформироватьОтвет(Истина, "Stopped");
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область НастройкаОбработчиков
|
||||
|
||||
// Добавить обработчик запросов
|
||||
// Добавляет новый обработчик в проект
|
||||
//
|
||||
@@ -88,7 +126,7 @@
|
||||
СекретныйКлюч = ПолучитьУникальныйКлючОбработчика(Проект);
|
||||
|
||||
Если ТипЗнч(СекретныйКлюч) = Тип("Соответствие") Тогда
|
||||
СекретныйКлюч.Вставить("message", "Не удалось сформировать UID обработчика. Попробуйте еще раз");
|
||||
СекретныйКлюч.Вставить("message", "Failed to generate a handler UID. Try again");
|
||||
Возврат СекретныйКлюч;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -174,6 +212,10 @@
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
|
||||
Для Каждого Элемент Из Результат["data"] Цикл
|
||||
Элемент.Вставить("args", ПолучитьАргументыОбработчика(Проект, КлючОбработчика));
|
||||
КонецЦикла;
|
||||
|
||||
КоличествоЗаписей = Результат["data"].Количество();
|
||||
|
||||
Если КоличествоЗаписей = 1 Тогда
|
||||
@@ -183,7 +225,7 @@
|
||||
Иначе
|
||||
|
||||
Если КоличествоЗаписей = 0 Тогда
|
||||
Результат = СформироватьОтвет(Ложь, "Обработчик не найден!");
|
||||
Результат = СформироватьОтвет(Ложь, "Handler not found");
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
@@ -224,23 +266,46 @@
|
||||
СтруктураФильтра.Вставить("value", КлючОбработчика);
|
||||
СтруктураФильтра.Вставить("raw" , Ложь);
|
||||
|
||||
Результат = OPI_SQLite.УдалитьЗаписи(Таблица, СтруктураФильтра, Проект);
|
||||
Результаты = Новый Соответствие;
|
||||
Успех = Истина;
|
||||
|
||||
Возврат Результат;
|
||||
Для Каждого Таблица Из ИменаКонстантТаблиц() Цикл
|
||||
|
||||
ИмяТаблицы = КонстантноеЗначение(Таблица);
|
||||
Результат = OPI_SQLite.УдалитьЗаписи(ИмяТаблицы, СтруктураФильтра, Проект);
|
||||
ТекущийУспех = Результат["result"];
|
||||
|
||||
Результаты.Вставить(ИмяТаблицы, ТекущийУспех);
|
||||
|
||||
Успех = ?(Не ТекущийУспех, ТекущийУспех, Успех);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Новый Структура("result,tables", Успех, Результаты);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Запустить
|
||||
// Запускает прокси сервер интеграций
|
||||
#КонецОбласти
|
||||
|
||||
#Область УстановкаАргументов
|
||||
|
||||
// Установить аргумент обработчика
|
||||
// Устанавливает аргумент для функции установщика, позволяя не указывать его при вызове
|
||||
//
|
||||
// Параметры:
|
||||
// Порт - Число - Порт запуска сервера - port
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// КлючОбработчика - Строка - Ключ обработчика - handler
|
||||
// Аргумент - Строка - CLI аргумент (опция) для функции обработчика - arg
|
||||
// Значение - Строка - Строковое значение аргумента - value
|
||||
// Строгий - Булево - Истина > аргумент не может быть перезаписан параметром запроса - strict
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Результат остановки сервера
|
||||
Функция Запустить(Знач Порт, Знач Проект) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Порт);
|
||||
// Структура Из КлючИЗначение - Результат установки
|
||||
Функция УстановитьАргументОбработчика(Знач Проект
|
||||
, Знач КлючОбработчика
|
||||
, Знач Аргумент
|
||||
, Знач Значение
|
||||
, Знач Строгий = Истина) Экспорт
|
||||
|
||||
Результат = ПроверитьСуществованиеПроекта(Проект);
|
||||
|
||||
@@ -250,17 +315,86 @@
|
||||
Проект = Результат["path"];
|
||||
КонецЕсли;
|
||||
|
||||
ТипСервер = Тип("ВебСервер");
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(КлючОбработчика);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Аргумент);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Строгий);
|
||||
|
||||
ПараметрыСервера = Новый Массив(1);
|
||||
ПараметрыСервера[0] = Порт;
|
||||
МассивФильтров = Новый Массив;
|
||||
|
||||
ВебСервер = Новый(ТипСервер, ПараметрыСервера);
|
||||
СтруктураФильтра = Новый Структура;
|
||||
СтруктураФильтра.Вставить("field", "key");
|
||||
СтруктураФильтра.Вставить("type" , "=");
|
||||
СтруктураФильтра.Вставить("value", КлючОбработчика);
|
||||
СтруктураФильтра.Вставить("raw" , Ложь);
|
||||
МассивФильтров.Добавить(СтруктураФильтра);
|
||||
|
||||
ВебСервер.ДобавитьОбработчикЗапросов(OPI_ПроксиИнтеграций, "ОсновнаяОбработка");
|
||||
ВебСервер.Запустить();
|
||||
СтруктураФильтра.Вставить("field", "arg");
|
||||
СтруктураФильтра.Вставить("value", Аргумент);
|
||||
МассивФильтров.Добавить(СтруктураФильтра);
|
||||
|
||||
Возврат СформироватьОтвет(Истина, "Остановлен");
|
||||
Таблица = КонстантноеЗначение("ТаблицаАргументов");
|
||||
Результат = OPI_SQLite.ПолучитьЗаписи(Таблица, , МассивФильтров, , , Проект);
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
|
||||
КоличествоЗаписей = Результат["data"].Количество();
|
||||
|
||||
СтруктураЗаписи = Новый Структура("value,strict", Значение, Строгий);
|
||||
|
||||
Если КоличествоЗаписей <> 0 Тогда
|
||||
Результат = OPI_SQLite.ОбновитьЗаписи(Таблица, СтруктураЗаписи, МассивФильтров, Проект);
|
||||
Иначе
|
||||
|
||||
СтруктураЗаписи.Вставить("key", КлючОбработчика);
|
||||
СтруктураЗаписи.Вставить("arg", Аргумент);
|
||||
Результат = OPI_SQLite.ДобавитьЗаписи(Таблица, СтруктураЗаписи, Ложь, Проект);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
Результат = ПолучитьОбработчикЗапросов(Проект, КлючОбработчика);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить аргументы обработчика
|
||||
// Получает список установленных аргументов обработчика
|
||||
//
|
||||
// Параметры:
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// КлючОбработчика - Строка - Ключ обработчика - handler
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Список обработчиков
|
||||
Функция ПолучитьАргументыОбработчика(Знач Проект, Знач КлючОбработчика) Экспорт
|
||||
|
||||
Результат = ПроверитьСуществованиеПроекта(Проект);
|
||||
|
||||
Если Не Результат["result"] Тогда
|
||||
Возврат Результат;
|
||||
Иначе
|
||||
Проект = Результат["path"];
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(КлючОбработчика);
|
||||
|
||||
СтруктураФильтра = Новый Структура;
|
||||
СтруктураФильтра.Вставить("field", "key");
|
||||
СтруктураФильтра.Вставить("type" , "=");
|
||||
СтруктураФильтра.Вставить("value", КлючОбработчика);
|
||||
СтруктураФильтра.Вставить("raw" , Ложь);
|
||||
|
||||
Таблица = КонстантноеЗначение("ТаблицаАргументов");
|
||||
МассивПолей = СтрРазделить("arg,value,strict", ",");
|
||||
|
||||
Результат = OPI_SQLite.ПолучитьЗаписи(Таблица, МассивПолей, СтруктураФильтра, , , Проект);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -278,16 +412,16 @@
|
||||
OPI_Инструменты.ВернутьУправляющиеПоследовательности(Путь);
|
||||
|
||||
ФайлПроекта = Новый Файл(Путь);
|
||||
Текст = "Файл проекта существует!";
|
||||
Текст = "The project file exists";
|
||||
Результат = Истина;
|
||||
|
||||
Если Не ФайлПроекта.Существует() Тогда
|
||||
Текст = "Файл проекта по указанному пути не найден!";
|
||||
Текст = "Project file not found at the specified path";
|
||||
Результат = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если ФайлПроекта.ЭтоКаталог() Тогда
|
||||
Текст = "Передан путь к каталогу, а не файл проекта!";
|
||||
Текст = "A directory path was passed, not a project file";
|
||||
Результат = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -326,7 +460,7 @@
|
||||
Результат = СоздатьНовыйПроект(ПолныйПуть);
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
Текст = "Файл проекта успешно создан!";
|
||||
Текст = "The project file was created successfully";
|
||||
Ответ = СформироватьОтвет(Истина, Текст, ПолныйПуть);
|
||||
Иначе
|
||||
Ответ = Результат;
|
||||
@@ -334,7 +468,7 @@
|
||||
|
||||
Иначе
|
||||
|
||||
Текст = "Файл проекта по заданному пути уже существует!";
|
||||
Текст = "The project file at the specified path already exists";
|
||||
Ответ = СформироватьОтвет(Ложь, Текст, ПолныйПуть);
|
||||
|
||||
КонецЕсли;
|
||||
@@ -358,10 +492,22 @@
|
||||
Функция КонстантноеЗначение(Знач Ключ)
|
||||
|
||||
Если Ключ = "ТаблицаОбработчиков" Тогда Возврат "handlers"
|
||||
ИначеЕсли Ключ = "ТаблицаАргументов" Тогда Возврат "arguments"
|
||||
|
||||
Иначе Возврат "" КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИменаКонстантТаблиц(Знач ТолькоОбработчики = Истина)
|
||||
|
||||
МассивИмен = Новый Массив;
|
||||
МассивИмен.Добавить("ТаблицаОбработчиков");
|
||||
МассивИмен.Добавить("ТаблицаАргументов");
|
||||
|
||||
Возврат МассивИмен;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьНовыйПроект(Путь)
|
||||
|
||||
ПустойФайл = ПолучитьДвоичныеДанныеИзСтроки("");
|
||||
@@ -374,6 +520,13 @@
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = СоздатьТаблицуАргументов(Путь);
|
||||
|
||||
Если Не Результат["result"] Тогда
|
||||
УдалитьФайлы(Путь);
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
@@ -394,6 +547,21 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьТаблицуАргументов(Путь)
|
||||
|
||||
СтруктураТаблицы = Новый Соответствие();
|
||||
СтруктураТаблицы.Вставить("key" , "TEXT");
|
||||
СтруктураТаблицы.Вставить("arg" , "TEXT");
|
||||
СтруктураТаблицы.Вставить("value" , "TEXT");
|
||||
СтруктураТаблицы.Вставить("strict" , "BOOLEAN");
|
||||
|
||||
ИмяТаблицыАргументов = КонстантноеЗначение("ТаблицаАргументов");
|
||||
Результат = OPI_SQLite.СоздатьТаблицу(ИмяТаблицыАргументов, СтруктураТаблицы, Путь);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьУникальныйКлючОбработчика(Путь)
|
||||
|
||||
СекретныйКлюч = ПолучитьUUID(9);
|
||||
|
@@ -60,6 +60,44 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Запустить
|
||||
// Запускает прокси сервер интеграций
|
||||
//
|
||||
// Параметры:
|
||||
// Порт - Число - Порт запуска сервера - port
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Результат остановки сервера
|
||||
Функция Запустить(Знач Порт, Знач Проект) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Порт);
|
||||
|
||||
Результат = ПроверитьСуществованиеПроекта(Проект);
|
||||
|
||||
Если Не Результат["result"] Тогда
|
||||
Возврат Результат;
|
||||
Иначе
|
||||
Проект = Результат["path"];
|
||||
КонецЕсли;
|
||||
|
||||
ТипСервер = Тип("ВебСервер");
|
||||
|
||||
ПараметрыСервера = Новый Массив(1);
|
||||
ПараметрыСервера[0] = Порт;
|
||||
|
||||
ВебСервер = Новый(ТипСервер, ПараметрыСервера);
|
||||
|
||||
ВебСервер.ДобавитьОбработчикЗапросов(OPI_ПроксиИнтеграций, "ОсновнаяОбработка");
|
||||
ВебСервер.Запустить();
|
||||
|
||||
Возврат СформироватьОтвет(Истина, "Stopped");
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область НастройкаОбработчиков
|
||||
|
||||
// Добавить обработчик запросов
|
||||
// Добавляет новый обработчик в проект
|
||||
//
|
||||
@@ -88,7 +126,7 @@
|
||||
СекретныйКлюч = ПолучитьУникальныйКлючОбработчика(Проект);
|
||||
|
||||
Если ТипЗнч(СекретныйКлюч) = Тип("Соответствие") Тогда
|
||||
СекретныйКлюч.Вставить("message", "Не удалось сформировать UID обработчика. Попробуйте еще раз");
|
||||
СекретныйКлюч.Вставить("message", "Failed to generate a handler UID. Try again");
|
||||
Возврат СекретныйКлюч;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -174,6 +212,10 @@
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
|
||||
Для Каждого Элемент Из Результат["data"] Цикл
|
||||
Элемент.Вставить("args", ПолучитьАргументыОбработчика(Проект, КлючОбработчика));
|
||||
КонецЦикла;
|
||||
|
||||
КоличествоЗаписей = Результат["data"].Количество();
|
||||
|
||||
Если КоличествоЗаписей = 1 Тогда
|
||||
@@ -183,7 +225,7 @@
|
||||
Иначе
|
||||
|
||||
Если КоличествоЗаписей = 0 Тогда
|
||||
Результат = СформироватьОтвет(Ложь, "Обработчик не найден!");
|
||||
Результат = СформироватьОтвет(Ложь, "Handler not found");
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
@@ -224,23 +266,46 @@
|
||||
СтруктураФильтра.Вставить("value", КлючОбработчика);
|
||||
СтруктураФильтра.Вставить("raw" , Ложь);
|
||||
|
||||
Результат = OPI_SQLite.УдалитьЗаписи(Таблица, СтруктураФильтра, Проект);
|
||||
Результаты = Новый Соответствие;
|
||||
Успех = Истина;
|
||||
|
||||
Возврат Результат;
|
||||
Для Каждого Таблица Из ИменаКонстантТаблиц() Цикл
|
||||
|
||||
ИмяТаблицы = КонстантноеЗначение(Таблица);
|
||||
Результат = OPI_SQLite.УдалитьЗаписи(ИмяТаблицы, СтруктураФильтра, Проект);
|
||||
ТекущийУспех = Результат["result"];
|
||||
|
||||
Результаты.Вставить(ИмяТаблицы, ТекущийУспех);
|
||||
|
||||
Успех = ?(Не ТекущийУспех, ТекущийУспех, Успех);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
Возврат Новый Структура("result,tables", Успех, Результаты);
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Запустить
|
||||
// Запускает прокси сервер интеграций
|
||||
#КонецОбласти
|
||||
|
||||
#Область УстановкаАргументов
|
||||
|
||||
// Установить аргумент обработчика
|
||||
// Устанавливает аргумент для функции обработчика, позволяя не указывать его при вызове
|
||||
//
|
||||
// Параметры:
|
||||
// Порт - Число - Порт запуска сервера - port
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// КлючОбработчика - Строка - Ключ обработчика - handler
|
||||
// Аргумент - Строка - CLI аргумент (опция) для функции обработчика - arg
|
||||
// Значение - Строка - Строковое значение аргумента - value
|
||||
// Строгий - Булево - Истина > аргумент не может быть перезаписан данными из запроса - strict
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Результат остановки сервера
|
||||
Функция Запустить(Знач Порт, Знач Проект) Экспорт
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьЧисло(Порт);
|
||||
// Структура Из КлючИЗначение - Результат установки
|
||||
Функция УстановитьАргументОбработчика(Знач Проект
|
||||
, Знач КлючОбработчика
|
||||
, Знач Аргумент
|
||||
, Знач Значение
|
||||
, Знач Строгий = Истина) Экспорт
|
||||
|
||||
Результат = ПроверитьСуществованиеПроекта(Проект);
|
||||
|
||||
@@ -250,17 +315,86 @@
|
||||
Проект = Результат["path"];
|
||||
КонецЕсли;
|
||||
|
||||
ТипСервер = Тип("ВебСервер");
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(КлючОбработчика);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Аргумент);
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Значение);
|
||||
OPI_ПреобразованиеТипов.ПолучитьБулево(Строгий);
|
||||
|
||||
ПараметрыСервера = Новый Массив(1);
|
||||
ПараметрыСервера[0] = Порт;
|
||||
МассивФильтров = Новый Массив;
|
||||
|
||||
ВебСервер = Новый(ТипСервер, ПараметрыСервера);
|
||||
СтруктураФильтра = Новый Структура;
|
||||
СтруктураФильтра.Вставить("field", "key");
|
||||
СтруктураФильтра.Вставить("type" , "=");
|
||||
СтруктураФильтра.Вставить("value", КлючОбработчика);
|
||||
СтруктураФильтра.Вставить("raw" , Ложь);
|
||||
МассивФильтров.Добавить(СтруктураФильтра);
|
||||
|
||||
ВебСервер.ДобавитьОбработчикЗапросов(OPI_ПроксиИнтеграций, "ОсновнаяОбработка");
|
||||
ВебСервер.Запустить();
|
||||
СтруктураФильтра.Вставить("field", "arg");
|
||||
СтруктураФильтра.Вставить("value", Аргумент);
|
||||
МассивФильтров.Добавить(СтруктураФильтра);
|
||||
|
||||
Возврат СформироватьОтвет(Истина, "Остановлен");
|
||||
Таблица = КонстантноеЗначение("ТаблицаАргументов");
|
||||
Результат = OPI_SQLite.ПолучитьЗаписи(Таблица, , МассивФильтров, , , Проект);
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
|
||||
КоличествоЗаписей = Результат["data"].Количество();
|
||||
|
||||
СтруктураЗаписи = Новый Структура("value,strict", Значение, Строгий);
|
||||
|
||||
Если КоличествоЗаписей <> 0 Тогда
|
||||
Результат = OPI_SQLite.ОбновитьЗаписи(Таблица, СтруктураЗаписи, МассивФильтров, Проект);
|
||||
Иначе
|
||||
|
||||
СтруктураЗаписи.Вставить("key", КлючОбработчика);
|
||||
СтруктураЗаписи.Вставить("arg", Аргумент);
|
||||
Результат = OPI_SQLite.ДобавитьЗаписи(Таблица, СтруктураЗаписи, Ложь, Проект);
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
Результат = ПолучитьОбработчикЗапросов(Проект, КлючОбработчика);
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить аргументы обработчика
|
||||
// Получает список установленных аргументов обработчика
|
||||
//
|
||||
// Параметры:
|
||||
// Проект - Строка - Путь к файлу проекта - proj
|
||||
// КлючОбработчика - Строка - Ключ обработчика - handler
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение - Список обработчиков
|
||||
Функция ПолучитьАргументыОбработчика(Знач Проект, Знач КлючОбработчика) Экспорт
|
||||
|
||||
Результат = ПроверитьСуществованиеПроекта(Проект);
|
||||
|
||||
Если Не Результат["result"] Тогда
|
||||
Возврат Результат;
|
||||
Иначе
|
||||
Проект = Результат["path"];
|
||||
КонецЕсли;
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(КлючОбработчика);
|
||||
|
||||
СтруктураФильтра = Новый Структура;
|
||||
СтруктураФильтра.Вставить("field", "key");
|
||||
СтруктураФильтра.Вставить("type" , "=");
|
||||
СтруктураФильтра.Вставить("value", КлючОбработчика);
|
||||
СтруктураФильтра.Вставить("raw" , Ложь);
|
||||
|
||||
Таблица = КонстантноеЗначение("ТаблицаАргументов");
|
||||
МассивПолей = СтрРазделить("arg,value,strict", ",");
|
||||
|
||||
Результат = OPI_SQLite.ПолучитьЗаписи(Таблица, МассивПолей, СтруктураФильтра, , , Проект);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -278,16 +412,16 @@
|
||||
OPI_Инструменты.ВернутьУправляющиеПоследовательности(Путь);
|
||||
|
||||
ФайлПроекта = Новый Файл(Путь);
|
||||
Текст = "Файл проекта существует!";
|
||||
Текст = "The project file exists";
|
||||
Результат = Истина;
|
||||
|
||||
Если Не ФайлПроекта.Существует() Тогда
|
||||
Текст = "Файл проекта по указанному пути не найден!";
|
||||
Текст = "Project file not found at the specified path";
|
||||
Результат = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
Если ФайлПроекта.ЭтоКаталог() Тогда
|
||||
Текст = "Передан путь к каталогу, а не файл проекта!";
|
||||
Текст = "A directory path was passed, not a project file";
|
||||
Результат = Ложь;
|
||||
КонецЕсли;
|
||||
|
||||
@@ -326,7 +460,7 @@
|
||||
Результат = СоздатьНовыйПроект(ПолныйПуть);
|
||||
|
||||
Если Результат["result"] Тогда
|
||||
Текст = "Файл проекта успешно создан!";
|
||||
Текст = "The project file was created successfully";
|
||||
Ответ = СформироватьОтвет(Истина, Текст, ПолныйПуть);
|
||||
Иначе
|
||||
Ответ = Результат;
|
||||
@@ -334,7 +468,7 @@
|
||||
|
||||
Иначе
|
||||
|
||||
Текст = "Файл проекта по заданному пути уже существует!";
|
||||
Текст = "The project file at the specified path already exists";
|
||||
Ответ = СформироватьОтвет(Ложь, Текст, ПолныйПуть);
|
||||
|
||||
КонецЕсли;
|
||||
@@ -358,10 +492,22 @@
|
||||
Функция КонстантноеЗначение(Знач Ключ)
|
||||
|
||||
Если Ключ = "ТаблицаОбработчиков" Тогда Возврат "handlers"
|
||||
ИначеЕсли Ключ = "ТаблицаАргументов" Тогда Возврат "arguments"
|
||||
|
||||
Иначе Возврат "" КонецЕсли;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ИменаКонстантТаблиц(Знач ТолькоОбработчики = Истина)
|
||||
|
||||
МассивИмен = Новый Массив;
|
||||
МассивИмен.Добавить("ТаблицаОбработчиков");
|
||||
МассивИмен.Добавить("ТаблицаАргументов");
|
||||
|
||||
Возврат МассивИмен;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьНовыйПроект(Путь)
|
||||
|
||||
ПустойФайл = ПолучитьДвоичныеДанныеИзСтроки("");
|
||||
@@ -374,6 +520,13 @@
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Результат = СоздатьТаблицуАргументов(Путь);
|
||||
|
||||
Если Не Результат["result"] Тогда
|
||||
УдалитьФайлы(Путь);
|
||||
Возврат Результат;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
@@ -394,6 +547,21 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СоздатьТаблицуАргументов(Путь)
|
||||
|
||||
СтруктураТаблицы = Новый Соответствие();
|
||||
СтруктураТаблицы.Вставить("key" , "TEXT");
|
||||
СтруктураТаблицы.Вставить("arg" , "TEXT");
|
||||
СтруктураТаблицы.Вставить("value" , "TEXT");
|
||||
СтруктураТаблицы.Вставить("strict" , "BOOLEAN");
|
||||
|
||||
ИмяТаблицыАргументов = КонстантноеЗначение("ТаблицаАргументов");
|
||||
Результат = OPI_SQLite.СоздатьТаблицу(ИмяТаблицыАргументов, СтруктураТаблицы, Путь);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьУникальныйКлючОбработчика(Путь)
|
||||
|
||||
СекретныйКлюч = ПолучитьUUID(9);
|
||||
|
Reference in New Issue
Block a user