По многочисленным просьбам партнеров и клиентов мы выпустили серверную интеграцию 3CX v15.5 с популярной системой 1С: Предприятие.

Интеграция представляет собой расширение типовой конфигурации  «Управление торговлей, редакция 11 (11.4.3.167) для России» (файл .cfe), которое устанавливается в конфигурацию стандартным способом (см. ниже). Со стороны сервера 3CX загружается CRM-шаблон для взаимодействия с веб-сервисом опубликованной конфигурации 1С.

Расширение конфигурации 1С: Управление торговлей реализует REST API, который сопоставляет номера входящих вызовов с номерами контрагентов в 1С. Когда в 3CX поступает вызов, она через REST запрашивает у 1С данные контрагента, связанные Caller ID абонента. Если контрагент найден, его данные добавляются в Контакты 3CX и отображаются в веб-клиенте 3CX (имя и фамилия).

Если в 3CX включено журналирование вызовов (Enable call journaling), 1С будет вести журнал вызовов в 1С.

Требования к конфигурации 1С: Предприятие


Для использования расширения необходима версия платформы 1С: Предприятие не ниже 8.3.11. Типовая конфигурация «Управление торговлей, редакция 11» (11.4.3.167) поставляется в режиме совместимости с платформой 8.3.10. Для использования расширения 3СХ необходимо установить режим совместимости конфигурации в значение Не использовать. Если конфигурация находится на поддержке, то следует включить возможность изменения конфигурации.

Продемонстрируем это на скриншотах:

В Конфигураторе 1C перейдите в раздел Конфигурация — Поддержка — Настройка поддержки.



Нажмите кнопку Включить возможность изменения и во всплывающем окне подтвердите выбор.



В окне Настройка правил поддержки выберите Объекты с правилом «Изменения разрешены» — Объект поставщика редактируется с сохранением поддержки и Объекты с правилом «Изменения не рекомендуются» — Объект поставщика не редактируется.



Кликните правой кнопкой мыши по корневому разделу Управление Торговлей, выберите Свойства и установите Режим совместимости — Не использовать.



Выберите Конфигурация — Обновить конфигурацию базы данных.



И нажмите Принять для завершения изменений.



Подключение расширения для взаимодействия с 3CX


Закройте Конфигуратор и запустите конфигурацию 1С в режиме Предприятие. В верхнем левом меню выберите Все функции…



Выберите пункт Управление расширениями конфигурации.



Убедитесь, что установлена Область действия при установке расширения конфигурации — Информационная база, нажмите кнопку Добавить и добавьте расширение, указав файл 3cx1cextension.cfe из архива.



После установки расширения, вкладка Управление расширениями конфигурации должна выглядеть, как показано ниже.



Публикация HTTP-сервиса расширения 1С: Предприятие на веб-сервере


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


Выполняя публикацию, установите опцию Публиковать HTTP-сервисы расширений по умолчанию.



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

Рассмотрим это на примере веб-сервера IIS:

В каталоге публикации найдите файл default.vrd.



Измените в нем строку подключения, добавив учетные данные пользователя, от имени которого база данных будет отвечать на HTTP-запросы. Строка подключения должна выглядеть примерно так.



Установка XML-шаблона CRM 1С: Предприятие в 3CX


Откройте интерфейс управления 3CX и перейдите в раздел Параметры — CRM-интеграция — вкладка На стороне сервера.

В разделе Доступные CRM интеграции выберите 1С и нажмите Загрузить выбранное.



Затем в  поле Domain Part укажите URL опубликованного HTTP-сервиса конфигурации 1С.
Для учета вызовов в 1С включите опцию Enable call journaling.


Возможности интеграции 1С: Предприятие c 3CX


Как было сказано выше, расширение сопоставляет входящие Caller ID с номерами контрагентами в базе 1С. Если совпадение найдено, веб-клиент 3CX покажет имя и фамилию вызывающего абонента.

Учет вызовов в 1С


Если в CRM-шаблоне включено журналирование вызовов, 1С будет вести журнал входящих и исходящих вызовов со следующими параметрами:

  • Дата вызова
  • Тип вызова: входящий / исходящий / пропущен внутренним абонентом / нет ответа внешнего абонента
  • Длительность вызова
  • Номер внешнего абонента (Caller ID)
  • Номер внутреннего абонента (добавочного номера 3CX)
  • Контрагент 1С (если найдено соответствие)



В журнале вызовов вы можете задавать условия отбора и сортировки по интересующим вас столбцам, чтобы быстро анализировать ситуацию пропущенными или несостоявшимися вызовами в организации.



Технический журнал взаимодействия 3CX и 1С


Технический журнал 3CX ведет лог всех обращений 3CX к 1С через REST API.



Этот журнал может использоваться для диагностики администратором или программистом 1С.



Загрузки и документация



Часто задаваемые вопросы


  1. Что происходит, если клиент не найден? В данный момент платформа 1С не имеет возможности вызывать форму добавления нового клиента по HTTP-ссылке.
  2. Если контакт отображается в веб-клиенте, можно ли открыть его полную карточку в 1С? В данный момент платформа 1С не имеет возможности вызывать карточку клиента по HTTP-ссылке.
  3. Можно ли сделать исходящий вызов из тонкого или толстого клиента 1С? Это возможно, но для этого должна быть реализована соответствующая поддержка со стороны 3CX REST API.
  4. Можно ли переадресовать вызов из 1С или реализовать связку «клиент — закрепленный менеджер»? Это возможно, но для этого должна быть реализована соответствующая поддержка со стороны 3CX REST API.
  5. Можно ли реализовать панель оперативного мониторинга (панель телефонии) вызовов в 1С? В данный момент при входящем вызове 3CX передает только Caller ID абонента без вспомогательной служебной информации (например, занятости конкретной линии, добавочного номера получателя вызова и т.п.). Дополнительная служебная информация передается уже после завершения вызова. Кроме того, панель мониторинга предполагает взаимодействие пользователя с вызовами, но для этого требуется поддержка со стороны 3CX REST API.
  6. Можно ли увидеть пропущенные вызовы в карточке контрагента? Используйте Журнал вызовов в 1С, который реализует расширение. В нем вы можете быстро отобрать интересующих вас контрагентов.

Комментарии (27)


  1. ZEEGIN
    16.09.2018 07:05

    Для использования расширения 3СХ необходимо установить режим совместимости конфигурации в значение Не использовать.

    Кажется такие фееричные идеи уже обсуждались на партнерском форуме в ветке БСП:
    https://partners.v8.1c.ru/forum/t/1747505/m/1747619


    Цитирую:


    Апресов Игорь (1С, Москва): Мы никогда не меняем режим совместимости просто так — это большой техпроект в котором анализируются изменения, дорабатывается конфигурация, пишется методика по переходу.

    Я могу Вам посоветовать подождать выхода УТ на версии платформы 8.3.12, но уж точно предлагать пользователям ломать их информационные базы не следует.


    1. capitannemo
      16.09.2018 10:58

      Ничего страшного при установке режима совместимости конфигурации в значение Не использовать не случится.
      Проверено не единожды.
      1С этого не делает совсем по другим причинам в частности потому что всем придется менять в срочном порядке разработанные и действующие расширения.


      1. Necessitudo
        16.09.2018 11:39

        В смысле ничего страшного? А ничего что меняется поведение у объектов? Если вы используете две с половиной формы то это не значит что у всех так.


      1. ZEEGIN
        16.09.2018 11:43

        Режим совместимости был задолго до появления расширений. Кстати, у расширений режим совместимости свой, в добавку к режиму совместимости конфигураций.


        В режиме совместимости платформа меняет свое поведение. Смотрите документацию здесь
        https://its.1c.ru/db/v8313doc#bookmark:dev:TI000001242: особенность%20режима%20совместимости


        Каждую конфигурацию при смене режима требуется дорабатывать, смотрите методику отказа от режима совместимости:
        https://its.1c.ru/db/metod8dev#content:5293:hdoc:_top: методика%20по%20переходу%208.2%20без%20режима


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


        Конкретно с Вашими доработками ничего страшного не случится, ведь Вы их, надеюсь, отладили в новом режиме, а весь остальной типовой код? У вас нет возможности перезапустить все тесты по всем подсистемам и гарантировать, что все работает точно так же. А если бы была возможность, Вы бы ужаснулись количиству проблем.


        Например, появился в платформе нативный метод ПобитовоеИ и ПобитовоеИли, который отдельно был реализован в контактной информации БСП. При запуске в режиме совместимости 8.3.10 платформа все новшества отключает, а при снятии — отваливаются все формы на которые выведена контактная информация, потому что идет конфликт имен методов глобального контекста. И это только самый простой пример, коих тысячи.


        1. capitannemo
          16.09.2018 22:11

          Все смешалось в доме Облонских… и мухи и котлеты.
          Necessitudo можно в принципе не отвечать, он сразу перешел на личности.
          Видимо он использует три формы и поэтому конечно круче.
          Но уважаемый ZEEGIN потратил столько букв и в целом букв правильных, но не заметил главного — разработчики 3СХ просят установить режим совместимости конфигурации в значение Не использовать.
          Это значит все возможности платформы используются по максимуму.
          В частности им нужно расширение общих модулей по видимому.
          Обычным вменяемым людям еще раз посоветую не слушать мнение экспердов и спокойно отключать.
          Есть реальные примеры не маленьких организаций где это сделано и все работает штатно.
          И на 8.3.12 в том числе уже давно.


          1. capitannemo
            16.09.2018 22:18

            Да более того, кто реально работает с УТ, а не в теории, и обновляет ее, знает что давно уже рекомендованная 1С платформа для УТ это 8.3.12


            1. ZEEGIN
              16.09.2018 22:58


              Версия УТ 11.4.6, которая сейчас заявлена следующей, в списке проектов в анонсе было обновление БСП до версии 3.0.1, которое работает в режиме 8.3.12 с отключенным режимом совместимости. Чтобы использовать возможности платформы по максимуму надо дождаться выпуска 11.4.6.
              Бухгалтерия, кстати, уже публичную бета выложила 3.0.65, в которой обновила БСП до 3.0.1 и перешла на 8.3.12. Наверное на неделе выпустятся.


          1. ZEEGIN
            16.09.2018 22:48

            Режим совместимости конфигурации в значение Не использовать будет в разных версиях конфигурации разный. Поставьте режим Не использовать в конфигураторе версии 8.3.10, а потом откройте эту же конфигурацию в конфигураторе версии 8.3.11. Что Вы увидите? Режим совместимости, который Вы поставили в Не использовать вдруг стал режимом совместимости 8.3.10.


            А еще можно сделать выгрузку конфигурации в xml из версии 8.3.10 с включенным режимом Не использовать и посмотреть ноду в файле описания конфигурации, что будет в файле? Режим совместимости 8.3.10.


            Это дурацкая неоднозначность платформы, которая многими не правильно понимается. Не использовать, это значи режим той версии, который сейчас запущен.


            Вот сейчас платформа выпустила бета-версию 8.3.13, смотрите апдейт:
            http://downloads.v8.1c.ru/content//Platform/8_3_13_1472/1cv8upd_8_3_13_1472.htm
            Особенно внимательно на фрагмент Изменения, влияющие на поведение системы. Если эти изменения платформы не отработать в типовой конфигурации, то она будет работать не ожидаемо. А отработаны они будут только тогда, когда будет выпущена официальная версия от 1С.


    1. capitannemo
      16.09.2018 21:59

      Молодцы что сделали интеграцию.
      Многие клиенты мечтают о таком.
      В данный момент платформа 1С не имеет возможности вызывать форму добавления нового клиента по HTTP-ссылке — вопрос спорный.
      Смотрите как в УНФ сделано ;)
      Буду следить за обновлениями.


  1. snezhko Автор
    17.09.2018 00:01

    Существуют 3 подхода к реализации интеграции. 1. Изменение типовой конфигурации программистом. 2. Слияние конфигураций. 3. Использование расширения, как сделали мы. Поскольку 3CX позиционируется как коробочное решение, которое должен поддерживать сисадмин без специальных навыков программирования в 1С — мы сделали все plug&play. На наш взгляд, это гораздо надежнее, чем ковыряние в конфигурации человеком без специальных навыков.


    1. ZEEGIN
      17.09.2018 01:00

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


      Профессионально поступить: это сказать, что ваше расширение требует режима совместимости не меньше 8.3.11, УТ с этим режимом ожидания в октябре.


      Например так написал автор Gitter'а, который сделал расширение для СППР с расширением данных:
      https://github.com/JohnyDeath/GitterExtForSPPR


  1. snezhko Автор
    17.09.2018 00:07

    Таким же способом мы сделаем расширения и для других типовых конфигураций.
    В нашем расширении используется расширение данных — привносятся регистры сведений, а эта технология появилась только начиная с 8.3.11. wonderland.v8.1c.ru/blog/rasshirenie-dannykh
    Насчет ссылок открытия карточки клиента — спасибо большое, вопрос внимательно изучаем.


  1. capitannemo
    17.09.2018 10:49

    Смотрите какая получается история.
    3CX сделали крайне полезное расширение, я подозреваю проверили его на людях.
    Даже если не проверили — знаю организации работающие в таком режиме без проблем.
    Но приходит уважаемый ZEEGIN и говорит — Ужас, ужас, кранты тому кто так сделает.
    А в чем ужас собственно?
    Я вот например застал время, когда не было интернета и тогда люди отвечали за свои слова.
    Поэтому предложил бы уважаемому ZEEGINу выложить здесь принтскрин конкретного примера, когда изменение режима совместимости помешало штатной работе конкретной организации.
    А так то писать буквы каждый может.
    Я как разработчик регулярно сталкиваюсь с комментариями экспердов, что типа ужас вообще устанавливать что-то из интернета.
    Но они то хотя бы приводят в пример бабу Нюру, которая скачала с интернета программу и теперь с калькулятора пишет.


    1. snezhko Автор
      17.09.2018 12:49

      Уважаемый capitannemo, если не трудно, приведите ссылку на работу с URL в 1С: УНФ. Насколько я знаю, 1С использует внутренние навигационные ссылки, и мы не можем пока понять, как их преобразовать в http формат.


      1. capitannemo
        17.09.2018 21:53

        Не понял вопроса. Как в УНФ сделано:


        1. snezhko Автор
          17.09.2018 22:22

          Вы показали только внешнее исполнение, а меня интересует, как это сделано внутри конфигурации. Если честно, я вообще не увидел тут работу с ссылками, о которых сказано в нашей документации. Кроме того, в показанном ролике ничего не говорится о параметрах, которые передает виртуальная АТС, например, Mango, в 1С.
          Ещё раз обращу внимание, что 3CX передает в 1С только номер телефона и больше ничего. Поэтому невозможно открыть всплывающую карточку внутри 1С (кому ее открывать?) — это делает веб-клиент 3CX.
          Другие CRM на запрос от 3CX возвращают не только ФИО клиента, но и URL его карточки. Вы знаете, как это сделать в 1С? Как получить внешнюю URL или другой идентификатор карточки контрагента?


          1. ZEEGIN
            17.09.2018 23:24

            В документации
            Форматы навигационных ссылок


            <адрес хоста ИБ>#<внутренняя ссылка>


            <адрес хоста ИБ> = ПолучитьНавигационнуюСсылкуИнформационнойБазы()


            <внутренняя ссылка> = e1cib/data/<путь к метаданным>?ref=<идентификатор ссылки>
            <идентификатор ссылки> = СправочникСсылка.<Имя справочника>.УникальныйИдентификатор()


            Например,
            e1c://filev/C/1c/db/trade/master#e1cib/data/Справочник.Партнеры?ref=aca00015e9b8c48d11dd4412f8fa030d



          1. capitannemo
            18.09.2018 09:41

            Ваша ошибка, как и ZEEGINа, что вы пытаетесь по первым словам понять о чем идет речь.
            В ролике про УНФ говорится о стыковке с 50+ провайдерами облачной телефонии.
            CRM там вообще не при чем.
            Провайдер отдает номер телефона — 1С поднимает карточку клиента если находит по номеру в базе, если нет — предлагает создать.
            Потратьте 30 мин и посмотрите как работает. Демо есть в онлайн доступе.
            Единственное что они через систему взаимодействия решают.


            1. snezhko Автор
              18.09.2018 10:32
              +1

              Давайте ответим на простой вопрос — у кого конкретно я должен поднять карточку клиента, если 3CX не передает внутренний номер пользователя при входящем вызове? Об этом я написал в Вопросах и ответах, вопрос № 5. Чтобы реализовать так, как сделано в УНФ, REST API 3CX должно отдавать больше оперативной информации в момент прохождения вызова. И тогда все будет, как вы хотите.


              1. capitannemo
                18.09.2018 19:31

                По номеру телефона ищете клиента — у клиента есть свойство основной менеджер — у менеджера есть контактная информация — свойство телефон
                ctrlv.cz/shots/2018/09/18/ZDfb.png
                ctrlv.cz/shots/2018/09/18/0lzm.png


                1. snezhko Автор
                  18.09.2018 19:35

                  Правила распределения входящих вызовов в 3CX могут быть совсем другими.


    1. ZEEGIN
      17.09.2018 13:37


      1. capitannemo
        17.09.2018 21:46

        Теперь хотя бы стало понятно о чем речь.
        Это скорее косяк разработчиков — назвать функцию модуля именем встроенной и их всего три на конфигурацию
        image
        Если следовать методике разработки она должна была называться ВыполнитьПобитовоеИ() и тогда бы со встроенной не пересеклась.
        В типовых конфигурациях таких ляпов достаточно.
        Включали НЕ использовать — вот так
        image


        1. ZEEGIN
          17.09.2018 21:48

          Лол, как можно так тупить.
          В версии 8.3.10 не было ПобитовоеИ, в версии 8.3.12 есть ПобитовоеИ.
          В версии 8.3.10 не конфликтует. В версии 8.3.12 конфликтует.
          Не надо менять режим совместимости чтобы не допускать возможных конфликтов.
          У разработчиков типовой все в порядке. Они заявили что работает в 8.3.10. В 8.3.10 она и работает. В 8.3.12 работу никто не обещал.


          1. capitannemo
            18.09.2018 09:50

            Воистину Лол, как можно так тупить.
            Нужно придерживаться стандартов разработки тогда имена функций и не пересекутся со встроенными.
            В типовых — таких примеров куча — то переменную назовут Объект, то ЭтотОбъект
            А подпирать свои косяки режимом совместимости это великий костыль.

            its.1c.ru/db/v8std#content:2149184296:hdoc
            6.4. В имени функции рекомендуется использовать глаголы в неопределенной форме в тех случаях, когда для понимания назначения функции важно, каким образом было получено возвращаемое значение. Например:

            Функция ВыбратьДанныеПоПравилу(Правило, ПользовательскиеНастройки)
            Функция ПреобразоватьДанныеПоПравилу(НаборыДанных, ПараметрыПреобразования

            Чтобы как то развлечь себя — сходите на сайт битрикс и посмотрите интеграцию с УТ 10. Там прямо сказано — поднять режим совместимости конфигурации. И ничего, никто не умер.
            А Битрикс — это по сути часть 1С.


            1. ZEEGIN
              18.09.2018 09:58

              Наверное разработчикам конфигурации надо быть экстарасенсами, чтобы угадать как в новой версии платформы будет назван какой-нибудь новый метод.


              Конфигурацию рассчитанную на работу с 8.3.10 писали в 2016 году. 8.3.12 появилась в 2017 году. Как разработчики могли в 2016 узнать имя метода, которое появилось в 2017?


              Дайте ссылку на документацию битрикс, я им напишу об ошибке у них.


            1. Necessitudo
              18.09.2018 19:24
              +1

              «Придерживаться стандартов разработки» — именно это можно сказать моему работодателю когда я сниму режим совместимости и буду еще пару-тройку месяцев вылавливать по конфигурации ошибки?
              Я вам даже больше расскажу — если я буду сначала работать в 8_3_10 без режима совместимости, а потом перейду на 8_3_12, при этом поставив режим совместимости с 8_3_10, то даже в таком случае я словлю немало всякого интересного. И знаете кто будет за это отвечать? Думаете фирма 1С?:)