Runbook: 1С не подключается к 1Ф / ошибка аутентификации¶
1. Когда использовать¶
Признаки инцидента:
- В админке не проходит
Проверить соединениедля конфигурации 1С. - При обмене появляются ошибки авторизации/доступа к веб-сервису 1С.
- События из 1С не доходят до 1Ф или «застревают» в очереди.
- После обновления 1С обмен перестал работать.
2. Как это работает (по коду)¶
2.1 Два разных направления обмена¶
- 1С -> 1Ф:
- 1С вызывает endpoint в 1Ф (
/TC1CService.asmxи/илиapi/sync1c/send-1c-event), - событие обрабатывает
TC1CServiceCore.Send1CEvent. - 1Ф -> 1С:
- 1Ф создаёт SOAP-клиент к адресу
OneCAddressчерезSettingsLogic.Create1CSyncClient, - операции: тест подключения, отправка настроек, первичная загрузка и прочие вызовы.
2.2 Проверка подключения в админке¶
POST /api/admin/sync1c/config/test-connection?name=...:
- Берёт настройки из
SyncSettings1C. - Создаёт SOAP client с учётом:
OneCAddress,OneCUserName/OneCPassword,OneCCredentialType,- режима безопасности (
http/httpsbinding). - Вызывает
client.TestConnection(true). - Ошибки поднимаются как
TCLogicExceptionи фиксируются вSync1CLog.
2.3 Обработка входящего события из 1С¶
Send1CEvent:
- Ищет конфиг и
RecordпоConfigurationName+OneCDocumentType. - Если задан queue flow (
InboxQueueFlowId), событие ставится в очередь (QueueType.OneC). - Иначе выполняется синхронно (
Handle1CEvent). - Логирование идёт в
Sync1CLog.
2.4 Отдельная очередь retry по 1С-событиям¶
Для части сценариев используется Sync1CEventQueues:
- Лимит повторов задаётся
Sync1CQueueMaxRetryCount(0= без лимита). - Обработка:
api/admin/sync1c/queue/process*и jobEventQueue1CJob. - Очистка проблемных записей:
clear-by-retry-count.
3. Что смотреть при разборе (чек-лист)¶
- Уточнить направление проблемы:
- 1С не может достучаться до 1Ф,
- или 1Ф не может авторизоваться в 1С.
- Если это 1Ф -> 1С:
- вызвать
config/test-connection, - проверить
OneCAddress, тип credential и логин. - Если это 1С -> 1Ф:
- проверить доступность
/TC1CService.asmx?WSDLиapi/sync1c/test-connection, - проверить, что событие реально приходит в
Sync1CLog. - Проверить актуальный XML-конфиг в
SyncSettings1C(имя, адреса, credential type, queue flow). - Проверить mapping пользователя 1С (
Sync1CUsersMap) — при отсутствии mapping используется системный пользователь. - Проверить очередь/повторы:
- рост
RetryCount, - записи с одинаковым объектом и повторными fail.
- При недавнем обновлении 1С отдельно проверить перепубликацию веб-сервиса и актуальность URL/WSDL.
4. Симптом -> вероятная причина -> проверка¶
| Симптом | Вероятная причина | Что проверить первым |
|---|---|---|
config/test-connection падает сразу |
неверный OneCAddress/credential type |
XML в SyncSettings1C, endpoint доступность |
| Ошибка авторизации к 1С | неверные OneCUserName/пароль/режим auth |
настройки конфига + права пользователя сервиса 1С |
send-1c-event даёт ошибку NoSuchSettings/currRecord is null |
неверное ConfigurationName или OneCDocumentType |
имя конфига и наличие record в XML |
| События копятся и не обрабатываются | queue flow/retry проблема | Sync1CEventQueues, RetryCount, Sync1CQueueMaxRetryCount |
| В логах есть входящие события, но данные не применяются | проблема mapping/прав/валидации реквизитов | Sync1CUsersMap, текст ошибок в Sync1CLog |
5. SQL для быстрой диагностики¶
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;
6. Что приложить в задачу разработчикам¶
- Направление сбоя:
1С -> 1Фили1Ф -> 1С. - Имя конфига (
ConfigurationName) и точный текст ошибки. - Результат
config/test-connection(если запускали). - SQL-снимок по
SyncSettings1C,Sync1CLog,Sync1CEventQueues,Sync1CUsersMap. - Было ли недавнее обновление/перепубликация 1С веб-сервиса.
Связанные документы¶
docs/domains/integrations/backend.mddocs/domains/integrations/data-flow.mdadmin.mdadmin.mdrunbook-1c-connect-auth.md