You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
SQLite: Drop и Truncate
This commit is contained in:
12256
service/dictionaries/en.json
vendored
12256
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
32
src/ru/OInt/core/Modules/OPI_SQLite.os
vendored
32
src/ru/OInt/core/Modules/OPI_SQLite.os
vendored
@@ -280,6 +280,38 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удалить таблицу
|
||||
// Удаляет таблицу из базы
|
||||
//
|
||||
// Параметры:
|
||||
// Таблица - Строка - Имя таблицы - table
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_SQLite, Таблица, Соединение);
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Очистить таблицу
|
||||
// Очищает таблицу базы
|
||||
//
|
||||
// Параметры:
|
||||
// Таблица - Строка - Имя таблицы - table
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_SQLite, Таблица, , Соединение);
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить структуру фильтра записей
|
||||
// Получает структуру шаблон для фильтрации записей в запросах ORM
|
||||
//
|
||||
|
45
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
45
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
@@ -2242,6 +2242,8 @@
|
||||
SQLite_ОбновитьЗаписи(ПараметрыТеста);
|
||||
SQLite_УдалитьЗаписи(ПараметрыТеста);
|
||||
SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста);
|
||||
SQLite_ОчиститьТаблицу(ПараметрыТеста);
|
||||
SQLite_УдалитьТаблицу(ПараметрыТеста);
|
||||
SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста);
|
||||
|
||||
Попытка
|
||||
@@ -16524,6 +16526,49 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура SQLite_УдалитьТаблицу(ПараметрыФункции)
|
||||
|
||||
База = ПараметрыФункции["SQLite_DB"];
|
||||
Таблица = "test";
|
||||
|
||||
Результат = OPI_SQLite.УдалитьТаблицу(Таблица, База);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТаблицу", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
|
||||
Проверка = OPI_SQLite.ПолучитьИнформациюОТаблице(Таблица, База);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "Проверка", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], 0);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура SQLite_ОчиститьТаблицу(ПараметрыФункции)
|
||||
|
||||
База = ПараметрыФункции["SQLite_DB"];
|
||||
Таблица = "test";
|
||||
|
||||
Результат = OPI_SQLite.ОчиститьТаблицу(Таблица, База);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОчиститьТаблицу", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
|
||||
Проверка = OPI_SQLite.ПолучитьИнформациюОТаблице(Таблица, База);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "Проверка", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], 7);
|
||||
|
||||
Проверка = OPI_SQLite.ПолучитьЗаписи(Таблица, , , , , База);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "Проверка", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], 0);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
271
src/ru/OInt/tools/Modules/OPI_ЗапросыSQL.os
vendored
271
src/ru/OInt/tools/Modules/OPI_ЗапросыSQL.os
vendored
@@ -218,6 +218,32 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УдалитьТаблицу(Знач Модуль, Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
Схема = ПустаяСхемаSQL("DROP");
|
||||
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, , , Соединение);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОчиститьТаблицу(Знач Модуль, Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
Схема = ПустаяСхемаSQL("TRUNCATE");
|
||||
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, , , Соединение);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт
|
||||
|
||||
СтруктураФильтра = Новый Структура;
|
||||
@@ -243,6 +269,49 @@
|
||||
|
||||
#Область Схемы
|
||||
|
||||
Функция ПустаяСхемаSQL(Знач Действие)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Действие);
|
||||
|
||||
Действие = вРег(Действие);
|
||||
|
||||
Если Действие = "SELECT" Тогда
|
||||
|
||||
Схема = ПустаяСхемаSelect();
|
||||
|
||||
ИначеЕсли Действие = "INSERT" Тогда
|
||||
|
||||
Схема = ПустаяСхемаInsert();
|
||||
|
||||
ИначеЕсли Действие = "UPDATE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаUpdate();
|
||||
|
||||
ИначеЕсли Действие = "DELETE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаDelete();
|
||||
|
||||
ИначеЕсли Действие = "CREATE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаCreate();
|
||||
|
||||
ИначеЕсли Действие = "DROP" Тогда
|
||||
|
||||
Схема = ПустаяСхемаDrop();
|
||||
|
||||
ИначеЕсли Действие = "TRUNCATE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаTruncate();
|
||||
Иначе
|
||||
|
||||
Схема = Новый Структура;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПустаяСхемаSelect()
|
||||
|
||||
Схема = Новый Структура("type", "SELECT");
|
||||
@@ -305,10 +374,81 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПустаяСхемаDrop()
|
||||
|
||||
Схема = Новый Структура("type", "DROP");
|
||||
|
||||
Схема.Вставить("table" , "");
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПустаяСхемаTruncate()
|
||||
|
||||
Схема = Новый Структура("type", "TRUNCATE");
|
||||
|
||||
Схема.Вставить("table" , "");
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Процессоры
|
||||
|
||||
Функция СформироватьТекстSQL(Знач Схема)
|
||||
|
||||
ТекстОшибки = "Переданное значение не является валидной схемой SQL запроса";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Схема, ТекстОшибки);
|
||||
|
||||
ТипСхемы = "";
|
||||
|
||||
Если Не OPI_Инструменты.ПолеКоллекцииСуществует(Схема, "type", ТипСхемы) Тогда
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
КонецЕсли;
|
||||
|
||||
ТипСхемы = вРег(ТипСхемы);
|
||||
|
||||
Если ТипСхемы = "SELECT" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстSelect(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "INSERT" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстInsert(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "UPDATE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстUpdate(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "DELETE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстDelete(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "CREATE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстCreate(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "DROP" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстDrop(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "TRUNCATE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстTruncate(Схема);
|
||||
|
||||
Иначе
|
||||
|
||||
ТекстЗапроса = "";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТекстЗапроса;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстSelect(Знач Схема)
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "table,filter,order,limit,set");
|
||||
@@ -424,86 +564,57 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстDrop(Знач Схема)
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "table");
|
||||
|
||||
Таблица = Схема["table"];
|
||||
|
||||
ШаблонSQL = "DROP TABLE %1";
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстTruncate(Знач Схема)
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "table");
|
||||
|
||||
Таблица = Схема["table"];
|
||||
|
||||
ШаблонSQL = "TRUNCATE TABLE %1";
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Вспомогательные
|
||||
|
||||
Функция ПустаяСхемаSQL(Знач Действие)
|
||||
Функция ДобавитьЗапись(Знач Модуль, Знач Таблица, Знач Запись, Знач Соединение)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Действие);
|
||||
МассивПолей = Новый Массив;
|
||||
МассивЗначений = Новый Массив;
|
||||
|
||||
Действие = вРег(Действие);
|
||||
Схема = ПустаяСхемаSQL("INSERT");
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
|
||||
Если Действие = "SELECT" Тогда
|
||||
РазделитьКоллекциюДанных(Запись, МассивПолей, МассивЗначений);
|
||||
|
||||
Схема = ПустаяСхемаSelect();
|
||||
Для Каждого Поле Из МассивПолей Цикл
|
||||
ДобавитьПоле(Схема, Поле);
|
||||
КонецЦикла;
|
||||
|
||||
ИначеЕсли Действие = "INSERT" Тогда
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
|
||||
Схема = ПустаяСхемаInsert();
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, МассивЗначений, , Соединение);
|
||||
|
||||
ИначеЕсли Действие = "UPDATE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаUpdate();
|
||||
|
||||
ИначеЕсли Действие = "DELETE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаDelete();
|
||||
|
||||
ИначеЕсли Действие = "CREATE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаCreate();
|
||||
|
||||
Иначе
|
||||
|
||||
Схема = Новый Структура;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстSQL(Знач Схема)
|
||||
|
||||
ТекстОшибки = "Переданное значение не является валидной схемой SQL запроса";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Схема, ТекстОшибки);
|
||||
|
||||
ТипСхемы = "";
|
||||
|
||||
Если Не OPI_Инструменты.ПолеКоллекцииСуществует(Схема, "type", ТипСхемы) Тогда
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
КонецЕсли;
|
||||
|
||||
ТипСхемы = вРег(ТипСхемы);
|
||||
|
||||
Если ТипСхемы = "SELECT" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстSelect(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "INSERT" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстInsert(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "UPDATE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстUpdate(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "DELETE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстDelete(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "CREATE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстCreate(Схема);
|
||||
|
||||
Иначе
|
||||
|
||||
ТекстЗапроса = "";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТекстЗапроса;
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -598,28 +709,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьЗапись(Знач Модуль, Знач Таблица, Знач Запись, Знач Соединение)
|
||||
|
||||
МассивПолей = Новый Массив;
|
||||
МассивЗначений = Новый Массив;
|
||||
|
||||
Схема = ПустаяСхемаSQL("INSERT");
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
|
||||
РазделитьКоллекциюДанных(Запись, МассивПолей, МассивЗначений);
|
||||
|
||||
Для Каждого Поле Из МассивПолей Цикл
|
||||
ДобавитьПоле(Схема, Поле);
|
||||
КонецЦикла;
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, МассивЗначений, , Соединение);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений)
|
||||
|
||||
ТекстОшибки = "Некорректный набор данных для обновления";
|
||||
|
@@ -2142,9 +2142,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
@@ -280,6 +280,38 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Удалить таблицу
|
||||
// Удаляет таблицу из базы
|
||||
//
|
||||
// Параметры:
|
||||
// Таблица - Строка - Имя таблицы - table
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
Функция УдалитьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьТаблицу(OPI_SQLite, Таблица, Соединение);
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Очистить таблицу
|
||||
// Очищает таблицу базы
|
||||
//
|
||||
// Параметры:
|
||||
// Таблица - Строка - Имя таблицы - table
|
||||
// Соединение - Строка, Произвольный - Существующее соединение или путь к базе - db
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура Из КлючИЗначение, Строка - Результат выполнения запроса
|
||||
Функция ОчиститьТаблицу(Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
Результат = OPI_ЗапросыSQL.УдалитьЗаписи(OPI_SQLite, Таблица, , Соединение);
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Получить структуру фильтра записей
|
||||
// Получает структуру шаблон для фильтрации записей в запросах ORM
|
||||
//
|
||||
|
@@ -218,6 +218,32 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция УдалитьТаблицу(Знач Модуль, Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
Схема = ПустаяСхемаSQL("DROP");
|
||||
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, , , Соединение);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ОчиститьТаблицу(Знач Модуль, Знач Таблица, Знач Соединение = "") Экспорт
|
||||
|
||||
Схема = ПустаяСхемаSQL("TRUNCATE");
|
||||
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, , , Соединение);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьСтруктуруФильтраЗаписей(Знач Пустая = Ложь) Экспорт
|
||||
|
||||
СтруктураФильтра = Новый Структура;
|
||||
@@ -243,6 +269,49 @@
|
||||
|
||||
#Область Схемы
|
||||
|
||||
Функция ПустаяСхемаSQL(Знач Действие)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Действие);
|
||||
|
||||
Действие = вРег(Действие);
|
||||
|
||||
Если Действие = "SELECT" Тогда
|
||||
|
||||
Схема = ПустаяСхемаSelect();
|
||||
|
||||
ИначеЕсли Действие = "INSERT" Тогда
|
||||
|
||||
Схема = ПустаяСхемаInsert();
|
||||
|
||||
ИначеЕсли Действие = "UPDATE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаUpdate();
|
||||
|
||||
ИначеЕсли Действие = "DELETE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаDelete();
|
||||
|
||||
ИначеЕсли Действие = "CREATE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаCreate();
|
||||
|
||||
ИначеЕсли Действие = "DROP" Тогда
|
||||
|
||||
Схема = ПустаяСхемаDrop();
|
||||
|
||||
ИначеЕсли Действие = "TRUNCATE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаTruncate();
|
||||
Иначе
|
||||
|
||||
Схема = Новый Структура;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПустаяСхемаSelect()
|
||||
|
||||
Схема = Новый Структура("type", "SELECT");
|
||||
@@ -305,10 +374,81 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПустаяСхемаDrop()
|
||||
|
||||
Схема = Новый Структура("type", "DROP");
|
||||
|
||||
Схема.Вставить("table" , "");
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ПустаяСхемаTruncate()
|
||||
|
||||
Схема = Новый Структура("type", "TRUNCATE");
|
||||
|
||||
Схема.Вставить("table" , "");
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Процессоры
|
||||
|
||||
Функция СформироватьТекстSQL(Знач Схема)
|
||||
|
||||
ТекстОшибки = "Переданное значение не является валидной схемой SQL запроса";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Схема, ТекстОшибки);
|
||||
|
||||
ТипСхемы = "";
|
||||
|
||||
Если Не OPI_Инструменты.ПолеКоллекцииСуществует(Схема, "type", ТипСхемы) Тогда
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
КонецЕсли;
|
||||
|
||||
ТипСхемы = вРег(ТипСхемы);
|
||||
|
||||
Если ТипСхемы = "SELECT" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстSelect(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "INSERT" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстInsert(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "UPDATE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстUpdate(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "DELETE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстDelete(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "CREATE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстCreate(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "DROP" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстDrop(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "TRUNCATE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстTruncate(Схема);
|
||||
|
||||
Иначе
|
||||
|
||||
ТекстЗапроса = "";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТекстЗапроса;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстSelect(Знач Схема)
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "table,filter,order,limit,set");
|
||||
@@ -424,86 +564,57 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстDrop(Знач Схема)
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "table");
|
||||
|
||||
Таблица = Схема["table"];
|
||||
|
||||
ШаблонSQL = "DROP TABLE %1";
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстTruncate(Знач Схема)
|
||||
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "table");
|
||||
|
||||
Таблица = Схема["table"];
|
||||
|
||||
ШаблонSQL = "TRUNCATE TABLE %1";
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область Вспомогательные
|
||||
|
||||
Функция ПустаяСхемаSQL(Знач Действие)
|
||||
Функция ДобавитьЗапись(Знач Модуль, Знач Таблица, Знач Запись, Знач Соединение)
|
||||
|
||||
OPI_ПреобразованиеТипов.ПолучитьСтроку(Действие);
|
||||
МассивПолей = Новый Массив;
|
||||
МассивЗначений = Новый Массив;
|
||||
|
||||
Действие = вРег(Действие);
|
||||
Схема = ПустаяСхемаSQL("INSERT");
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
|
||||
Если Действие = "SELECT" Тогда
|
||||
РазделитьКоллекциюДанных(Запись, МассивПолей, МассивЗначений);
|
||||
|
||||
Схема = ПустаяСхемаSelect();
|
||||
Для Каждого Поле Из МассивПолей Цикл
|
||||
ДобавитьПоле(Схема, Поле);
|
||||
КонецЦикла;
|
||||
|
||||
ИначеЕсли Действие = "INSERT" Тогда
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
|
||||
Схема = ПустаяСхемаInsert();
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, МассивЗначений, , Соединение);
|
||||
|
||||
ИначеЕсли Действие = "UPDATE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаUpdate();
|
||||
|
||||
ИначеЕсли Действие = "DELETE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаDelete();
|
||||
|
||||
ИначеЕсли Действие = "CREATE" Тогда
|
||||
|
||||
Схема = ПустаяСхемаCreate();
|
||||
|
||||
Иначе
|
||||
|
||||
Схема = Новый Структура;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Схема;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СформироватьТекстSQL(Знач Схема)
|
||||
|
||||
ТекстОшибки = "Переданное значение не является валидной схемой SQL запроса";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Схема, ТекстОшибки);
|
||||
|
||||
ТипСхемы = "";
|
||||
|
||||
Если Не OPI_Инструменты.ПолеКоллекцииСуществует(Схема, "type", ТипСхемы) Тогда
|
||||
ВызватьИсключение ТекстОшибки;
|
||||
КонецЕсли;
|
||||
|
||||
ТипСхемы = вРег(ТипСхемы);
|
||||
|
||||
Если ТипСхемы = "SELECT" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстSelect(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "INSERT" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстInsert(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "UPDATE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстUpdate(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "DELETE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстDelete(Схема);
|
||||
|
||||
ИначеЕсли ТипСхемы = "CREATE" Тогда
|
||||
|
||||
ТекстЗапроса = СформироватьТекстCreate(Схема);
|
||||
|
||||
Иначе
|
||||
|
||||
ТекстЗапроса = "";
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
Возврат ТекстЗапроса;
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
@@ -598,28 +709,6 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция ДобавитьЗапись(Знач Модуль, Знач Таблица, Знач Запись, Знач Соединение)
|
||||
|
||||
МассивПолей = Новый Массив;
|
||||
МассивЗначений = Новый Массив;
|
||||
|
||||
Схема = ПустаяСхемаSQL("INSERT");
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
|
||||
РазделитьКоллекциюДанных(Запись, МассивПолей, МассивЗначений);
|
||||
|
||||
Для Каждого Поле Из МассивПолей Цикл
|
||||
ДобавитьПоле(Схема, Поле);
|
||||
КонецЦикла;
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, МассивЗначений, , Соединение);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений)
|
||||
|
||||
ТекстОшибки = "Некорректный набор данных для обновления";
|
||||
|
@@ -2242,6 +2242,8 @@
|
||||
SQLite_ОбновитьЗаписи(ПараметрыТеста);
|
||||
SQLite_УдалитьЗаписи(ПараметрыТеста);
|
||||
SQLite_ПолучитьИнформациюОТаблице(ПараметрыТеста);
|
||||
SQLite_ОчиститьТаблицу(ПараметрыТеста);
|
||||
SQLite_УдалитьТаблицу(ПараметрыТеста);
|
||||
SQLite_ПолучитьСтруктуруФильтраЗаписей(ПараметрыТеста);
|
||||
|
||||
Попытка
|
||||
@@ -16524,6 +16526,49 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура SQLite_УдалитьТаблицу(ПараметрыФункции)
|
||||
|
||||
База = ПараметрыФункции["SQLite_DB"];
|
||||
Таблица = "test";
|
||||
|
||||
Результат = OPI_SQLite.УдалитьТаблицу(Таблица, База);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "УдалитьТаблицу", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
|
||||
Проверка = OPI_SQLite.ПолучитьИнформациюОТаблице(Таблица, База);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "Проверка", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], 0);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура SQLite_ОчиститьТаблицу(ПараметрыФункции)
|
||||
|
||||
База = ПараметрыФункции["SQLite_DB"];
|
||||
Таблица = "test";
|
||||
|
||||
Результат = OPI_SQLite.ОчиститьТаблицу(Таблица, База);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОчиститьТаблицу", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
|
||||
Проверка = OPI_SQLite.ПолучитьИнформациюОТаблице(Таблица, База);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "Проверка", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], 7);
|
||||
|
||||
Проверка = OPI_SQLite.ПолучитьЗаписи(Таблица, , , , , База);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "Проверка", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_Массив(Проверка["data"], 0);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
Reference in New Issue
Block a user