Интеграции — Администрирование¶
Обзор¶
Для integrations администрирование в основном сосредоточено в разделе system -> подключения и в отдельном контуре sync1c.
Ключевой принцип домена: конфигурация хранится в таблицах сервисов/интеграций, а эксплуатационное управление выполняется через Admin API (очереди, тесты соединения, повторная обработка).
Механизмы администрирования¶
Автоадминка (dbadmin) -- сервисы подключений¶
| Alias формы | Название | Таблица БД | Что настраивается |
|---|---|---|---|
sync-1c |
Синхронизация с 1С | dbo.SyncSettings1C |
Профили обмена 1С |
ews-service-settings |
Сервис ExchangeWebService | dbo.EwsServiceSettings |
Подключение к Exchange |
diadoc-service-settings |
Сервис Diadoc | dbo.DiadocServiceCredentials |
ЭДО Диадок |
sbis-service-settings |
Сервис Sbis | dbo.SbisCredentials |
ЭДО СБИС |
dadata-service-settings |
Сервис Dadata | dbo.DadataServiceCredentials |
Подсказки/обогащение данных |
paycontrol-service-settings |
Сервис PayControl | dbo.PayControlServiceCredentials |
Мобильная подпись/СКЗИ |
tika-service-settings |
Сервис Tika | dbo.TikaServiceSettings |
Извлечение текста из файлов |
azure-service-settings |
Сервис TranslateService | dbo.AzureCognitiveServiceCredentials |
AI-перевод |
universalapi-service-settings |
Сервис UniversalApi | dbo.UniversalApiServiceSettings |
Универсальные внешние вызовы |
vector-search-service-settings |
Сервис VectorSearch | dbo.VectorSearchServiceSettings |
Поиск/индексация |
pt-sandbox-service-settings |
Сервис PT Sandbox | dbo.PTSandboxServiceSettings |
Антивирусная проверка файлов (PT Sandbox) |
pt-sandbox-domain-settings |
Привязка доменов к сервису PT Sandbox | dbo.PTSandboxDomainSettings |
Фильтрация доменов для проверки файлов |
system-services |
Сервисы | dbo.ServicesSettings |
Глобальная карта сервисов |
file-providers |
Провайдеры файлов | dbo.FileProviders |
Хранилища файлов (MSSQL/S3 и др.) |
EntityEditor¶
| Схема JSON | Таблица | Назначение |
|---|---|---|
fileProviders |
dbo.FileProviders |
Расширенное управление файловыми провайдерами |
fileProviderDefault |
(виртуальная) | Провайдер файлов по умолчанию |
authenticationProviders |
dbo.AuthenticationProviders |
Смежная auth-интеграция в едином разделе подключений |
Admin API контроллеры¶
| Контроллер | Маршрут | Методы | Назначение |
|---|---|---|---|
Sync1CConfigController |
/api/admin/sync1c/config* |
GET, POST, DELETE | CRUD конфигов 1С, тест соединения, отправка настроек |
Sync1CConfigBuilderController |
/api/admin/sync1c/builder/* |
GET, POST | Builder-конвейер подготовки конфигурации |
Sync1CEventQueueController |
/api/admin/sync1c/queue/* |
POST | Обработка/очистка очередей Sync1C |
Sync1CUserMappingController |
/api/admin/sync1c/usermapping |
GET, POST, DELETE | Сопоставление пользователей 1С и 1Ф |
ExchangeController |
/api/admin/exchange/subscriptions |
GET | Активные подписки Exchange |
RebusController |
/api/admin/rebus/unsubscribe |
POST | Отписка от очередей шины сообщений |
FileProvidersController |
/api/admin/fileproviders |
GET, POST, DELETE | Управление файловыми провайдерами |
ServicesController |
/api/admin/services |
GET | Обзор зарегистрированных сервисов |
Ключевые настройки¶
1. Профили интеграции 1С¶
Где настраивается: sync-1c, /api/admin/sync1c/*, страницы 1c_sync/1c_profile/1c_queue.
Таблицы БД:
- dbo.SyncSettings1C
- dbo.Sync1CEventQueues
- dbo.Sync1CLog
Что контролируется: endpoint обмена, формат и карта синхронизации, очередь событий, лимиты retry.
Builder-конвейер: 4-шаговый мастер для автоматического создания категорий и ДП на основе метаданных 1С (Sync1CConfigBuilderController → Sync1CConfigBuilderService). Архитектура маппинга, типы, виртуальные реквизиты/документы: 1c-entity-mapping.md.
Привилегированный режим (со стороны 1С). По умолчанию включён: операции с данными выполняются от лица пользователей-1С без проверки прав, что ускоряет обмен и обходит RLS. Отключается флагом «Отключить привилегированный режим» в общих настройках обмена (раздел Sync1C → профиль). Отключать имеет смысл только если обмен явно должен соблюдать пользовательские ограничения 1С (редкий кейс — например, при выгрузке от имени конкретного оператора с ограниченным доступом).
2. Сервисные credentials внешних систем¶
Где настраивается: формы *-service-settings в system -> подключения.
Таблицы БД:
- dbo.EwsServiceSettings
- dbo.DiadocServiceCredentials
- dbo.SbisCredentials
- dbo.DadataServiceCredentials
- dbo.PayControlServiceCredentials
- dbo.TikaServiceSettings
- dbo.AzureCognitiveServiceCredentials
- dbo.UniversalApiServiceSettings
- dbo.VectorSearchServiceSettings
- dbo.PTSandboxServiceSettings
- dbo.PTSandboxDomainSettings
Что контролируется: URL, ключи, секреты, API-параметры и доступность интеграционного канала.
3. Файловые провайдеры как инфраструктурная интеграция¶
Где настраивается: file-providers, /api/admin/fileproviders.
Таблицы БД:
- dbo.FileProviders
- provider-specific таблицы настроек
Что контролируется: место физического хранения файлов, сжатие, тест подключения, переключение write-провайдера.
4. Эксплуатация очередей и подписок¶
Где настраивается: /api/admin/sync1c/queue/*, /api/admin/rebus/unsubscribe, /api/admin/exchange/subscriptions.
Таблицы БД:
- dbo.MessageQueue
- dbo.MessageQueueLog
- dbo.MessageFlows
Что контролируется: повторные попытки, "зависшие" события, остановка/разблокировка потоков.
Административные формы очередей:
| Форма | Alias | Таблица | Назначение |
|---|---|---|---|
| Журнал очередей | message-queue-log |
dbo.MessageQueueLog |
История обработанных событий. Колонки: дата, тип потока, событие, статус, исходный ключ очереди (OriginalMessageId — ParentMessageId из MessageQueue), параметры, текст ошибки. |
| Содержимое очереди | queue-log |
dbo.MessageQueue |
Активные записи в обработке: дата создания/обработки, тип потока, событие, статус, внутренний ID (ContextId), внешний ID (ContextExternalId), параметры (Data), текст ошибки, тип ошибки. Доступны массовые действия «Удалить события с ошибками» и «Обработать события с ошибками». Для каждой строки доступна кнопка «Выполнить повторно» — принудительно запускает обработку одного сообщения (v2.268+). |
API повторного выполнения: POST /api/admin/queues/messages/{id}/execute — повторный запуск конкретного сообщения из очереди. Вызывается кнопкой «Выполнить повторно» в колонке формы queue-log (v2.268+).
Типичные ошибки настройки¶
| Симптом | Причина | Где проверить | SQL-диагностика |
|---|---|---|---|
| Тест соединения 1С падает | Неверный endpoint/креды в профиле Sync1C | sync-1c, /api/admin/sync1c/config/test-connection |
select top (50) [Date], SettingsName, Message, TechData from dbo.Sync1CLog order by [Date] desc; |
| Очередь Sync1C не разгребается | Превышен retry, события не очищены | /api/admin/sync1c/queue/* |
select Id, RetryCount, DateAdded, DateOfLastTry from dbo.Sync1CEventQueues order by RetryCount desc, DateAdded asc; |
| Внешний сервис включён, но запросы не проходят | Неверные credentials/URL конкретного сервиса | соответствующая *-service-settings форма |
select * from dbo.UniversalApiServiceSettings; select * from dbo.DiadocServiceCredentials; |
| Потоки очередей остановились после ошибки | MessageFlows.HasErrors = 1 и ActionOnError=Stop |
админка очередей | select Id, FlowName, ActionOnError, HasErrors, FailedAttemptsCounter from dbo.MessageFlows; |
| После смены FileProvider файлы недоступны | Некорректная конфигурация провайдера или fallback | file-providers + тест |
select ID, Name, TypeID, UseToWriteFiles, CompressContent from dbo.FileProviders; |
Сервисы внешних интеграций — подробные параметры¶
EWS (Exchange Web Services)¶
Cross-link. Параметры подключения EWS описаны в
../calendar/admin.md. Там же: приоритет «имперсонализация» над «перевоплощением», правило «показывать только занятость», исключение для Робот 1Ф.
Диадок (ЭДО)¶
Версия: v2.256+.
Настройки сервиса Diadoc хранятся в dbo.DiadocServiceCredentials. Жизненный цикл: после создания сервиса → включить в sys_general_settings («Diadoc Service»); перед удалением → сначала убрать из sys_general_settings.
| Параметр | Описание |
|---|---|
| Сервис | Предварительно созданный сервис с типом Diadoc (страница «Сервисы») |
| Логин | Учётные данные в системе Диадок |
| Пароль | Пароль к аккаунту Диадок |
BoxId |
Идентификатор организации. Виден в веб-интерфейсе Диадока |
ClientId |
Уникальный строковый идентификатор клиента. Получается у diadoc-api@skbkontur.ru после заключения договора на API |
| API Url | Адрес API для онлайн-подписания |
Кастомизация на JINT/SmartScript (с v2.267). Часть бизнес-логики ЭДО можно реализовать не через встроенные C#-смарт-действия, а через системные библиотеки SmartScript на JavaScript (JINT) — без пересборки ядра.
| Библиотека | Назначение |
|---|---|
[edo] eds-common |
Базовая. Общие функции: HTTP-вызовы, SQL-хелперы, логирование, кэш токенов, загрузка файлов, работа с JSON. Подключается первой |
[edo] diadoc-api |
Обёртка над API Диадок: отправка/приём документов, статусы, подпись |
Шаблон подключения в смарт-скрипте:
include("[edo] eds-common");
include("[edo] diadoc-api");
Прежние C#-смарт-действия продолжают работать и могут использоваться параллельно. Новые сценарии (маршрутизация, обработка ответов API, обмен документами) рекомендуется писать на JavaScript. Отладка — через стандартное логирование SmartScript. Большинство операций в JINT выполняются синхронно; очередь сообщений остаётся актуальной для синхронизации статусов и входящих документов.
СБИС (ЭДО)¶
Версия: v2.260+.
Настройки сервиса SBIS хранятся в dbo.SbisCredentials. Жизненный цикл аналогичен Диадоку: включение через sys_general_settings («Sbis Service»), удаление — только после отключения.
| Параметр | Описание |
|---|---|
| Сервис | Предварительно созданный сервис с типом Sbis |
| Логин | Учётные данные в системе СБИС |
| Пароль | Пароль к аккаунту СБИС |
| API Url | Адрес API для подключения к СБИС |
| ИНН | ИНН компании |
| КПП | КПП компании |
| Уникальный ID | Идентификатор участника ЭДО (participantID) — из личного кабинета СБИС |
CustomSettings ЭДО и интеграций¶
| Ключ | Тип | Назначение |
|---|---|---|
DiadocLastEventsId |
JSON | Обязателен для интеграции. Курсор последних событий Диадок: {"LastEvents":[{"BoxId":"...","ClientId":"...","Timestamp":1704067200}]}. Timestamp — наносекунды от 01.01.0001; 0 → автозаполнение датой первого подключения |
DiadocLogEnabled |
bool | Логирование ответов API Диадок (для диагностики) |
SbisLastEventsId |
JSON | Обязателен для интеграции. Курсор последних событий СБИС: {"LastEvents":[{"EventId":N,"ServiceId":N}]} |
Sync1CQueueMaxRetryCount |
int | Количество повторных попыток при неудачной синхронизации из 1Ф в 1С (превышение → событие висит с HasErrors=1) |
EnableCipherInUniversalApiCallbackUrls |
bool | Шифрование callback-URL в UniversalAPI (для повышения безопасности обратных вызовов) |
RedefiningIdentity |
bool | Механизм смещения автоинкремента строк таблиц сущностей. Работает в связке с dbo.Settings.ServerIdKey (используется при объединении инсталляций / миграциях с пересечением ID) |
TranslationService |
string | Управление сервисом автоматического перевода локализованных значений. По умолчанию используется AI-сервис (UniversalApi с типом TranslateService). Настройка позволяет вернуться к Azure Cognitive Services |
DaData (подсказки)¶
Версия: v2.256+. Сервис используется для работы подсказок ДП «Текст» и ДП «Адрес».
| Параметр | Описание |
|---|---|
| Сервис | Предварительно созданный сервис с типом Dadata |
| Token | API-ключ из личного кабинета dadata.ru |
| API Url | https://suggestions.dadata.ru/suggestions/api/4_1/rs |
PayControl (мобильная ЭП)¶
Версия: v2.256+.
⚠️ В системе может быть создан только один сервис PayControl.
Настройки хранятся в dbo.PayControlServiceCredentials. После создания — назначить группы через кнопку «Группа пользователей PC».
| Параметр | Описание |
|---|---|
| Сервис | Предварительно созданный сервис с типом PayControl |
system_id |
Выдаётся при приобретении сервера PayControl |
| Адрес API | Адрес для подписания онлайн |
| Адрес Server Signer API | Адрес для подписания офлайн (если у ЭЦП включён признак «Серверное подписание») |
Расширенное свойство (user_id) |
Название расширенного свойства пользователя, в котором хранится user_id |
| Расширенное свойство (серверная подпись) | Название свойства, хранящего признак серверной подписи PayControl |
| Расширенное свойство разрешения смены устройства | Название свойства, хранящего признак разрешения повторной регистрации (true/false; отсутствие = false) |
Повторная регистрация требуется при перевыпуске сертификата, утере смартфона или переустановке приложения 1F Mobile.
Apache Tika (извлечение текста)¶
Версия: v2.260+. Сервис необходим для работы TikaJob — полнотекстового индексатора файлов (поиск по файлам). Управление: включение/выключение через sys_general_settings («Tika Service»).
⚠️ Файлы
.mdи.txtобрабатываются без обращения к Tika — содержимое читается напрямую с автоматическим определением кодировки.
| Параметр | Описание | Рекомендация |
|---|---|---|
| Сервис | Предварительно созданный сервис с типом Tika | |
| API Url | Адрес API Tika | |
| Разрешённые типы файлов | Через запятую, без пробелов | pdf,doc,docx,xls,xlsx,ppt,pptx,txt,xml,html,eml,sql,pgsql,json,md |
| Максимальный размер (КБ) | Максимальный размер обрабатываемого файла | Рекомендуется 50000 |
| Максимум параллельных запросов | Рекомендуется 10 | |
| Разрешённые языки | Формат: rus+eng+fre+ger+ita+spa+uzb (первые 3 буквы, через +) |
По умолчанию: English, French, German, Italian, Spanish, Uzbek |
Azure TranslateService (AI-перевод)¶
Версия: v2.256+. Используется для автоматического перевода комментариев на все поддерживаемые языки через AI-сервис (задание AzureCognitiveTranslateJob).
⚠️ Сценарий применения (логика, где применяется, лог) — см.
../localization/admin.md§ 4. Только параметры credentials (URL/Ключ/Регион) описаны здесь; не дублировать сценарий изlocalization/admin.md.⚠️ Для AI-перевода используются только поля URL и Ключ. Поля «Логин» и «Пароль» в AI-режиме не задействованы.
| Параметр | Описание |
|---|---|
| Сервис | Предварительно созданный сервис с типом TranslateService |
| URL | https://api.cognitive.microsofttranslator.com/translate?api-version=3.0 |
| Ключ | Azure Cognitive API key |
| Регион | Например, westeurope |
Переключение на Azure (кастом-override): в SettingsCustom ключ TranslationService = azure.
UniversalApi (внешние AI-вызовы)¶
Версия: v2.264+. Асинхронное взаимодействие с внешними AI-сервисами через очередь — запрос отправляется, ответ приходит через callback.
| Параметр | Описание |
|---|---|
| Сервис | Предварительно созданный сервис с типом UniversalApi |
| ApiUrl | Адрес API внешнего сервиса |
| ApiKey | Уникальный код для идентификации |
| Callback поток | Выбор из существующих потоков очереди |
| Callback очередь | Выбор из существующих произвольных событий очереди |
Результат записывается в MessageQueue/MessageQueueLog: колонка textResult (текст), booleanResult (да/нет).
Для упрощённого формирования запросов доступно смарт-действие «Вызов внешнего сервиса».
PT Sandbox (антивирусная проверка файлов)¶
Версия: v2.266+. Перехватывает загрузку файлов до записи в хранилище.
⚠️ Детальное описание всех 13 параметров конфигурации, архитектура, API PT Sandbox v5.7, фильтры, кеш вердиктов, таблицы БД — в
../integrations/pt-sandbox.md.
В этом разделе — только краткая сводка для администратора.
Настройки: форма pt-sandbox-service-settings (таблица dbo.PTSandboxServiceSettings) + отдельная форма pt-sandbox-domain-settings (фильтрация по доменам, таблица dbo.PTSandboxDomainSettings). Включение — через sys_general_settings («PT Sandbox Service»).
Нет встроенного теста подключения — только реальная загрузка файла для проверки.
Контур.Облако (облачная УКЭП)¶
Версия: v2.266+. Облачная электронная подпись без локального токена. Используется для подписания на маршруте согласования, выбора сертификата из Контура, подтверждения SMS-кодом.
| Параметр | Описание |
|---|---|
| Сервис | Предварительно созданный сервис с типом Контур.Облако |
| API Key | Для заголовка X-KONTUR-APIKEY |
| Адрес сервера | Endpoint для операций подписания, загрузки файлов, получения статусов |
Процесс подписания: пользователь выбирает сертификат → отправляется SMS-код → ввод кода → подписание.
При наличии сертификатов разных типов (НЭП, УКЭП) система автоматически фильтрует список, показывая только сертификаты нужного типа.
Контур.КЭДО (кадровый ЭДО)¶
Версия: v2.266+. Работает совместно с Контур.Облако: КЭДО предоставляет организационный контекст, Облако выполняет подписание.
Возможности: получение списка сотрудников из КЭДО, привязка логина КЭДО к пользователю 1Формы, получение действующих сертификатов, подписание кадровых документов (приём, увольнение, отпуска).
| Параметр | Описание |
|---|---|
| Сервис | Предварительно созданный сервис с типом Контур.КЭДО |
| Адрес сервера | Адрес API Контур.КЭДО |
| Идентификатор клиента | ID приложения для OAuth-авторизации в Контуре |
| Идентификатор организации | OrgID для запроса сотрудников и сертификатов (CertificatesRequest.OrgId) |
| API Key | Для заголовка X-KONTUR-APIKEY |
| Логин | Сервисный логин для получения access token |
| Пароль | Пароль сервисной учётной записи |
Matomo (веб-аналитика)¶
Версия: v2.256+.
⚠️ В Matomo аналитическая группа устанавливается для
customDimensionсid=1. Установка другого ID невозможна.
Настройка: ключ matomo в SettingsCustom.
Формат CustomSettings:
{
"baseURL": "https://***/matomo.php",
"serverAddress": "***.***.ru",
"siteId": 5,
"analyticGroups": [...]
}
CustomDimension ID=1 (контекст — клиент):
| Значение | Описание |
|---|---|
firstForm |
Все внутренние пользователи 1Формы (HD) |
firstFormOutstaff |
Внешние пользователи 1Формы |
CustomDimension ID=2 (действия — тип страницы):
| Значение | Описание |
|---|---|
tasksView |
Просмотр карточки задачи на любом синдикате |
tasksCreate |
Просмотр карточки создания новой задачи |
tasksList |
Просмотр списка задач категорий |
templatesView |
Просмотр шаблона МТФ (только для МП) |
templatesCreate |
Создание шаблона НТФ (только для МП) |
chatsList |
Список чатов |
chatsView |
Просмотр чатов |
chatsCreate |
Создание чата |
dashboardsView |
Портал (дашборд) |
contactsList |
Экран просмотра и поиска контактов |
profileView |
Просмотр профиля пользователя |
calendarsView |
Календарь |
feedsList |
Лента |
Telegram-бот (двунаправленный чат)¶
Чат-бот позволяет дублировать сообщения между чатами Telegram и задачами-чатами 1Формы. Реализуется как публикация + Lua-скрипты, в которых проксируются обновления Telegram API в комментарии задачи (и наоборот).
Архитектура: интеграция целиком на конфигурации (Lua SmartScripts + публикации + кастомные таблицы); платформенный C#-код отвечает только за отправку 2FA-кодов. Подробнее: audit-2026-03-07.md.
Шаги настройки¶
В Telegram:
1. Через @BotFather командой /newbot создать бота. Username должен заканчиваться на bot (например, Chat1FBot); если занят — будет ошибка «Sorry, this username is invalid».
2. Сохранить токен HTTP API (bot token) и ID бота — потребуются в Lua-скрипте.
3. Добавить бота как участника в нужный чат Telegram.
В 1Форме:
1. Создать служебного пользователя для роли чат-бота (его ID подставляется в скрипт).
2. Создать таблицы и представление БД:
- cm_Telegram_ChatToTask — связь TelegramChatID ↔ TaskID.
- cm_tlg_tasks — связь TelegramMessageID ↔ CommentID (нужна для последующих edit / delete).
- View cm_vw_ChatToTask — производная от cm_Telegram_ChatToTask (через JOIN с cm_tlg_tasks); используется во всех smart-фильтрах правил.
3. Заполнить в профилях пользователей:
- Users.ICQ — числовой Telegram-ID (для поиска @id в chat_id/user_id).
- Users.TelegramUserName — @username (для упоминаний; если не задан, в entities используется text_mention с firstName).
4. Системные категории в разделе Системный:
- «Общение» — личные чаты (только два участника: пользователь + бот).
- «Группы» — групповые чаты Telegram.
Бот один на площадку (на все категории и чаты).
5. Создать публикацию с Lua-скриптом — обработчик входящего webhook (точка входа: dbo.1fSynkChat_webhook_telegram @Mode = @json).
6. В смарт-действиях системных категорий настроить отправку комментариев из 1Ф обратно в Telegram (см. ниже).
Bot API endpoints¶
Используются в смарт-действии «Отправить HTTP-запрос» (Url — токен бота + endpoint):
| Endpoint | Используется на событии |
|---|---|
https://api.telegram.org/bot{token}/sendMessage |
После написания комментария (создание сообщения в Telegram) |
https://api.telegram.org/bot{token}/editMessageText |
После редактирования комментария (правка текста по message_id) |
https://api.telegram.org/bot{token}/deleteMessage |
Перед удалением комментария / После удаления подписчика |
После sendMessage ответ парсится: $.HttpResponse.ResponseContent.result.chat.id и $.HttpResponse.ResponseContent.result.message_id записываются в cm_tlg_tasks для последующих editMessageText / deleteMessage.
События-триггеры (исходящие из 1Ф в Telegram)¶
| Событие | Назначение |
|---|---|
| После написания комментария (комментарий не пустой, не ответ, без адресатов) | Отправка обычного сообщения |
| После написания комментария (есть адресаты) | Отправка с entities (упоминания) |
| После написания комментария (является ответом) | Отправка с reply_to_message_id |
| После редактирования комментария | editMessageText по сохранённому message_id |
| Перед удалением комментария | deleteMessage по message_id |
| После удаления подписчика | Удаление пользователя из чата (через Telegram-API) |
| Перед удалением задачи | Очистка чата / связей |
| После перехода / После смены текста задачи | Уведомления в чат |
Все правила используют smart-фильтр вида:
select 1 from cm_vw_ChatToTask v where v.TaskID = @ContextID
-- + опционально для edit/delete:
join [custom].cm_tlg_tasks t on v.chatid = t.tlg_chat_id
where t.task_id = @eventParam0
Параметр entities (упоминания)¶
Для упоминаний (@username или text_mention пользователя без публичного username) формируется JSON-массив с полями offset, length, type, и опциональным user.id:
type = "mention"— если у пользователя заданTelegramUserName(@…).type = "text_mention"— если толькоICQ(числовой ID); вuser.idподставляетсяICQ.
Список адресатов берётся из dbo.CommentParticipants через JOIN с Users.
Распознавание автора при публикации сообщения из Telegram в 1Ф:
| Условие | Поведение |
|---|---|
У пользователя в профиле 1Ф указан Telegram ID (Users.ICQ) |
Сообщение публикуется от его имени |
| ID не указан, но есть подходящая учётная запись | Используется она |
| Нет учётной записи | Создаётся новый пользователь или используется служебный бот-пользователь (зависит от настроек скрипта) |
Полные скрипты (DDL таблиц, Lua-обработчик webhook, SQL смарт-фильтров и параметров
entities) — в архивномadmin-manual/pages/publication_telegram.md.
WhatsApp (мессенджер)¶
Версия: v2.256+. Интеграция через чат-бота — пользователь пишет ключевое слово или числовой код. Сценарии общения задаются администраторами.
В отличие от Telegram, WhatsApp-бот может самостоятельно инициировать диалог (для этого нужен список контактов в 1Форме).
3 способа интеграции¶
| Способ | Преимущества | Недостатки |
|---|---|---|
| Бизнес-аккаунт WhatsApp | Безопаснее; может сам инициировать диалог | Долгая процедура оформления; сложная документация |
| Chat API (платная подписка) | Быстрое оформление; подробная документация | Платная; ниже уровень безопасности |
| WAZZUP | Быстрая настройка; множество номеров | Требует прогрев аккаунта |
WAZZUP — 6 шагов настройки¶
- Зарегистрироваться на wazzup24.ru
- Добавить канал WhatsApp → сканировать QR-код
- Скопировать ключ API (раздел «Интеграция с CRM» → API → «Подключить»)
⚠️ Прогрев аккаунта (критично): - Новый аккаунт: переписываться с 10–15 людьми в течение суток - Для стабильной работы: открывать WhatsApp раз в пару недель - При нарушении: WhatsApp разлогинивает из WAZZUP → переподключение канала
Отправка сообщений (POST):
POST https://api.wazzup24.com/v3/message
Authorization: Bearer {key}
Content-Type: application/json
{
"channelId": "...", // uuidv4 канала
"chatType": "whatsapp", // или "whatsgroup"
"chatId": "...",
"text": "...",
"crmMessageId": "..."
}
Webhooks (PATCH):
PATCH https://api.wazzup24.com/v3/webhooks
{
"webhooksUri": "https://...",
"subscriptions": {
"messagesAndStatuses": true,
"contactsAndDealsCreation": true,
"channelsUpdates": true,
"tepmplateStatus": true
}
}
Webhook-URL получает тестовый POST {test: true} — должен вернуть 200.
Lua-примеры (отправка ответа, получение входящих, обработка файлов) — см. полный Lua-скрипт в ../integrations/backend.md (раздел WhatsApp).
PHP-интеграция (вызовы из PHP)¶
Версия: v2.184+ (токены); до v2.184 — только cookie.
Cross-link. Заголовок
1FormaAuthи схема аутентификации описаны в../auth/admin.mdи../auth/backend.md. Специфика PHP:json_decodeдля токена и особенности curl.
Метод 1: токены (v2.184+)¶
// Получение токена
$authUrl = $formaUrl . "/app/v1.0/api/auth/token?login=" . $formaUser . "&password=" . $formaPwd;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $authUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Accept: application/json"]);
$result = curl_exec($ch);
curl_close($ch);
// ВАЖНО: json_decode ОБЯЗАТЕЛЕН — токен возвращается как JSON-строка в кавычках
$token = json_decode($result);
// Запрос к API
$url = $formaUrl . "/app/v1.0/api/info";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["1FormaAuth: " . $token]); // НЕ "Authorization: Bearer"
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
$result = curl_exec($ch);
curl_close($ch);
⚠️
Authorization: Bearer {token}→ всегда 401. Только заголовок1FormaAuth.
Метод 2: cookie (legacy, до v2.184)¶
$authUrl = $formaUrl . "/iOSClientServices/Auth.ashx";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $authUrl);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, "UserName=" . $formaUser . "&Pass=" . $formaPwd . "&IsDebug=1");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $result, $matches);
$cookies = [];
foreach ($matches[1] as $item) {
parse_str($item, $cookie);
$cookies = array_merge($cookies, $cookie);
}
curl_close($ch);
MS Office Online (webApps)¶
Версия: v2.257+ (требует перехода на .NET Core).
CustomSettings ключ OfficeOnlineEditor:
{"editor": "webApps"}
⚠️ Обязательное условие: в корневой папке веб-сервера должен существовать файл discovery:
C:\inetpub\wwwroot\DevTC\wopiБез этого файла редактор не откроется.
Параметры Web Apps задаются в sys_general_settings#webapps.
OnlyOffice CE (ограничения)¶
Версия: v2.257+.
Cross-link. Версионирование ключа
r7→onlyOfficeс v2.265 описано в../files/online-preview-troubleshooting.md. CustomSettings формат и персонализация — там же.
CustomSettings ключ OfficeOnlineEditor:
{"editor": "OnlyOffice", "settings": {"serverAddress": "https://domain/office", "allowedIPs": []}}
| Параметр | Описание |
|---|---|
editor |
OnlyOffice (v2.265+); r7 (v2.264 и ниже — только для Р7-Офис) |
serverAddress |
Адрес сервера OnlyOffice (например, https://domain/office/) |
allowedIPs |
Список разрешённых IP или подсетей (может быть пустым) |
appsettings.json R7.SecretKey — ключ для подписи запросов к Р7-серверу (минимум 32 символа). Требуется при OfficeOnlineEditor.editor=r7 или OnlyOffice для совместимых развёртываний:
"R7": { "SecretKey": "yourSecretKey" }
Ограничения OnlyOffice CE (критично)¶
⚠️ Лимит 20 одновременных сессий. При превышении все последующие подключения открываются только в режиме readonly.
⚠️ Кластеризация не поддерживается. Для кластеризации/отказоустойчивости/большой нагрузки — OnlyOffice Enterprise или Р7-Офис.
Требования к ресурсам (OnlyOffice CE)¶
| Пользователей | vCPU | RAM | Storage |
|---|---|---|---|
| < 100 | 1 | 4 GB | 40 GB |
| 100–200 | 2 | 4 GB | 80 GB |
| 200–400 | 4 | 4 GB | 160 GB |
1С — справочник XML-тегов¶
Теги начинаются с
1C(настройки 1С:Предприятие) илиTC(настройки 1Формы).
SyncSettings — общие настройки синхронизации¶
Атрибуты корневого тега синхронизации:
| Атрибут | Описание |
|---|---|
Name |
Имя настроек (отображается в списке) |
OneCAddress |
Адрес сервиса 1С:Предприятие |
OneCUserName / OneCPassword |
Учётные данные 1С |
TCAddress |
Адрес сервиса 1Формы |
TCUserName / TCPassword |
Учётные данные 1Формы |
TCSommentOnEpChange |
Публиковать комментарии об изменении ДП (true/false). ⚠️ Только в общих настройках, не в категориях |
GUIDExtParamID |
ID ДП типа «Текст» для хранения GUID записей 1С. ⚠️ При нескольких задачах в категории с одинаковым GUID обновляется только последняя по TaskID; новые не создаются |
UsersDic |
Название справочника пользователей в 1С |
UsersFilter |
Имя булева реквизита 1С для фильтрации пользователей. Если не указан, но указан UsersDic — синхронизируются все |
UsersFilterIn1Forma |
Если true — фильтрация на стороне 1Ф (позволяет фильтровать по виртуальным реквизитам), но значительно медленнее физических реквизитов 1С |
QueryRepeatTime |
Интервал проверки очереди (формат HH:mm:ss, например 00:05:00) |
TC1C_SyncLog |
Логирование первичной выгрузки: 0 — выкл., 1 — полные (default), 2 — только ошибки |
UpdateLookupsByGuids |
Синхронизация Lookup ДП по GUID (true/false) |
SendErrorCommentToTask |
Записывать комментарий в задаче и сообщение в лог при ошибке. Default: true (если опция не указана или пустая) |
ImportStrategy |
0 — только создание, 1 — только обновление, 2 — создание+обновление (default) |
SyncRecords / Record — настройки справочника¶
| Атрибут | Описание |
|---|---|
OneCDocName |
Системное имя справочника/документа в 1С |
OneCSynonym |
Псевдоним справочника/документа в 1С |
TCSubcatID / TCSubcatName |
ID/название категории в 1Ф |
SyncSource |
Источник данных (только источник может создавать задачи/документы): _1C / _TC / Both |
SyncDirections |
Направление: TwoSided / From1CtoTC / FromTCto1C |
DefaultActionOnError |
При ошибке входящего события: NotAssigned (игнорировать) / Ignore (только уведомить) / ForceAddToQuery (сразу в очередь) / AddToQuery (в очередь после первой ошибки) / Cancel (отклонить) |
DefaultNotificationOnError |
Способ уведомления при ошибке: NotAssigned / Comment (комментарий к задаче) / Alert (предупреждение) / Both |
DefaultErrorMessage / DefaultSuccessMessage |
Сообщения об ошибке/успехе по умолчанию (используются, если не указаны для конкретного события) |
SmartFilterID |
ID смарт-фильтра для отбора задач, отправляемых из 1Ф в 1С. 0 — фильтрация выключена |
DisableTaskTextSync |
true — тексты задач 1Ф не заменяются на тексты из 1С (default false) |
InboxQueueFlowId |
Опциональный flow для входящих документов (None по умолчанию). Подробнее — в 1c-entity-mapping.md |
Files — синхронизация вложенных файлов¶
Дочерний для Record тег. Управляет синхронизацией файлов между задачами 1Ф и реквизитами 1С.
| Атрибут | Описание |
|---|---|
CatalogName |
Имя справочника 1С, в котором хранятся вложенные файлы |
BinFileProperty |
Имя реквизита 1С с двоичными данными файла |
FileNameProperty |
Имя реквизита 1С с именем файла |
OwnerProperty |
Имя реквизита 1С со ссылкой на документ-владелец |
SyncDirections |
Направление синхронизации файлов: TwoSided / From1CtoTC / FromTCto1C |
ExtParamIDs |
Список ID ДП «Файл» в 1Ф, для которых выполняется обмен. Если в категории два ДП «Файл», но указан только один — обмен происходит только при работе с этим ДП; вложения в другие ДП и в общие вложения задачи не синхронизируются |
SyncExtParams / Property — маппинг реквизитов¶
| Атрибут | Описание |
|---|---|
RequisiteName / Synonym |
Системное имя и имя реквизита в 1С |
ExtParamID / ExtParamName |
ID/название ДП в 1Ф |
Type |
Тип ДП: Checkbox, Combobox, Date, DateTime, LookUpField, Money, Numerator, NumericValue, Select, Table, Text, TextArea, TextAreaWOFormat, URL |
RepresentAsReadonlyText |
true — передавать как текст, без выгрузки подчинённого справочника |
Event1C — события из 1С (7 типов)¶
| Событие | Описание | Action |
|---|---|---|
Create |
Создание документа | ChangeTask / ChangeToStatus / DeleteTask |
Modify |
Изменение | ChangeTask / ChangeToStatus / DeleteTask |
Post |
Проведение | ChangeTask / ChangeToStatus / DeleteTask |
ClearPost |
Отмена проведения | ChangeTask / ChangeToStatus / DeleteTask |
Repost |
Перепроведение | ChangeTask / ChangeToStatus / DeleteTask |
MarkDelete |
Пометка на удаление | ChangeTask / ChangeToStatus / DeleteTask |
UnmarkDelete |
Снятие пометки на удаление | ChangeTask / ChangeToStatus / DeleteTask |
EventTC — события из 1Ф¶
| Событие | Описание |
|---|---|
CreateTask |
Создание задачи |
ChangeTask |
Изменение ДП |
ChangeToStatus |
Переход в статус |
MakeStep |
Переход по маршруту |
DeleteTask |
Удаление задачи |
FileUpload / FileDelete |
Вложение/удаление файла |
EPFileUpload |
Загрузка файла в ДП |
CustomEvent |
Произвольное событие |
EventTC → действия в 1С¶
| Action | Описание |
|---|---|
Create / Modify |
Создать/изменить документ |
Post / ClearPost / Repost |
Провести/отменить проведение/перепровести |
Lock / Unlock |
Заблокировать/разблокировать |
MarkDelete / UnmarkDelete |
Пометить на удаление / снять пометку |
Связанные документы¶
../integrations/backend.md../integrations/data-flow.md../integrations/pt-sandbox.md../calendar/admin.md— EWS../localization/admin.md— Azure TranslateService (сценарий)../files/online-preview-troubleshooting.md— OnlyOffice CE, версионирование ключаr7→onlyOffice../auth/admin.md— PHP-интеграция, заголовок1FormaAuth../auth/backend.md— PHP-интеграция (json_decode, curl)../system/admin.md../mail/admin.md../../reference/database/dbadmin-forms-map.md