You've already forked OpenIntegrations
mirror of
https://github.com/Bayselonarrend/OpenIntegrations.git
synced 2025-08-10 22:41:43 +02:00
SQLite: Обновление записей
This commit is contained in:
12219
service/dictionaries/en.json
vendored
12219
service/dictionaries/en.json
vendored
File diff suppressed because it is too large
Load Diff
42
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
42
src/ru/OInt/tests/Modules/internal/OPI_Тесты.os
vendored
@@ -2238,6 +2238,7 @@
|
||||
SQLite_СоздатьТаблицу(ПараметрыТеста);
|
||||
SQLite_ДобавитьЗаписи(ПараметрыТеста);
|
||||
SQLite_ПолучитьЗаписи(ПараметрыТеста);
|
||||
SQLite_ОбновитьЗаписи(ПараметрыТеста);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(База);
|
||||
@@ -16402,6 +16403,47 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура SQLite_ОбновитьЗаписи(ПараметрыФункции)
|
||||
|
||||
База = ПараметрыФункции["SQLite_DB"];
|
||||
Таблица = "test";
|
||||
|
||||
СтруктураПолей = Новый Структура;
|
||||
СтруктураПолей.Вставить("name" , "Vitaly A.");
|
||||
СтруктураПолей.Вставить("salary", "999999");
|
||||
|
||||
Фильтры = Новый Массив;
|
||||
|
||||
СтруктураФильтра = Новый Структура;
|
||||
|
||||
СтруктураФильтра.Вставить("field", "name");
|
||||
СтруктураФильтра.Вставить("type" , "=");
|
||||
СтруктураФильтра.Вставить("value", "Vitaly");
|
||||
СтруктураФильтра.Вставить("union", "AND");
|
||||
СтруктураФильтра.Вставить("raw" , Ложь);
|
||||
|
||||
Фильтры.Добавить(СтруктураФильтра);
|
||||
|
||||
Результат = OPI_SQLite.ОбновитьЗаписи(Таблица, СтруктураПолей, СтруктураФильтра, База);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОбновитьЗаписи", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
|
||||
СтруктураФильтра.Вставить("value", "Vitaly A.");
|
||||
|
||||
Фильтры = Новый Массив;
|
||||
Фильтры.Добавить(СтруктураФильтра);
|
||||
|
||||
Проверка = OPI_SQLite.ПолучитьЗаписи(Таблица, "['name','salary']", Фильтры, , , База);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "Проверка", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Проверка);
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteЗначенияПолей(Проверка["data"][0], СтруктураПолей);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@@ -2083,6 +2083,14 @@
|
||||
ОжидаетЧто(Результат["rows"]).Равно(Количество);
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_SQLiteЗначенияПолей(Знач Результат, Знач СтруктураЗначений) Экспорт
|
||||
|
||||
Для Каждого Значение Из СтруктураЗначений Цикл
|
||||
Результат[Значение.Ключ] = Значение.Значение;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
@@ -2119,9 +2127,9 @@
|
||||
КонецФункции
|
||||
|
||||
Функция ПолучитьОбщийМодуль(Знач Имя)
|
||||
|
||||
|
||||
Модуль = Вычислить(Имя);
|
||||
|
||||
|
||||
Возврат Модуль;
|
||||
КонецФункции
|
||||
|
||||
|
53
src/ru/OInt/tools/Modules/os
vendored
53
src/ru/OInt/tools/Modules/os
vendored
@@ -160,7 +160,11 @@
|
||||
Схема = ПустаяСхемаSQL("SELECT");
|
||||
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
УстановитьНастройкиSelect(Схема, Поля, Фильтры, Сортировка, Количество);
|
||||
УстановитьЛимит(Схема, Количество);
|
||||
|
||||
ЗаполнитьПоля(Схема, Поля);
|
||||
ЗаполнитьФильтры(Схема, Фильтры);
|
||||
ЗаполнитьСортировку(Схема, Сортировка);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
|
||||
@@ -172,13 +176,25 @@
|
||||
|
||||
Функция ОбновитьЗаписи(Знач Модуль
|
||||
, Знач Таблица
|
||||
, Знач МассивЗначений
|
||||
, Знач СтруктураЗначений
|
||||
, Знач Фильтры = ""
|
||||
, Знач Соединение = "") Экспорт
|
||||
|
||||
Схема = ПустаяСхемаSQL("UPDATE");
|
||||
|
||||
МассивПолей = Новый Массив;
|
||||
МассивЗначений = Новый Массив;
|
||||
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
РазделитьКоллекциюДанных(СтруктураЗначений, МассивПолей, МассивЗначений);
|
||||
|
||||
Схема["values"] = МассивЗначений;
|
||||
|
||||
Для Каждого Поле Из МассивПолей Цикл
|
||||
ДобавитьПоле(Схема, Поле);
|
||||
КонецЦикла;
|
||||
|
||||
ЗаполнитьФильтры(Схема, Фильтры);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, Схема["values"], , Соединение);
|
||||
@@ -324,7 +340,23 @@
|
||||
|
||||
Функция СформироватьТекстUpdate(Знач Схема)
|
||||
|
||||
ТекстSQL = "";
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "table,set,values");
|
||||
|
||||
Таблица = Схема["table"];
|
||||
Поля = Схема["set"];
|
||||
Фильтры = Схема["filter"];
|
||||
|
||||
ШаблонSQL = "UPDATE %1 SET %2 %3";
|
||||
|
||||
ТекстФильтра = СформироватьТекстФильтра(Фильтры);
|
||||
|
||||
Для Н = 0 По Поля.ВГраница() Цикл
|
||||
|
||||
Поля[Н] = Поля[Н] + " = ?" + OPI_Инструменты.ЧислоВСтроку(Н + 1);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, СтрСоединить(Поля, "," + Символы.ПС), ТекстФильтра);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
@@ -565,6 +597,9 @@
|
||||
|
||||
Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений)
|
||||
|
||||
ТекстОшибки = "Некорректный набор данных для обновления";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ТекстОшибки);
|
||||
|
||||
Для Каждого Элемент Из Запись Цикл
|
||||
|
||||
МассивПолей.Добавить(Элемент.Ключ);
|
||||
@@ -715,16 +750,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьНастройкиSelect(Схема, Знач Поля, Знач Фильтры, Знач Сортировка, Знач Количество)
|
||||
|
||||
УстановитьЛимит(Схема, Количество);
|
||||
|
||||
ЗаполнитьПоля(Схема, Поля);
|
||||
ЗаполнитьФильтры(Схема, Фильтры);
|
||||
ЗаполнитьСортировку(Схема, Сортировка);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@@ -3,7 +3,7 @@
|
||||
<name>OPI_TCP</name>
|
||||
<synonym>
|
||||
<key>ru</key>
|
||||
<value>TCP</value>
|
||||
<value>TCP (ОПИ)</value>
|
||||
</synonym>
|
||||
<server>true</server>
|
||||
<externalConnection>true</externalConnection>
|
||||
|
@@ -160,7 +160,11 @@
|
||||
Схема = ПустаяСхемаSQL("SELECT");
|
||||
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
УстановитьНастройкиSelect(Схема, Поля, Фильтры, Сортировка, Количество);
|
||||
УстановитьЛимит(Схема, Количество);
|
||||
|
||||
ЗаполнитьПоля(Схема, Поля);
|
||||
ЗаполнитьФильтры(Схема, Фильтры);
|
||||
ЗаполнитьСортировку(Схема, Сортировка);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
|
||||
@@ -172,13 +176,25 @@
|
||||
|
||||
Функция ОбновитьЗаписи(Знач Модуль
|
||||
, Знач Таблица
|
||||
, Знач МассивЗначений
|
||||
, Знач СтруктураЗначений
|
||||
, Знач Фильтры = ""
|
||||
, Знач Соединение = "") Экспорт
|
||||
|
||||
Схема = ПустаяСхемаSQL("UPDATE");
|
||||
|
||||
МассивПолей = Новый Массив;
|
||||
МассивЗначений = Новый Массив;
|
||||
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
УстановитьИмяТаблицы(Схема, Таблица);
|
||||
РазделитьКоллекциюДанных(СтруктураЗначений, МассивПолей, МассивЗначений);
|
||||
|
||||
Схема["values"] = МассивЗначений;
|
||||
|
||||
Для Каждого Поле Из МассивПолей Цикл
|
||||
ДобавитьПоле(Схема, Поле);
|
||||
КонецЦикла;
|
||||
|
||||
ЗаполнитьФильтры(Схема, Фильтры);
|
||||
|
||||
Запрос = СформироватьТекстSQL(Схема);
|
||||
Результат = Модуль.ВыполнитьЗапросSQL(Запрос, Схема["values"], , Соединение);
|
||||
@@ -324,7 +340,23 @@
|
||||
|
||||
Функция СформироватьТекстUpdate(Знач Схема)
|
||||
|
||||
ТекстSQL = "";
|
||||
ПроверитьОбязательныеПоляСхемы(Схема, "table,set,values");
|
||||
|
||||
Таблица = Схема["table"];
|
||||
Поля = Схема["set"];
|
||||
Фильтры = Схема["filter"];
|
||||
|
||||
ШаблонSQL = "UPDATE %1 SET %2 %3";
|
||||
|
||||
ТекстФильтра = СформироватьТекстФильтра(Фильтры);
|
||||
|
||||
Для Н = 0 По Поля.ВГраница() Цикл
|
||||
|
||||
Поля[Н] = Поля[Н] + " = ?" + OPI_Инструменты.ЧислоВСтроку(Н + 1);
|
||||
|
||||
КонецЦикла;
|
||||
|
||||
ТекстSQL = СтрШаблон(ШаблонSQL, Таблица, СтрСоединить(Поля, "," + Символы.ПС), ТекстФильтра);
|
||||
|
||||
Возврат ТекстSQL;
|
||||
|
||||
@@ -565,6 +597,9 @@
|
||||
|
||||
Процедура РазделитьКоллекциюДанных(Знач Запись, МассивПолей, МассивЗначений)
|
||||
|
||||
ТекстОшибки = "Некорректный набор данных для обновления";
|
||||
OPI_ПреобразованиеТипов.ПолучитьКоллекциюКлючИЗначение(Запись, ТекстОшибки);
|
||||
|
||||
Для Каждого Элемент Из Запись Цикл
|
||||
|
||||
МассивПолей.Добавить(Элемент.Ключ);
|
||||
@@ -715,16 +750,6 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура УстановитьНастройкиSelect(Схема, Знач Поля, Знач Фильтры, Знач Сортировка, Знач Количество)
|
||||
|
||||
УстановитьЛимит(Схема, Количество);
|
||||
|
||||
ЗаполнитьПоля(Схема, Поля);
|
||||
ЗаполнитьФильтры(Схема, Фильтры);
|
||||
ЗаполнитьСортировку(Схема, Сортировка);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@@ -2083,6 +2083,14 @@
|
||||
ОжидаетЧто(Результат["rows"]).Равно(Количество);
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура Проверка_SQLiteЗначенияПолей(Знач Результат, Знач СтруктураЗначений) Экспорт
|
||||
|
||||
Для Каждого Значение Из СтруктураЗначений Цикл
|
||||
Результат[Значение.Ключ] = Значение.Значение;
|
||||
КонецЦикла;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
@@ -1,4 +1,4 @@
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
// OneScript: ./OInt/tests/Modules/internal/OPI_Тесты.os
|
||||
|
||||
// MIT License
|
||||
|
||||
@@ -2238,6 +2238,7 @@
|
||||
SQLite_СоздатьТаблицу(ПараметрыТеста);
|
||||
SQLite_ДобавитьЗаписи(ПараметрыТеста);
|
||||
SQLite_ПолучитьЗаписи(ПараметрыТеста);
|
||||
SQLite_ОбновитьЗаписи(ПараметрыТеста);
|
||||
|
||||
Попытка
|
||||
УдалитьФайлы(База);
|
||||
@@ -16402,6 +16403,47 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
Процедура SQLite_ОбновитьЗаписи(ПараметрыФункции)
|
||||
|
||||
База = ПараметрыФункции["SQLite_DB"];
|
||||
Таблица = "test";
|
||||
|
||||
СтруктураПолей = Новый Структура;
|
||||
СтруктураПолей.Вставить("name" , "Vitaly A.");
|
||||
СтруктураПолей.Вставить("salary", "999999");
|
||||
|
||||
Фильтры = Новый Массив;
|
||||
|
||||
СтруктураФильтра = Новый Структура;
|
||||
|
||||
СтруктураФильтра.Вставить("field", "name");
|
||||
СтруктураФильтра.Вставить("type" , "=");
|
||||
СтруктураФильтра.Вставить("value", "Vitaly");
|
||||
СтруктураФильтра.Вставить("union", "AND");
|
||||
СтруктураФильтра.Вставить("raw" , Ложь);
|
||||
|
||||
Фильтры.Добавить(СтруктураФильтра);
|
||||
|
||||
Результат = OPI_SQLite.ОбновитьЗаписи(Таблица, СтруктураПолей, СтруктураФильтра, База);
|
||||
|
||||
// END
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Результат, "ОбновитьЗаписи", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Результат);
|
||||
|
||||
СтруктураФильтра.Вставить("value", "Vitaly A.");
|
||||
|
||||
Фильтры = Новый Массив;
|
||||
Фильтры.Добавить(СтруктураФильтра);
|
||||
|
||||
Проверка = OPI_SQLite.ПолучитьЗаписи(Таблица, "['name','salary']", Фильтры, , , База);
|
||||
|
||||
OPI_ПолучениеДанныхТестов.ЗаписатьЛог(Проверка, "Проверка", "SQLite");
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteУспех(Проверка);
|
||||
OPI_ПолучениеДанныхТестов.Проверка_SQLiteЗначенияПолей(Проверка["data"][0], СтруктураПолей);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
Reference in New Issue
Block a user