Перейти к содержанию

1С не подключается к 1Ф / ошибка аутентификации

Руководство по разбору инцидентов обмена 1С и 1Формы: признаки сбоя, архитектура двунаправленного обмена, чек-лист диагностики, таблица «симптом → причина», SQL-снимки и список артефактов для обращения в поддержку. Охватывает направления 1С→1Ф и 1Ф→1С, очередь повторов и сопоставление пользователей.

1. Когда использовать и таблица симптомов

Признаки инцидента:

  1. В админке не проходит Проверить соединение для конфигурации 1С.
  2. При обмене появляются ошибки авторизации/доступа к веб-сервису 1С.
  3. События из 1С не доходят до 1Ф или «застревают» в очереди.
  4. После обновления 1С обмен перестал работать.
Симптом Вероятная причина Что проверить первым
config/test-connection падает сразу неверный OneCAddress/тип учётных данных XML в SyncSettings1C, доступность адреса
Ошибка авторизации к 1С неверные OneCUserName/пароль/режим авторизации настройки конфига + права пользователя сервиса 1С
send-1c-event даёт ошибку NoSuchSettings/currRecord is null неверное ConfigurationName или OneCDocumentType имя конфига и наличие record в XML
События копятся и не обрабатываются проблема потока очереди/повторов Sync1CEventQueues, RetryCount, Sync1CQueueMaxRetryCount
В логах есть входящие события, но данные не применяются проблема сопоставления/прав/валидации реквизитов Sync1CUsersMap, текст ошибок в Sync1CLog

2. Как это работает

Обмен 1С и 1Формы реализован в двух направлениях и через отдельные механизмы проверки, обработки событий и повторов.

2.1 Два разных направления обмена

  1. 1С → 1Ф:
  2. 1С вызывает маршрут в 1Ф (/TC1CService.asmx и/или api/sync1c/send-1c-event),
  3. событие обрабатывается на стороне 1Ф.
  4. 1Ф → 1С:
  5. 1Ф создаёт SOAP-клиент к адресу OneCAddress,
  6. операции: тест подключения, отправка настроек, первичная загрузка и прочие вызовы.

2.2 Проверка подключения в админке

POST /api/admin/sync1c/config/test-connection?name=...:

  1. Берёт настройки из SyncSettings1C.
  2. Создаёт SOAP client с учётом:
  3. OneCAddress,
  4. OneCUserName/OneCPassword,
  5. OneCCredentialType,
  6. режима безопасности (http/https binding).
  7. Выполняет тест подключения.
  8. Ошибки фиксируются в Sync1CLog.

2.3 Обработка входящего события из 1С

Обработка идёт по шагам:

  1. Ищет конфиг и Record по ConfigurationName + OneCDocumentType.
  2. Если задан поток очереди (InboxQueueFlowId), событие ставится в очередь.
  3. Иначе выполняется синхронно.
  4. Логирование идёт в Sync1CLog.

2.4 Отдельная очередь повторов по 1С-событиям

Для части сценариев используется Sync1CEventQueues:

  1. Лимит повторов задаётся Sync1CQueueMaxRetryCount (0 = без лимита).
  2. Обработка: api/admin/sync1c/queue/process* и фоновая задача EventQueue1CJob.
  3. Очистка проблемных записей: clear-by-retry-count.

3. Что смотреть при разборе (чек-лист)

При разборе инцидента пройдите по шагам:

  1. Уточнить направление проблемы:
  2. 1С не может достучаться до 1Ф,
  3. или 1Ф не может авторизоваться в 1С.
  4. Если это 1Ф → 1С:
  5. вызвать config/test-connection,
  6. проверить OneCAddress, тип учётных данных и логин.
  7. Если это 1С → 1Ф:
  8. проверить доступность /TC1CService.asmx?WSDL и api/sync1c/test-connection,
  9. проверить, что событие реально приходит в Sync1CLog.
  10. Проверить актуальный XML-конфиг в SyncSettings1C (имя, адреса, тип учётных данных, поток очереди).
  11. Проверить сопоставление пользователя 1С (Sync1CUsersMap) — при отсутствии сопоставления используется системный пользователь.
  12. Проверить очередь/повторы:
  13. рост RetryCount,
  14. записи с одинаковым объектом и повторными ошибками.
  15. При недавнем обновлении 1С отдельно проверить перепубликацию веб-сервиса и актуальность URL/WSDL.

4. SQL для быстрой диагностики и артефакты для поддержки

Запросы для быстрой проверки состояния обмена с 1С:

declare @config_name varchar(100) = '';
declare @user_1c_login varchar(256) = '';

-- Конфиги синхронизации
select
        s.Id,
        s.Name,
        len(s.XmlContent) as XmlSize
from dbo.SyncSettings1C s
where @config_name = '' or
      s.Name = @config_name
order by
        s.Name;

-- Последние логи синхронизации
select top (200)
        l.Id,
        l.[Date],
        l.SettingsName,
        l.Origin,
        l.[Message],
        l.TechData,
        l.Server1F,
        l.Server1C,
        l.Duration
from dbo.Sync1CLog l
where @config_name = '' or
      l.SettingsName = @config_name
order by
        l.[Date] desc;

-- Очередь событий 1С + ретраи
select top (200)
        q.Id,
        q.SettingsName,
        q.EventType,
        q.DateAdded,
        q.DateOfLastTry,
        q.RetryCount,
        q.TaskID,
        q.SubcatID,
        q.AdditionalID,
        q.ExtParamID,
        q.UserID
from dbo.Sync1CEventQueues q
where @config_name = '' or
      q.SettingsName = @config_name
order by
        q.DateAdded desc;

-- Mapping логинов 1С -> user 1Ф
select
        m.User1CLogin,
        m.UserID
from dbo.Sync1CUsersMap m
where @user_1c_login = '' or
      lower(m.User1CLogin) = lower(@user_1c_login)
order by
        m.User1CLogin;

Что приложить при обращении в поддержку 1Ф:

  1. Направление сбоя: 1С → 1Ф или 1Ф → 1С.
  2. Имя конфига (ConfigurationName) и точный текст ошибки.
  3. Результат config/test-connection (если запускали).
  4. SQL-снимок по SyncSettings1C, Sync1CLog, Sync1CEventQueues, Sync1CUsersMap.
  5. Было ли недавнее обновление/перепубликация 1С веб-сервиса.

Связанные документы: