Канал ИШ: необязательные параметры — NULL (иначе ИШ молча выкидывал канал); мастер: шаг «Учётные записи», HTTPS сразу, DEPO без процедур — не блокирует
- bj-igate-admin: пустые строки в числовых/интервальных параметрах канала ИШ разбирал с ошибкой и не загружал канал («There are no active channels», API 500 «more than one Channel…»); теперь NULL, как пишет интерфейс ИШ; старые каналы чинятся при «Создать канал»; папка архивов 1042S — по имени - проверка «Шлюз НРД»: канал контура действительно загружен и включён (api/admin/channels/wsl) - «Учёт DEPO»: нет процедур bj2depo — жёлтое «не забудьте доустановить», не блокирует - HTTPS: перенаправление с http:// включено по умолчанию, только когда HTTPS реально слушает порт - мастер: шаг «Учётные записи» (роли, создание, «Придумать пароль») перед проверкой; письма с проверки убраны; форма «создать» не меняет существующую запись с тем же логином Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014FsEKyJrYF69Cj9ZXzFLRi
This commit is contained in:
@@ -1439,28 +1439,51 @@ var (
|
||||
)
|
||||
|
||||
func depoObjectsMissing(ctx context.Context, db *sql.DB, f FancyMSSQLSettings) string {
|
||||
if msg := depoTablesMissing(ctx, db, f); msg != "" {
|
||||
return msg
|
||||
}
|
||||
return depoProcsMissing(ctx, db, f)
|
||||
}
|
||||
|
||||
// depoMissing — какие объекты из списка (тип U — таблица, P — процедура) отсутствуют в базе DEPO.
|
||||
func depoMissing(ctx context.Context, db *sql.DB, names []string, typ string) []string {
|
||||
var out []string
|
||||
for _, n := range names {
|
||||
var ok int
|
||||
if err := db.QueryRowContext(ctx, "SELECT CASE WHEN OBJECT_ID(@n, @t) IS NULL THEN 0 ELSE 1 END", sql.Named("n", "dbo."+n), sql.Named("t", typ)).Scan(&ok); err == nil && ok == 0 {
|
||||
out = append(out, n)
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
// depoTablesMissing — нет таблиц Fancy DEPO с поддержкой M2M: без них обмен невозможен.
|
||||
func depoTablesMissing(ctx context.Context, db *sql.DB, f FancyMSSQLSettings) string {
|
||||
if f.IsPostgres() {
|
||||
return ""
|
||||
}
|
||||
missing := func(names []string, typ string) []string {
|
||||
var out []string
|
||||
for _, n := range names {
|
||||
var ok int
|
||||
if err := db.QueryRowContext(ctx, "SELECT CASE WHEN OBJECT_ID(@n, @t) IS NULL THEN 0 ELSE 1 END", sql.Named("n", "dbo."+n), sql.Named("t", typ)).Scan(&ok); err == nil && ok == 0 {
|
||||
out = append(out, n)
|
||||
}
|
||||
}
|
||||
return out
|
||||
}
|
||||
if m := missing(depoFancyM2MTables, "U"); len(m) > 0 {
|
||||
if m := depoMissing(ctx, db, depoFancyM2MTables, "U"); len(m) > 0 {
|
||||
return "в базе " + f.DepoDB() + " нет таблиц Fancy DEPO с поддержкой M2M (" + strings.Join(m, ", ") + "): нужна версия Fancy DEPO с M2M — обратитесь к разработчику Fancy"
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
// depoProcsMissingText — начало сообщения «нет процедур bj2depo» (по нему отличается от других отказов обработки).
|
||||
const depoProcsMissingText = "нет процедур обработки bj2depo"
|
||||
|
||||
// depoProcsMissing — нет процедур обработки bj2depo. С 06.10.2026 это не блокирует запуск: формат обмена с учётной
|
||||
// системой ещё готовится, процедуры могут поставляться отдельно (в том числе сообщениями в саму учётную систему) —
|
||||
// проверка готовности напоминает «не забудьте доустановить».
|
||||
func depoProcsMissing(ctx context.Context, db *sql.DB, f FancyMSSQLSettings) string {
|
||||
if f.IsPostgres() {
|
||||
return ""
|
||||
}
|
||||
procs := depoBj2depoProcs
|
||||
if p := strings.TrimSpace(f.DepoJobProc); p != "" && !strings.EqualFold(strings.TrimPrefix(p, "dbo."), "FTV_M2M_JOB") {
|
||||
procs = []string{strings.TrimPrefix(p, "dbo.")} // своя процедура обработки — проверяем только её
|
||||
}
|
||||
if m := missing(procs, "P"); len(m) > 0 {
|
||||
return "в базе " + f.DepoDB() + " нет процедур обработки bj2depo: " + strings.Join(m, ", ") + ". Их нужно установить в базу DEPO (порядок: WIRING → OPERATION → EVENTS → CREATE → JOB), затем — «Перепроверить всё»"
|
||||
if m := depoMissing(ctx, db, procs, "P"); len(m) > 0 {
|
||||
return "в базе " + f.DepoDB() + " " + depoProcsMissingText + ": " + strings.Join(m, ", ") + ". Их нужно установить в базу DEPO (порядок: WIRING → OPERATION → EVENTS → CREATE → JOB), затем — «Перепроверить всё»"
|
||||
}
|
||||
return ""
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user