Skip to content

Commit

Permalink
При обработке парметра "КолонкиСДатой" метода "ВыполнитьЗапрос" добав…
Browse files Browse the repository at this point in the history
…лен триминг пробельных символов, а также возможность указывать номера колонок.
  • Loading branch information
orefkov committed Oct 6, 2022
1 parent 85b754b commit 587f917
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 4 deletions.
7 changes: 4 additions & 3 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -236,9 +236,10 @@
запроса он выполняется с учётом установленных параметров, после все установленные параметры сбрасываются.
- ФорматОтвета - Строка, обязательный. Задаёт, в каком формате будет выдаваться результат выполнения запроса.
Может принимать значения "JSON" или "ТаблицаЗначений" / "ValueTable". Регистронезависимый.
- КолонкиСДатой - Строка, необязательный. Перечисленные через запятую названия колонок, значения в которых
нужно преобразовать в Дату. Чтобы преобразование сработало, реальное значение должно быть строкой длиной
19 символов, т.е. датой в формате "YYYY-MM-DD HH:MM:SS", так, как выдаёт функция sqlite `datetime`.
- КолонкиСДатой - Строка, необязательный. Перечисленные через запятую названия или номера колонок, значения
в которых нужно преобразовать в Дату. Нумерация колонок с нуля. Чтобы преобразование сработало, реальное
значение должно быть строкой длиной 19 символов, т.е. датой в формате "YYYY-MM-DD HH:MM:SS", так, как выдаёт
функция sqlite `datetime`.
Компонента не парсит дату, а просто берёт куски из этой строки и расставляет в нужном 1С формате.

Возвращаемое значение: строка, если выполняется запрос `select`.
Expand Down
Binary file modified src/tests/v8sqlite.epf
Binary file not shown.
8 changes: 7 additions & 1 deletion src/v8sqlite_addin.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,12 @@ struct ToTextReceiver {
void doSetColCount(unsigned cc) {
colCount = cc;
dates.resize(colCount, 0);
for (const auto& [d, __]: datesColumns) {
auto [colIdx, err, _] = d.to_str().toInt<unsigned, true, 10, false>();
if (err == IntConvertResult::Success && colIdx < colCount) {
dates[colIdx] = 1;
}
}
}

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

if (params[2].vt != VTYPE_NULL) {
if (params[2].vt == VTYPE_PWSTR) {
auto vals = varToTextU(params[2]).split<std::vector<ssu>>(u",");
auto vals = varToTextU(params[2]).splitf<std::vector<ssu>>(u",", [](ssu& t) { t = t.trimmed(); });
for (const auto& v : vals) {
dates.emplace(v, 0);
}
Expand Down

0 comments on commit 587f917

Please sign in to comment.