Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

1C_TELEPHONY_FAIL 1С:Предприятие и СУБД

Интеграция 1С с телефонией: SIP, Asterisk AMI и облачные АТС

Обновлено: 26.08.2026 · Официальная документация ↗

При интеграции 1С с IP-АТС возникают сбои:

  • Задержка появления карточки входящего звонка (клиент видит карточку уже после поднятия трубки).
  • Обрыв постоянного TCP-сокета Asterisk AMI при сетевых колебаниях или блокировке потока.
  • Невозможность сопоставить входящий номер телефона в формате +7, 8 или без кода страны с базой контрагентов.
  • Зависание интерфейса пользователя при инициации исходящего звонка (Click-to-Call).

1. Архитектура интеграции телефонии в 1С

Существует два основных подхода:

  • Облачные АТС (REST Webhooks / WebSocket): АТС присылает событие начала звонка на опубликованный HTTP-сервис 1С, который передает оповещение в сеанс менеджера через СистемуВзаимодействия.
  • Asterisk AMI (TCP Socket): Фоновое задание держит постоянное TCP-соединение с портом 5038 сервера Asterisk и парсит события Event: Newchannel, Event: Bridge.

2. Нормализация телефонного номера для быстрого поиска

&НаСервере
Функция НормализоватьНомерТелефона(ВходящийНомер)
    
    // Удаление всех нечисловых символов
    ОчищенныйНомер = "";
    Для Позиция = 1 По СтрДлина(ВходящийНомер) Цикл
        Символ = Сред(ВходящийНомер, Позиция, 1);
        Если СтрНайти("0123456789", Символ) > 0 Тогда
            ОчищенныйНомер = ОчищенныйНомер + Символ;
        КонецЕсли;
    КонецЦикла;
    
    // Приведение к 10-значному формату без префиксов 7/8
    Если СтрДлина(ОчищенныйНомер) = 11 И (Лев(ОчищенныйНомер, 1) = "7" ИЛИ Лев(ОчищенныйНомер, 1) = "8") Тогда
        ОчищенныйНомер = Сред(ОчищенныйНомер, 2);
    КонецЕсли;
    
    Возврат ОчищенныйНомер;
    
КонецФункции

3. Инициация исходящего вызова из карточки клиента (Click-to-Call)

&НаКлиенте
Процедура ПозвонитьКлиенту(НомерТелефона, ВнутреннийНомерМенеджера)
    
    НормализованныйНомер = НормализоватьНомерТелефона(НомерТелефона);
    ВыполнитьИнициациюЗвонкаНаСервере(НормализованныйНомер, ВнутреннийНомерМенеджера);
    
КонецПроцедуры

&НаСервере
Процедура ВыполнитьИнициациюЗвонкаНаСервере(НомерТелефона, ВнутреннийНомер)
    
    ПараметрыTLS = Новый ПараметрыЗащищенногоСоединенияOpenSSL();
    HTTPСоединение = Новый HTTPСоединение("pbx.company.ru", 443,,,, 5, Новый ЗащищенноеСоединениеOpenSSL(ПараметрыTLS));
    
    HTTPЗапрос = Новый HTTPЗапрос("/api/v1/call/originate");
    HTTPЗапрос.Заголовки.Вставить("Authorization", "Bearer PBX_API_SECRET_KEY");
    HTTPЗапрос.Заголовки.Вставить("Content-Type", "application/json");
    
    Тело = Новый Структура;
    Тело.Вставить("src", ВнутреннийНомер);
    Тело.Вставить("dst", НомерТелефона);
    
    Запись = Новый ЗаписьJSON;
    Запись.УстановитьСтроку();
    ЗаписатьJSON(Запись, Тело);
    
    HTTPЗапрос.УстановитьТелоИзСтроки(Запись.Закрыть());
    
    Попытка
        HTTPОтвет = HTTPСоединение.ВызватьHTTPМетод("POST", HTTPЗапрос);
    Исключение
        ЗаписьЖурналаРегистрации("АТС", УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
    КонецПопытки;
    
КонецПроцедуры
💡 Практика специалистов: Не используйте прямые синхронные вызовы внешних API телефонии в обработчиках событий форм. Используйте неблокирующие вызовы или фоновые задания, чтобы сбой внешней АТС не приводил к зависанию интерфейса пользователя.

Частые вопросы (FAQ)

Как передать событие входящего звонка конкретному пользователю в тонкий клиент?

Используйте встроенную Систему Взаимодействия 1С (метод 'СистемаВзаимодействия.ОтправитьСообщение()') или механизм внешних событий (ВнешнееСобытие() формы).

Почему поиск контрагента по номеру телефона тормозит?

Поиск по неиндексированной строке контактной информации сканирует весь регистр. Храните очищенный 10-значный номер в отдельном индексированном реквизите или регистре.

Как прослушивать записи разговоров прямо из интерфейса 1С?

Сохраняйте в документе/регистре звонка URL аудиозаписи, предоставляемый АТС, и воспроизводите его через встроенный объект HTML-документа с тегом <audio>.

Что делать при падении сессии Asterisk AMI по таймауту?

В фоновом потоке необходимо отправлять Ping-пакеты (Action: Ping) каждые 10-15 секунд и реализовывать автоматический Reconnect при обрыве TCP-сокета.

Полезные материалы
Рекомендуем