Skip to content

Commit 587f917

Browse files
committed
При обработке парметра "КолонкиСДатой" метода "ВыполнитьЗапрос" добавлен триминг пробельных символов, а также возможность указывать номера колонок.
1 parent 85b754b commit 587f917

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

readme.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,10 @@
236236
запроса он выполняется с учётом установленных параметров, после все установленные параметры сбрасываются.
237237
- ФорматОтвета - Строка, обязательный. Задаёт, в каком формате будет выдаваться результат выполнения запроса.
238238
Может принимать значения "JSON" или "ТаблицаЗначений" / "ValueTable". Регистронезависимый.
239-
- КолонкиСДатой - Строка, необязательный. Перечисленные через запятую названия колонок, значения в которых
240-
нужно преобразовать в Дату. Чтобы преобразование сработало, реальное значение должно быть строкой длиной
241-
19 символов, т.е. датой в формате "YYYY-MM-DD HH:MM:SS", так, как выдаёт функция sqlite `datetime`.
239+
- КолонкиСДатой - Строка, необязательный. Перечисленные через запятую названия или номера колонок, значения
240+
в которых нужно преобразовать в Дату. Нумерация колонок с нуля. Чтобы преобразование сработало, реальное
241+
значение должно быть строкой длиной 19 символов, т.е. датой в формате "YYYY-MM-DD HH:MM:SS", так, как выдаёт
242+
функция sqlite `datetime`.
242243
Компонента не парсит дату, а просто берёт куски из этой строки и расставляет в нужном 1С формате.
243244

244245
Возвращаемое значение: строка, если выполняется запрос `select`.

src/tests/v8sqlite.epf

2 Bytes
Binary file not shown.

src/v8sqlite_addin.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,12 @@ struct ToTextReceiver {
159159
void doSetColCount(unsigned cc) {
160160
colCount = cc;
161161
dates.resize(colCount, 0);
162+
for (const auto& [d, __]: datesColumns) {
163+
auto [colIdx, err, _] = d.to_str().toInt<unsigned, true, 10, false>();
164+
if (err == IntConvertResult::Success && colIdx < colCount) {
165+
dates[colIdx] = 1;
166+
}
167+
}
162168
}
163169

164170
void checkColumnForDates(ssu colName) {
@@ -354,7 +360,7 @@ bool V8SqliteAddin::ExecQuery(tVariant& retVal, tVariant* params, unsigned count
354360

355361
if (params[2].vt != VTYPE_NULL) {
356362
if (params[2].vt == VTYPE_PWSTR) {
357-
auto vals = varToTextU(params[2]).split<std::vector<ssu>>(u",");
363+
auto vals = varToTextU(params[2]).splitf<std::vector<ssu>>(u",", [](ssu& t) { t = t.trimmed(); });
358364
for (const auto& v : vals) {
359365
dates.emplace(v, 0);
360366
}

0 commit comments

Comments
 (0)