Skip to content

Commit 6e45773

Browse files
committed
- При выгрузке в ТЗ имена колонок задаются как есть, без замены символов.
- Устранены ворнинги в MSVC x64. - Обновлён номер версии. - Актуализированы тесты в 1С.
1 parent c696e02 commit 6e45773

File tree

7 files changed

+21
-27
lines changed

7 files changed

+21
-27
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ if (WIN32)
2222
# Одинаковые флаги для компиляторов MSVC и clang-cl в релизной конфигурации
2323
set (V8SQLITE_CXX_FLAGS_RELEASE "/O2 /GS- /DNDEBUG" CACHE STRING "")
2424
# Одинаковые флаги для компиляторов MSVC и clang-cl в отладочной конфигурации
25-
set (V8SQLITE_CXX_FLAGS_DEBUG "/Zi /Ob0 /Od /RTC1" CACHE STRING "")
25+
set (V8SQLITE_CXX_FLAGS_DEBUG "/Zi /Ob0 /Od /D_DEBUG /RTC1" CACHE STRING "")
2626
# Флаги только для компилятора MSVC в релизной конфигурации
2727
set (V8SQLITE_CXX_MSVC_RELEASE "/GL" CACHE STRING "")
2828
# Флаги только для компилятора MSVC в отладочной конфигурации

readme.md

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,23 +47,23 @@
4747

4848
```
4949
Функция ПодключитьВК()
50-
50+
5151
ПутьКВК = КаталогПрограммы();
5252
5353
СистемнаяИнформация = Новый СистемнаяИнформация;
54-
54+
5555
Если СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86 или СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Windows_x86_64 Тогда
5656
ПутьКВК = ПутьКВК + "v8sqlite.dll";
5757
ИначеЕсли СистемнаяИнформация.ТипПлатформы = ТипПлатформы.Linux_x86_64 Тогда
5858
ПутьКВК = ПутьКВК + "libv8sqlite.so";
5959
КонецЕсли;
60-
60+
6161
Если не ПодключитьВнешнююКомпоненту(ПутьКВК, "v8sqlite", ТипВнешнейКомпоненты.Native) Тогда
6262
Предупреждение("Не удалось подключить внешнюю компоненту " + ПутьКВК);
6363
Возврат Ложь;
6464
КонецЕсли;
6565
Возврат Истина;
66-
66+
6767
КонецФункции // ПодключитьВК()
6868
6969
```
@@ -220,7 +220,7 @@
220220
база.ПодготовитьЗапрос("Запрос1", "
221221
|select * from test where a = @p1
222222
|");
223-
223+
224224
...
225225
226226
база.УстановитьПараметр("Запрос1", "@p1", 1);
@@ -248,8 +248,7 @@
248248

249249
Возвращаемая строка зависит от указанного при вызове метода формате.
250250
Для формата "ТаблицаЗначений" - выдаётся строка, которая методом `ЗначениеИзСтрокиВнутр` преобразуется
251-
в Таблицу значений. Названия колонок запроса становятся идентификатороми и заголовками колонок
252-
таблицы значений. Невалидные для идентификатора символы заменяются на `_`, заголовки остаются как есть.
251+
в Таблицу значений. Названия колонок запроса становятся именем и заголовком колонок таблицы значений.
253252

254253
Для формата "JSON" возвращается строка, которая через XDTO преобразуется в массив.
255254
Элементы массива - тоже массивы, строки результата запроса.

src/sqlite.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ int SqliteBase::exec(stru query) {
2929
SqliteQuery SqliteBase::prepare(stru query) {
3030
sqlite3_stmt* stmt = nullptr;
3131
if (db_) {
32-
sqlite3_prepare16_v3(db_, (void*)query.str, query.len * 2, 0, &stmt, nullptr);
32+
sqlite3_prepare16_v3(db_, (void*)query.str, (int)query.length() * 2, 0, &stmt, nullptr);
3333
}
3434
return SqliteQuery(stmt);
3535
}

src/tests/v8sqlite.epf

24 Bytes
Binary file not shown.

src/v8sqlite_addin.cpp

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -133,9 +133,8 @@ bool V8SqliteAddin::BindParam(tVariant* params, unsigned count) {
133133

134134
SqliteQuery& query = find->second;
135135

136-
int paramNum = params[1].vt == VTYPE_PWSTR ?
137-
sqlite3_bind_parameter_index(query, lstringa<100>{varToTextU(params[1])})
138-
: getInteger(params[1]);
136+
int paramNum =
137+
params[1].vt == VTYPE_PWSTR ? sqlite3_bind_parameter_index(query, lstringa<100>{varToTextU(params[1])}) : getInteger(params[1]);
139138

140139
if (!paramNum || paramNum > sqlite3_bind_parameter_count(query)) {
141140
return error(u"Неверный параметр запроса", u"Bad query param");
@@ -189,16 +188,12 @@ struct ValueTableReceiver : ToTextReceiver {
189188

190189
void addColumnName(ssu name) {
191190
checkColumnForDates(name);
192-
lstringu<200> idName{name};
193-
194-
bool first = true;
195-
for (u16symbol *ptr = idName.str(), *end = ptr + idName.length(); ptr < end; ptr++) {
196-
if (!(iswalpha(*ptr) || (!first && *ptr >= '0' && *ptr <= '9'))) {
197-
*ptr = '_';
198-
}
199-
first = false;
191+
if (name.find('\"') != str_pos::badIdx) {
192+
lstringu<200> idName{e_repl<u16symbol>(name, u"\"", u"\"\"")};
193+
vtText << (eeu & u"{" & currentCol & u",\"" & idName & u"\",{\"Pattern\"},\"" & idName & u"\",0},");
194+
} else {
195+
vtText << (eeu & u"{" & currentCol & u",\"" & name & u"\",{\"Pattern\"},\"" & name & u"\",0},");
200196
}
201-
vtText << (eeu & u"{" & currentCol & u",\"" & idName & u"\",{\"Pattern\"},\"" & e_repl<u16symbol>(name, u"\"", u"\"\"") & u"\",0},");
202197
currentCol++;
203198
}
204199
void addRow() {
@@ -332,8 +327,8 @@ static bool execQuery(SqliteQuery& query, tVariant& retVal, hashStrMapUIU<int>&
332327
return false;
333328
}
334329
if (receiver.colCount) {
335-
retVal.vt = VTYPE_PWSTR;
336-
retVal.wstrLen = (int)text.length();
330+
retVal.vt = VTYPE_PWSTR;
331+
retVal.wstrLen = (int)text.length();
337332
mm->AllocMemory((void**)&retVal.pwstrVal, (int)(text.length() + 1) * 2);
338333

339334
*text.place(retVal.pwstrVal) = 0;
@@ -361,7 +356,7 @@ bool V8SqliteAddin::ExecQuery(tVariant& retVal, tVariant* params, unsigned count
361356
if (params[2].vt != VTYPE_NULL) {
362357
if (params[2].vt == VTYPE_PWSTR) {
363358
auto vals = varToTextU(params[2]).splitf<std::vector<ssu>>(u",", [](ssu& t) { t = t.trimmed(); });
364-
for (const auto& v : vals) {
359+
for (const auto& v: vals) {
365360
dates.emplace(v, 0);
366361
}
367362
} else {

src/v8sqlite_addin.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class V8SqliteAddin : public V8Addin<V8SqliteAddin> {
2222
lstringu<40> v{ssa{P_VERSION}};
2323
value.vt = VTYPE_PWSTR;
2424
value.pwstrVal = copyText(v);
25-
value.wstrLen = v.length();
25+
value.wstrLen = (int)v.length();
2626
return true;
2727
}
2828

src/version.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
1-
#define F_VERSION 1,0,0,3
2-
#define P_VERSION "1.0.0.3"
1+
#define F_VERSION 1,0,0,4
2+
#define P_VERSION "1.0.0.4"
33

0 commit comments

Comments
 (0)