ЛК на Fancy с Firebird: все запросы к DEPO, курсы, база SPECTRE
ЛК (bj-lk берёт данные у bj-server) сам работает с той СУБД, что выбрана для DEPO. - Перевод на Firebird: YEAR/MONTH/DAY(x) — EXTRACT, AS float — AS DOUBLE PRECISION (float T-SQL — 8 байт, FLOAT Firebird — 4: точность сумм и цен в ЛК); шаблоны со сложением строк (история операций Hist02, поиск клиента Man01) — Firebird-тексты до подстановки (depoSQL); UPPER по кириллице — в WIN1251 (база NONE). - Курсы валют (Fx01): на Firebird запрос от всех курсов шёл больше 200 с (лимит 15 с — курсов нет) — для Firebird от 20 валют, 0,2 с. - База SPECTRE (архив портфеля и операций ЛК): поле в «Трансферные таблицы DEPO»; у Firebird — путь или строка подключения Fancy (может быть на другом компьютере); не задана — ЛК пишет, где указать. На данных SPECTRE не проверено: базы нет. - Тест FBLiveLK: функции ЛК, ручного ввода, сверки переводов и QUIK на копии базы по договору К1 Бубликова — все работают, 0,07–0,26 с каждая; FBLivePrepare — 101 из 101 запроса. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Q7eREaYwUt1i4fNLZcGnjn
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
||||
"go/token"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"regexp"
|
||||
"sort"
|
||||
"strconv"
|
||||
"strings"
|
||||
@@ -25,8 +26,10 @@ import (
|
||||
|
||||
func readRepoFile(p string) ([]byte, error) { return os.ReadFile(filepath.Join("..", "..", p)) }
|
||||
|
||||
// fbLiveTodo — личный кабинет и ручной ввод: на Firebird — следующий этап (YEAR(), %, сложение строк).
|
||||
var fbLiveTodo = map[string]bool{"Arch02": true, "Arch03": true, "Arch07": true, "Arch08": true, "Arch10": true, "Hist02": true, "Man01": true}
|
||||
// fbLiveTodo — запросы, которые на Firebird пока не готовятся (пусто — все).
|
||||
var fbLiveTodo = map[string]bool{}
|
||||
|
||||
var fbLiveFmtRe = regexp.MustCompile(`%(\[\d\])?s`)
|
||||
|
||||
// fbLiveSkip — не к DEPO (PostgreSQL bj и экспорт QUIK, база МНП QUIK, SPECTRE) или куски составных запросов.
|
||||
var fbLiveSkip = map[string]bool{
|
||||
@@ -66,9 +69,12 @@ func fbLiveQueries(t *testing.T) map[string]string {
|
||||
if err != nil {
|
||||
continue
|
||||
}
|
||||
if t, ok := fsql.FB[q]; ok { // шаблон: Firebird-вариант выбирается до подстановки (depoSQL)
|
||||
q = t
|
||||
}
|
||||
q = strings.ReplaceAll(q, "{ACC}", "ВТНКЦ")
|
||||
q = strings.ReplaceAll(q, "%d", "10")
|
||||
q = strings.ReplaceAll(q, "%s", "1")
|
||||
q = fbLiveFmtRe.ReplaceAllString(q, "1")
|
||||
out[n.Name] = q
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user