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

Настройка и решение проблем с 1С

Документ даёт ответы на типовые обращения клиентов по настройке и диагностике обмена с 1С. Связан с 1С не подключается — диагностика. Внутри — архитектура SOAP-обмена, пошаговая настройка подключения, типичные проблемы, SQL-диагностика, параметры логирования и поставочные артефакты модуля 1С.

1. Архитектура обмена и предварительные требования

Обмен 1С и 1Формы идёт через SOAP веб-сервисы в обоих направлениях:

1С:Предприятие  ←→  Веб-сервисы  ←→  Первая Форма
       ↑                                    ↑
  Модуль обмена                      TC1CService.asmx
  (расширение 1С)                    api/sync1c

Обе стороны общаются через SOAP веб-сервисы:

  • 1С → 1Ф: 1С вызывает маршрут /TC1CService.asmx (или api/sync1c/send-1c-event)
  • 1Ф → 1С: 1Ф вызывает веб-сервис, опубликованный в 1С по адресу OneCAddress

Сначала определите сборку. Всё, что описано в этом документе, относится к полной сборке. В сертифицируемой сборке (ФСТЭК-сборка, профиль решения UniForm.Barebone) обмен с 1С отсутствует: ни /TC1CService.asmx, ни api/sync1c, ни административных маршрутов api/admin/sync1c/*, ни ядра обмена в сборке нет, поэтому обращения к этим адресам отвечают 404, а настройка конфигурации и проверка соединения недоступны. Если площадка сертифицируемая — вопрос «почему обмен не работает» закрывается здесь.

Требования на стороне 1С и 1Ф

На стороне 1С:

  1. Модуль обмена — расширение конфигурации 1С (поставляется отдельно, не входит в дистрибутив 1Ф)
  2. Публикация веб-сервиса 1С — через Конфигуратор или утилиту публикации Apache/IIS
  3. Учётная запись для подключения 1Ф к 1С (логин + пароль, должна иметь права на вызов веб-сервиса)
  4. Сетевой доступ с сервера 1Ф к серверу 1С по указанному URL (порт, firewall)

На стороне 1Ф:

  1. Системный пользователь — учётная запись в 1Ф для операций синхронизации
  2. Сетевой доступ с сервера 1С к серверу 1Ф по URL вида https://server/TC1CService.asmx
  3. Лицензия — достаточное количество лицензий 1Ф

Доступ к службе обмена (/TC1CService.asmx). Служба, которую 1С вызывает при обмене 1С → 1Ф, принимает только запросы с учётными данными 1Формы: логин и пароль пользователя (Basic), токен сессии (1FormaAuth), персональный ключ доступа (1F-Pat) или вход через Windows, если он включён на площадке. Запрос без учётных данных (в том числе открытие …/TC1CService.asmx?WSDL в браузере без входа) получает отказ. Перед обновлением убедитесь, что в модуле обмена 1С и в самописных клиентах указаны рабочие учётные данные пользователя 1Формы, а у сервисной учётной записи нет второго фактора (Basic со вторым фактором не проходит).

2. Настройка подключения (пошагово)

2.1 В админке 1Ф: создание конфигурации синхронизации

Путь: Администрирование → Синхронизации → 1С → Создать конфигурацию

Ключевые параметры:

Параметр Что указывать Пример
Имя конфигурации Уникальное имя (латиница) ERP_Production
Адрес 1С (OneCAddress) URL опубликованного веб-сервиса 1С https://1c-server:8080/erp/ws/1CIntegration.1cws
Логин 1С (OneCUserName) Учётная запись для доступа к 1С sync_user
Пароль 1С (OneCPassword) Пароль (хранится зашифрованным) ***
Тип аутентификации Basic (по умолчанию), Ntlm, Windows Basic
Адрес 1Ф (TCAddress) WSDL-адрес веб-сервиса 1Ф https://1f-server/TC1CService.asmx?WSDL
Логин 1Ф Логин системного пользователя 1Ф system
Пароль 1Ф Пароль системного пользователя 1Ф ***
ДП для GUID ExtParamID для хранения GUID записи 1С 12345

Пароли 1С и 1Ф хранятся зашифрованными, и в базе одной площадки соседствуют два формата: у давно заведённых конфигураций — голый Base64 без префикса, у сохранённых позже — с префиксом (VENC: или $v2$, зависит от примитива шифрования площадки). Читаются оба, на работу обмена это не влияет. Формат меняется только когда пароль вводят заново: при сохранении конфигурации без правки пароля значение остаётся в прежнем виде.

Проверка соединения (2.2): в админке нажать «Проверить соединение» → вызывается POST api/admin/sync1c/config/test-connection?name=...

Если OK → возвращается 1 (TestConnection successful).

Настройка в 1С (2.3):

  1. Открыть модуль обмена в 1С
  2. Указать URL веб-сервиса 1Ф: https://server/TC1CService.asmx?WSDL
  3. Указать логин и пароль (те же, что в конфигурации 1Ф)
  4. Нажать «Тест подключения»

3. Типичные проблемы и решения

3.1 «1С не видит 1Ф» (ошибка аутентификации из 1С)

Симптом: в 1С при тесте подключения ошибка вида Аутентификация пользователя не выполнена или 401 Unauthorized.

Проверить:

  1. URL и доступ? Запрос https://server/TC1CService.asmx?WSDL без учётных данных должен получить отказ (описание сервиса анонимно не отдаётся); с учётными данными пользователя 1Формы (Basic или другой поддерживаемый способ) тот же адрес возвращает WSDL. Если без входа открывается полное описание сервиса — площадка без актуальной защиты endpoint'а либо без ограничения на периметре
  2. Логин/пароль? Проверить что учётная запись существует в 1Ф и активна
  3. HTTPS/сертификат? Если используется самоподписанный сертификат — 1С может его отвергать. Добавить сертификат в доверенные на сервере 1С
  4. Порт/firewall? С сервера 1С выполнить telnet 1f-server 443 (или нужный порт)
  5. IIS/Reverse proxy? Проверить что Windows Authentication или Basic Authentication включены на уровне IIS для пути /TC1CService.asmx

3.2–3.4 Ошибки соединения 1Ф→1С, очередь и обновление 1С

«1Ф не видит 1С» (тест соединения из админки)

Симптом: кнопка «Проверить соединение» падает с ошибкой.

Проверить:

  1. OneCAddress — URL должен быть полным, включая путь к .1cws или .asmx
  2. Тип аутентификации — должен соответствовать настройке на стороне 1С (обычно Basic)
  3. Сеть — с сервера 1Ф должен быть доступ к серверу 1С по указанному URL
  4. Веб-сервис опубликован? — после обновления 1С публикация может сброситься, нужно переопубликовать

События приходят, но данные не применяются

Проверить:

  1. Сопоставление пользователей (Sync1CUsersMap) — логин 1С должен быть сопоставлен с UserID в 1Ф
  2. Record (запись синхронизации) — документ/справочник 1С должен быть в настройках конфигурации
  3. Очередь — события могут застревать в очереди Sync1CEventQueues (см. RetryCount)
  4. Время события относительно коммита — событие по GUID, пришедшее во время каскада «После смены ДП», может относиться к ещё не закоммиченной задаче: у виртуальных документов исходящий Modify отправляется после коммита, и в Sync1CLog ему соответствует строка Outbound event deferred until transaction commit. Если событие не находит задачу, сопоставьте его время со временем коммита и с этой строкой.

После обновления 1С обмен перестал работать

  1. Переопубликовать веб-сервис в конфигураторе 1С
  2. Проверить что URL не изменился
  3. Проверить что модуль обмена совместим с новой версией конфигурации

Ошибка типа ссылки у Lookup-ДП

Ошибка смены статуса несуществующей задачи при неподдерживаемых ДП

Симптом: попытка 1С изменить статус задачи завершается ошибкой «Не найдена задача для изменения статуса», статус не переводится.

Причина: задача по переданному из 1С идентификатору в 1Форме не найдена. Если ответ при этом не содержит наименования задачи и состоит только из неподдерживаемых типов дополнительных параметров (файл, множественный выбор задач, сквозной параметр, выбор пользователей, дерево), новая задача не создаётся — и смена статуса прерывается понятной ошибкой отсутствия задачи, а не обращением к задаче с нулевым идентификатором.

Что сделать: проверить сопоставление идентификаторов между 1С и 1Формой; убедиться, что задача с этим идентификатором создана в 1Форме либо пакет создания несёт наименование и поддерживаемые типы параметров.

Симптом: в задаче появляется сервисный комментарий «Синхронизация с 1С: ДП '<имя реквизита>' (ID ) в задаче <номер задачи> имеет некорректный тип ссылки '<тип>': отсутствует разделитель '.'.». Значение в 1С при этом не уходит.

Причина: платформа не смогла собрать ссылочный тип из имени объекта 1С — в нём нет точки-разделителя между классом и именем. Имя приходит из системного имени объекта (OneCDocName) записи синхронизации категории задачи-ссылки, а если его нет — из Links реквизита-ссылки.

Что сделать: найти в настройке сопоставления категорию задачи-ссылки и проверить, что её запись синхронизации заполнена и системное имя объекта записано через точку, а у реквизита-ссылки в Links указано полное имя справочника, а не только его класс. После исправления передачу значения нужно запустить заново — событие с этой ошибкой из очереди удаляется и автоматически не повторяется.

Табличный ДП с неподдерживаемой колонкой не уходит в 1С

Симптом: табличный ДП не попадает в выгрузку в 1С, в задаче появляется сервисный комментарий о пропуске, запись о пропуске есть в журнале синхронизации. Если таблица пуста (0 строк), 1С не узнаёт, что таблица очищена.

Причина: если хотя бы одна синхронизируемая колонка табличного ДП относится к типу, который конвертер отправить не умеет, такой ДП отсекается от выгрузки. Для непустой таблицы отсечение сохраняется — это ожидаемое поведение, а не сбой.

Что сделано: начиная со сборки 2.268 «Скульптор» пустая таблица (0 строк) с неподдерживаемой колонкой передаётся в 1С пустой таблицей — и при полной выгрузке, и при точечном изменении задачи. На точечном пути это работает и при явной очистке значения, и при удалении строк: пустота определяется по текущему состоянию таблицы, а не по самой команде удаления. Если строки в таблице остались, ДП по-прежнему пропускается с записью в журнал и сервисным комментарием. Таблицы без неподдерживаемых синхронизируемых колонок обрабатываются как прежде.

Что сделать при обращении: проверить, каким путём шёл обмен — полной выгрузкой или точечным изменением — и есть ли строки в таблице после сохранения: пустая таблица должна уйти в 1С как очистка, а при оставшихся строках пропуск из-за неподдерживаемой колонки ожидаем. Далее проверить типы синхронизируемых колонок. Если колонка с неподдерживаемым типом нужна в обмене — исключить её из синхронизации или использовать обходные приёмы из раздела про сопоставление сущностей и метаданных (1С — сопоставление сущностей).

Неподдерживаемый тип реквизита (ДП) обрывал отправку события в 1С

Симптом: при изменении задачи часть реквизитов не уезжает в 1С, в задаче появляется сервисный комментарий о пропущенном реквизите, в журнале синхронизации — запись о пропуске.

Причина: не всякий тип дополнительного параметра умеет уехать из 1Формы в 1С. Для одних типов исходящая конвертация не реализована вовсе, для других она не поддерживается как колонка табличного ДП. Раньше такой реквизит обрывал исходящее событие целиком, и вместе с ним не уезжали остальные реквизиты задачи.

Как теперь: неподдерживаемый реквизит и табличный ДП с неподдерживаемой колонкой пропускаются, остальные реквизиты события уезжают в 1С как обычно; о пропуске система сообщает сервисным комментарием в задаче и строкой в журнале синхронизации. Перечень пропускаемых типов берётся из самого конвертера, поэтому новый неподдерживаемый тип начинает пропускаться без ручной правки списка.

Где Что не поддерживается
Тип ДП целиком сквозной параметр, множественный выбор задач, выбор пользователей, адресаты и другие типы без исходящей конвертации
Колонка табличного ДП — пропускается вся таблица адресаты, файл, выбор пользователей, таблица, сквозной параметр, множественный выбор задач

Колонка с признаком «передавать как текст» уезжает без разбора типа и пропуск не открывает. Если в событии не осталось ни одного передаваемого реквизита, событие всё равно уходит в 1С — с пустым составом реквизитов: событие создания задачи создаёт документ в 1С и получает GUID из ответа, у виртуального документа GUID запроса генерируется и записывается в задачу перед отправкой. Сервисный комментарий и запись в журнале о пропуске при этом остаются. Не отправляется только событие изменения задачи без изменённого реквизита.

Документ в 1С не создан, хотя задача есть в 1Форме

Симптом: задача создана в 1Форме, но документа в 1С нет, реквизит с GUID задачи пуст, ошибки синхронизации нет — есть только сервисный комментарий о пропущенном реквизите.

Причина: до сборки 2.268 событие, в котором после пропуска не осталось ни одного передаваемого реквизита, не отправлялось вовсе: обработка завершалась до вызова 1С, GUID виртуального документа не генерировался, ответ 1С не обрабатывался.

Что сделать: сверить сборку площадки и версию модуля обмена. На актуальной сборке событие из одних неподдерживаемых реквизитов уходит с пустым составом и документ создаётся. Если на обновлённой площадке расхождение повторяется — передать разработке номер задачи, строку журнала синхронизации и имя пропущенного реквизита.

Что делать: по журналу синхронизации определить, какой тип не поддержан, и решить с разработкой — изменить тип реквизита в настройке обмена либо завести задачу на поддержку этого типа в исходящей конвертации. Менять список пропускаемых типов вручную больше не нужно.

Значение из 1С не попало в задачу, остальные реквизиты обновились

Симптом: после обмена часть реквизитов записалась, один или несколько — нет; в ленте задачи виден сервисный комментарий о пропущенном реквизите.

Причина: входящий обмен не переносит пять типов дополнительных параметров — файл, множественный выбор задач, сквозной параметр, выбор пользователей и дерево. Такой параметр пропускается, обработка события продолжается. До сборки 2.268 «Скульптор» один такой параметр обрывал разбор всего ответа, и не обновлялся ни один реквизит.

Что проверить: тип параметра в категории и имя реквизита из комментария, ту же строку в журнале синхронизации. Если значение нужно в задаче, его должен нести реквизит поддерживаемого типа — текст, число, дата, список, ссылка.

3.5 На сертифицируемой сборке обмен с 1С не настраивается

Симптомы: /TC1CService.asmx отвечает 404; api/sync1c/* и api/admin/sync1c/* отвечают 404; раздел «Синхронизации → 1С» в клиенте открывается, но настройки не сохраняются; записи очереди обмена висят в состоянии «Выполняется»; кнопка «Выполнить повторно» в форме queue-log отвечает 204 и ничего не делает.

Причина во всех случаях одна: площадка собрана в сертифицируемой сборке (UniForm.Barebone), обмен изъят из неё. Это не дефект и не поломка настроек — поведение записи очереди и ответ 204 ожидаемы.

Что делать: не тратить время на настройку обмена. Если площадка должна работать с обменом, она должна быть собрана в полной сборке: перевод площадки на сертифицируемую сборку — решение владельца продукта, и включить обмен обратно в такой сборке нечем. Записи типа «обмен с 1С» в очереди можно удалить: обработчика, который бы их разобрал, в сборке нет.

4. Диагностические SQL-запросы

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

set transaction isolation level read uncommitted;

-- Последние ошибки синхронизации
select top 50
        l.[Date],
        l.SettingsName,
        l.Origin,
        l.[Message],
        l.Duration
from dbo.Sync1CLog l with (nolock)
where l.[Message] like '%error%' or
      l.[Message] like '%exception%' or
      l.[Message] like '%ошибк%'
order by l.[Date] desc;

-- Очередь: застрявшие события
select
        q.SettingsName,
        q.RetryCount,
        count(*) as Cnt
from dbo.Sync1CEventQueues q with (nolock)
where q.RetryCount > 3
group by q.SettingsName, q.RetryCount
order by q.RetryCount desc;

-- Mapping пользователей 1С
select
        m.User1CLogin,
        m.UserID,
        u.FullName
from dbo.Sync1CUsersMap m with (nolock)
        join dbo.Users u with (nolock)
            on u.UserID = m.UserID
order by m.User1CLogin;

5. Параметры логирования и режимы аутентификации

Параметры логирования синхронизации и режимы аутентификации к веб-сервису 1С:

Параметр Значение Описание
TC1C_SyncLog 0 Логирование отключено
TC1C_SyncLog 1 Полные логи (по умолчанию)
TC1C_SyncLog 2 Только ошибки
TC1C_DaysLogKept 7 Хранить логи N дней (чистка по воскресеньям)
Тип (OneCCredentialType) Когда использовать
Basic По умолчанию. Логин и пароль в HTTP-заголовке. Требует HTTPS
Ntlm Доменная аутентификация Windows (NTLM)
Windows Встроенная Windows-аутентификация (Kerberos/NTLM)
Certificate Клиентский сертификат
Режим безопасности (OneCSecurityMode) Описание
TransportCredentialOnly По умолчанию. Учётные данные в заголовке, TLS опционально
Transport Только TLS/SSL
TransportWithMessageCredential TLS + WS-Security

6. Поставочные артефакты модуля

Файлы модуля хранятся в категории «Репозиторий версий приложения», задача «Модуль 1С».

Префикс YYYYMMDD_ в имени файла — дата сборки версии. Актуальная версия — файл с последней датой в имени.

YYYYMMDD_Расширение_ИнтеграцияСПервойФормой.cfe — основной поставочный артефакт

Расширение конфигурации 1С (формат .cfe). Это то, что устанавливается клиенту — не затрагивает типовую конфигурацию 1С, накладывается поверх неё отдельным слоем.

Что делает: добавляет в 1С веб-сервис, через который 1Форма и 1С обмениваются данными по SOAP в обоих направлениях.

Ключевое свойство: расширение загружается общим слоем — устанавливается один раз и автоматически применяется ко всем базам клиента (Бухгалтерия, ЗУП и т.д.) без отдельного переноса на каждую.

Установка клиенту:

  1. Открыть 1С Конфигуратор
  2. Меню «Конфигурация» → «Расширения конфигурации» → «Добавить из файла» → выбрать .cfe
  3. Перезапустить 1С в режиме предприятия
  4. Опубликовать веб-сервис через Конфигуратор или утилиту публикации (Apache/IIS)
  5. Передать клиенту URL веб-сервиса для указания в админке 1Формы (Администрирование → Синхронизации → 1С → поле «Адрес 1С»)

YYYYMMDD_Конфигурация_ИнтеграцияСПервойФормой.cf — тестовая конфигурация

Полная конфигурация 1С (формат .cf). Используется только разработчиками — клиентам не передаётся.

Что делает: позволяет поднять изолированную 1С-базу с модулем интеграции без доступа к клиентской конфигурации. Аналог DB_Test на стороне 1С.

Когда использовать:

  • Разработка и отладка изменений в модуле
  • Регрессионная проверка перед передачей новой версии .cfe клиентам
  • Воспроизведение ошибок без риска затронуть продуктивные данные

Загрузка:

  1. Создать новую пустую базу 1С
  2. Открыть Конфигуратор → «Конфигурация» → «Загрузить конфигурацию из файла» → выбрать .cf
  3. Обновить конфигурацию базы данных

Архивные артефакты и схема поставки

ИнтеграцияСПервойФормой.cfe — предыдущая версия расширения

Более ранняя версия расширения (без датированного префикса в имени — исходный формат до введения версионирования).

Назначение: архивная версия для отката, если в новой версии обнаружится регрессия у клиента. Перед заменой на новую версию рекомендуется убедиться, что старый .cfe сохранён в задаче.

Module1C.zip — исторический архив

Первоначальная поставка модуля (февраль 2025) в zip-архиве. Содержит ранние версии файлов модуля в едином архиве — формат, использовавшийся до разделения на .cf и .cfe.

Назначение: исторический артефакт, хранится для справки. В текущей работе не используется.

┌─ Разработка / тест ─────────────────────────────────────┐
│  .cf → загрузить в чистую 1С-базу                       │
│  (Конфигуратор → «Загрузить конфигурацию из файла»)     │
│  → проверить работу модуля, воспроизвести / исправить   │
│     ошибку                                              │
└─────────────────────────────────────────────────────────┘
                        ↓ проверено, OK
┌─ Поставка клиенту ──────────────────────────────────────┐
│  .cfe → Конфигуратор → Расширения → Добавить из файла   │
│  → опубликовать веб-сервис (Apache/IIS)                 │
│  → передать URL клиенту для настройки в админке 1Ф      │
└─────────────────────────────────────────────────────────┘