You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-11-27 22:18:36 +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
|
// Получает структуру шаблон для фильтрации записей в запросах 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_ПолучитьИнформациюОТаблице(ПараметрыТеста);
|
||||||
|
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()
|
Функция ПустаяСхемаSelect()
|
||||||
|
|
||||||
Схема = Новый Структура("type", "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(Знач Схема)
|
Функция СформироватьТекстSelect(Знач Схема)
|
||||||
|
|
||||||
ПроверитьОбязательныеПоляСхемы(Схема, "table,filter,order,limit,set");
|
ПроверитьОбязательныеПоляСхемы(Схема, "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
|
// Получает структуру шаблон для фильтрации записей в запросах 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()
|
Функция ПустаяСхемаSelect()
|
||||||
|
|
||||||
Схема = Новый Структура("type", "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(Знач Схема)
|
Функция СформироватьТекстSelect(Знач Схема)
|
||||||
|
|
||||||
ПроверитьОбязательныеПоляСхемы(Схема, "table,filter,order,limit,set");
|
ПроверитьОбязательныеПоляСхемы(Схема, "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_ПолучитьИнформациюОТаблице(ПараметрыТеста);
|
||||||
|
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