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

Vadim Atamanenko

Project manager, Senior Software Engineer

Предыстория

В один из суетливых дней на пороге отдела разработки появился технический директор с горящими глазами и предложением нового проекта, который нужно разработать и внедрить. Желательно не «через год», а в разумные сроки.

По результатам обсуждений собрали основной бриф:

  • Разработать систему по регистрации новых абонентов и созданию бизнес-процессов по их подключению с проведением процесса по всем нужным отделам в компании.

  • Разработать систему по отключению существующих абонентов и созданию бизнес-процессов по их отключению с проведением процесса по всем нужным отделам в компании.

  • Разработать систему оповещения о плановом проведении ремонтных работ на линиях.

  • Разработать систему регистрации поступающих заявок от абонентов.

  • Автоматизировать систему расчётов для абонентов телекоммуникационных услуг.

  • Провести интеграцию с банковским ПО для приёма и обработки платежей от абонентов в системе бухгалтерского учёта.

За основу был взят следующий стек технологий и инструментов:

  • Система бухгалтерского учёта на платформе 1С Бухгалтерия, Управляемые формы.

  • 1С Битрикс24 – как инструмент для использования механизма бизнес-процессов и уведомлений для абонентов.

  • IIS (Internet Information Services), встроенный компонент серверных ОС на платформе Windows Server, – как инструмент для того, чтобы развернуть внешний web-сервис.

  • Postman – как инструмент для тестирования запросов.

Приступаем к реализации

На стороне 1С

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

Процесс занял некоторое время. От согласования с отделом бухгалтерии до финальной реализации прошло около двух недель.

На стороне Битрикс24

Далее переходим к настройке документооборота и CRM-системы на платформе Битрикс24. Тут начинается самое интересное:

  • При подключении нового абонента оператор со стороны 1С заполняет заявку на подключение, далее эта заявка попадает по протоколу REST в систему Битрикс24 и инициирует запуск бизнес-процесса, по которому задействуются нужные отделы и сотрудники (определение необходимости закупа оборудования, контроль оплат, распределение по командам монтажных бригад, финальный монтаж и подписание документов о передачи оборудования абоненту). После закрытия заявки абоненту приходит SMS-уведомление об успешном подключении к сервису. Заявка закрывается.

  • При поступлении заявки от абонента об отключении от услуги или подключении к другому тарифу оператор вносит эти данные со стороны 1С. Далее заявка попадает в Битрикс24 на контроль в отдел бухгалтерского учёта и при отсутствии задолженности происходит распределение по монтажным бригадам, которая производит демонтаж и подписывает необходимые документы.

  • Аналогичным образом настроены механизмы оповещений и обработки входящих заявок от абонентов. Автоматизированный расчёт стоимости происходит на стороне 1С. Если рассказать кратко, то при групповом формировании документов начисления для абонентов из базы 1С данные в Битрикс24 поступают через протокол RESTAPI. Далее  запускается бизнес-процесс системы оповещений через SMS о необходимости внесения оплат с контролем оплаты. В том случае, если от абонента не поступает реакции, разработана система уведомлений и, как крайний шаг, задача на отключение.

Интеграция с мобильным приложением банка

Далее переходим к интеграции с банковском ПО. После недолгих переговоров с местным отделением банка, в котором открыт счёт, пришли к соглашению. Банк добавляет в приложение нашу компанию в список сервисов. При переходе абонент вводит свой ИНН и получает текущую сумму, которую нужно оплатить.

Запускаем Web-сервис

На стороне 1С разработали HTTP-сервис, имеющий в себе два основных метода:

Существующие методы web-сервиса
Существующие методы web-сервиса

GetCustomerInfo – отвечает суммой задолженности абонента по ИИН.

PostCustomersInfo – получает методом POST от банка информацию о успешной транзакции и вводе в базу 1С входящего платёжного поручения.

Содержание обработчика GetCustomerInfo в 1С:

Содержание обработчика GetCustomerInfo на стороне 1С
Содержание обработчика GetCustomerInfo на стороне 1С

Публикация web-сервиса ничем особым не примечательна, да и прошла без особых проблем. Вуаля, сервис работает.

Логика получилась следующая:

  1. Абоненту поступило SMS-уведомление о необходимости оплаты.

  2. Он переходит в приложение банка, вводит свой ИИН, получает сумму для оплаты, производит оплату.

  3. В базу 1С попадет уже полностью заполненное платёжное поручение.

В логику проведения платёжного поручения внесён дополнительный исполняющий код, использующий фишку WebHooks от Битрикс24, позволяющую сместить стадию сделки в статус «Оплачено» и, соответственно, прекратить контроль оплаты по выставленной квитанции.

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

На выходе получаем следующий готовый кейс:

  1. Автоматизированная обработка поступающих заявок от абонентов.

  2. Автоматизированный расчёт стоимости услуг и контроль оплат по ним.

  3. Автоматизированная система приёма и разноски оплат в системе 1С Бухгалтерия.

А как вы автоматизируете процессы?

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


  1. Old_Chroft
    24.07.2021 23:03

    После недолгих переговоров с местным отделением банка, в котором открыт счёт, пришли к соглашению. Банк добавляет в приложение нашу компанию в список сервисов.

    Вот если не вот этот момент - все остальное не тянет на уровень хорошей студенческой дипломной работы.


    1. V_Atamanenko Автор
      25.07.2021 06:35
      +1

      Не всегда задачи поступающие из внутрикорпоративных проектов тянут на профессорские диссертации :) Что поступает, то и реализуем :)


      1. Old_Chroft
        25.07.2021 11:53

        Так и есть - бОльшая часть именно "банальщина". А остальное... после того так все сделано - тоже кажется банальщиной :)

        Я нисколько не хочу принизить важности вашей работы - все сделано правильно: поступила задача, которую невозможно сделать в рамках одной подсистемы - вместо нытья "это невозможно" вы нашли способ увязать несколько.

        Что делал я? Ну, навскидку:

        • Отправлять SMS-уведомления сотрудникам из 1С (а она не всегда это умела): пришлось городить виртуалку с web-сервером и скрипт на PHP который ловит сообщение из 1С и отправляет его на USB-модем с симкой, который в свою очередь и рассылает сообщения...

        • Подключить 1С к СКУД, вытащить с неё данные о приходах/уходах сотрудников и автоматически сформировать табеля учета рабочего времени...

        • Так же через web-сервер получать из производственных цехов данные о расходе сырья и в 1С формировать соответствующие документы...

        ... все это банальщина, которая хороша для резюме, но не для технической статьи: ну да, круто - я "скрестил ужа с ежом", но действия каждого "кусочка" этих систем не выходили за рамки штатных возможностей, я лишь выстраивал их в нужном порядке (ну и писал код, который из сырых данных делал нужные. Но это вообще скукота на несколько сотен строк).


        1. V_Atamanenko Автор
          25.07.2021 12:41

          Все в нашем мире относительно :)

          Примеров реализаций задач за мою практику в 20 с лишним лет множество и к этому уже относишься как более лояльнее, надо сделать, ок сделаем.

          Технические статьи будут позже, а эта статья была всего лишь пробой/наброском в песочнице ;)


    1. V_Atamanenko Автор
      25.07.2021 07:08
      +1

      Но я буду рад, если вы поделитесь историей о запуске внутрикорпоративного проекта который разработали, запустили. Проект, который оптимизировал внутренние процессы и рабочее время сотрудников в компании..... и претендующего на уровень хорошего студенческого проекта и выше :)


  1. V_Atamanenko Автор
    25.07.2021 06:40

    1. К сожалению БП в 1С не обладают той же гибкостью, как БП в Битрикс24, для примера WebHook этим можно перекрыть большинство взаимодействий.

    2. Битрикс24 в компании является CRM инструментом на текущий момент с уже довольно развитым функционалом, который расширяется от задачи к задаче.


  1. Naf2000
    27.07.2021 00:08

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

    Мы не рискуем до сих пор объекты структуры базы данных располагать в расширении. То есть делаем по принципу - структуру меняем в основной конфигурации, код логики и интерфейс в расширениях


    1. V_Atamanenko Автор
      27.07.2021 08:32

      Размещение функционала в расширении уже давно используется в таком формате

      1. Менять структуру в основной конфе ок, но с периодикой выхода типовых обновлений, раз-два в месяц, это становиться проблемой. Поэтому выбран такой путь с отсутствием проблем при типовых обновлениях.

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

      3. На моей памяти каких то нерешаемых проблем с применением и использованием расширений не было. Применяемый функционал довольно широкой, от новых Документов, до использования WEB сервисов и прочего.


      1. Naf2000
        27.07.2021 19:33

        Добавление новых метаданных не мешает обновлению. А вот отключение расширения отключит и метаданные


        1. V_Atamanenko Автор
          28.07.2021 17:03

          Дело в том, что не всегда это так (по поводу не мешает) - тк порой уровень «обновляторов» бывает ну очень разный.

          А для чего отключать расширение?


          1. Naf2000
            29.07.2021 07:27

            Оно может само отключиться, если войдет в противоречие с основной конфигурацией или другими расширениями


            1. V_Atamanenko Автор
              30.07.2021 15:46

              Все зависит насколько глубоко затрагивать существующие объекты типовой базы.


      1. Naf2000
        29.07.2021 10:38

        Права до сих пор в типовых не дружат с метаданными в расширениях

        Особенно при использовании RLS


        1. V_Atamanenko Автор
          30.07.2021 15:47

          От механизма RLS стараемся держатся подальше при использовании их в расширениях, да и как правило обходится без них