Интеграция с 1С

Skip to end of metadata
Go to start of metadata
Вы просматриваете старую версию данной страницы. Смотрите текущую версию. Сравнить с текущим  |   просмотр истории страницы

Требования

  • 1С Предприятие 8.x
  • Конфигурация "Бухгалтерия предприятия, редакция 2.0" или "Бухгалтерия предприятия, редакция 3.0"

Для работы обработки 1С Предприятие 8.3 необходимо запускать "Толстый клиент (обычный режим)"

Общая информация

В составе АСР имеется модуль для синхронизации платежей и актов по контрагентам. Вы можете загрузить его в разделе "Помощь" Вашего биллинга.

Интеграция 1С построена реализована на Системном API.

Логи API запросов от 1С обработчика к биллингу можно посмотреть в файле:
cat /app/asr_billing/var/log/admin_web_server.log | grep api_1c

Настройка интеграции биллинга с 1С

Время выполнения инструкции: 10-15 минут.

1. Настроить доступ к API биллинга

  1. Откройте страницу Настройки -> Настройки в файле -> network, укажите IP-адреса компьютеров, с которых планируется выполнять синхронизацию 1С в поле "Список IP для которых разрешено подключаться к системному API"
    Вводить адреса нужно через пробел.
    Если биллинг и компьютеры с 1С находятся в разных подсетях, вероятно клиентские запросы будут проходить NAT-трансляцию - в таком случае укажите конечный IP-адрес с которого будут приходит обращения к биллингу

    В этом же меню Вы можете узнать и задать пароль доступа к API, он потребуется Вам в дальнейшем в интерфейсе обработки 1С.

    Старайтесь использовать в паролях только латинский алфавит, подчеркивания и цифры. Кириллицу и спецсимволы лучше не использовать, они могут некорректно обрабатываться или передаваться.
    Например:
    • Подходящий пароль: zBxnaRBrxM_27dJHW
    • Нерабочий пароль: D1kfGbdE#%A0d

  2. После добавления адресов, нажмите кнопку "Сохранить" и выполните следующую команду в консоли:
    chroot /app/asr_billing/
    /etc/init.d/admin_web_server restart
    

2. Скачать обработку на ПК с 1С.

Заходите в администраторскую панель Помощь -> Cписок онлайн документации

3. Обязательно сделайте копию БД 1С и сначала проверяйте на ней!

Копию может сделать Ваш системный администратор.

4. Пометить в БД старые операции, которые не нужно синхронизировать

В примере отмечены все операции, однозначно не синхронизированные ранее (sync1c<>1), включая только приходы и акты (op_type<=2), созданные до 1 мая 2019 года (op_date<'01.05.2019'). При необходимости Вы можете изменить параметры фильтра.

sqlexec "set list; select op_id from finance_operations where sync1c<>1 and op_type<=2 and op_date<'01.05.2019'" | awk '$2{print $2}' | while read opid; do curl "http://169.254.80.82:8082/rest_api/v2/FinanceOperations/" -d 'method1=objects.get&arg1={"pk":'$opid'}&method2=set&arg2={"sync1c":1,"code1c":"old"}&method3=save'; done

5. Отладка

Сделать тестовую группу, завести тестовых абонентов.

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

Очистите предыдущие тестовые синхронизации, если нужно:

Сбросить синхронизацию абонентов
sqlexec "update abonents set SYNC1C=0, CODE1C=''"
Сбросить синхронизацию актов
sqlexec "update FINANCE_OPERATIONS set SYNC1C=0, CODE1C=''"

После очиски синхронизации перезапустите веб интерфейс биллинга командами

chroot /app/asr_billing/ service memcached restart
chroot /app/asr_billing/ service admin_web_server restart

6. Тестирование

Пробовать работать с модулем синхронизации на реальной БД 1С, предварительно сделав резервные копии БД 1С и БД Carbon Billing 5.

В нашем обработчике синхронизация абонентов в биллинге с контрагентами в 1с происходит по полю ИНН в 1с и реквизиту ИНН в биллинге.

При успешной синхронизации абонента будет заполнено поле "Код в 1С". Дальнейшие синхронизации финансовых операций будут производиться по этому коду.

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

Совместимость с 1C:Fresh

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

Работа с модулем

Столбец "Выгружать" - выгрузка данных из 1С в биллинг.
Столбец "Загружать" - загрузка данных из биллинга в 1С.

Чтобы открыть обработку в 1С, выберите меню "Файл" -> "Открыть" и укажите путь к обработке.

  • Период с:, По: - даты для фильтрации операций при выгрузке или загрузке.
    • Чтобы загрузить данные за месяц укажите даты с 1-го по 1-е число.
    • Загрузка актов происходит по дате окончания периода - finance_operations.period_end_date. Чтобы загрузить акты за месяц, так же укажите даты с 1-го по 1-е число.
  • Пароль к системному API: - задается в биллинге
  • Адрес сервера: - адрес сервера биллинга
  • Организация: - необходима для создания Абонентов в 1С
  • id группы - это id группы(или единственного абонета) в биллинге, по которым будут проведены операции
    Узнать ID группы можно в адресной строке браузера.
  • Загружать контрагентов - создаст в 1С котрагентов
  • Загружать ПКО - загружает операции с типом "Приход" в 1С.
    Операции будут выгружены по синхронизированным с 1С контрагентам. Механизм загрузки следующий:
  1. Обработчик запрашивает с биллинга все операции с типом "Приход" без выставленного флага "sync1c" и загружает их в 1с
  2. Обработчик выставляет у операции в биллинге флаг sync1c и добавляет code1c данной операции. Код состоит из года и номера операции
  • Загружать акты - загружает операции с типом "Акт" в 1С по синхронизированным с 1С контрагентам

    Акты загружаются в 1С с опцией "НДС включено в сумму"

    * *Выгружать ПКО* - создает в биллинге операции с типом "Приход" у синхронизированных с 1С абонентов.
    * *Выгружать выписки* - создает в биллинге операции с типом "Приход" у синхронизированных абонентов по платежным поручениям из 1с.
    
    Все действия обработки проводятся по абонентам или финансовым операциям ранее не синхронизированым с биллнгом. Пустые поля sync1c и code1c.
    
    h3. Как сопоставить абонента в биллинге и в 1С
    
    * Биллинг:
    !Интеграция 1С, абонент в биллинге, основные поля.png|border=0,width=1000!
    !Интеграция 1С, абонент в биллинге, учетная запись.png|border=0,width=300!
    !Интеграция 1С, абонент в биллинге, код в 1С.png|border=0,width=470!
    
    * 1С
    !Интеграция 1С, абонент в 1С, общие.png|border=0,width=450! !Интеграция 1С, абонент в 1С, адреса и телефоны.png|border=0,width=450!
    !Интеграция 1С, абонент в 1С, счета и договоры.png|border=0,width=450!
    
    
    h3. Как сопоставить операцию в биллинге и в 1С
    
    * Биллинг:
    !Selection_355.png|border=1,width=800!\\
    \\
    * 1С
    !Selection_356.png|border=1,width=550!
    
    || Биллинг || 1С ||
    | Код 1С | Год и Номер |
    | * *Для всех операций*:
    ** Номер документа (number)
    ** Баланс(бух) (balance_buh)
    * *Только для платежей (служебные поля в БД)*:
    ** Номер карты оплаты (op_card_id)
    ** Название платёжной системы (operator_name)
    ** Статус платежа в платёжной системе (operator_result)
    ** ID платежа от платёжной системы (operator_pay_id_str) | Комментарий |
    
    h3. Пример выгрузки
    
    Абоненту "Старт Телеком" за февраль 2022 года выставлен акт на следующие услуги:
    * Интернет, 1000р за полный месяц
    * Телефония, внутризоновый звонок на сумму 2р, на городской номер длительностью 1 минуту и 10 секунд, круглён до 2 минуты
    * Телефония, внутризоновый звонок на сумму 9.6р, на местный мобильный номер длительностью 7 минут и 8 секунд, круглён до 8 минуты
    Ещё он внёс платёж на сумму 2000р.
    
    Ниже можно посмотреть скриншоты из обеих систем после синхронизации.
    
    * Скриншот расхода в биллинге. На ней можно увидеть детальную информацию по потреблению услуг: звонки, длительность, стоимость услуг за единицу и сумму за месяц по каждой услуге в отдельности.
    \\
    \\  !Интеграция с 1С, пример расхода интернет и телефония.png|border=1,width=1250!\\
    \\
    * Вкладка "Операции", на ней можно увидеть номер акта и итоговую сумму за месяц, а так же поступление денег, сделанное в биллинге. Докуметы уже синхронизированы с 1С, это видно по полю "Код 1С"
    \\
    \\  !Интеграция с 1С, вкладка Операции в биллинге.png|border=1,width=1200!\\
    \\
    * Детальная информация по услугам в акте в биллинге, стандартная печатная форма.
    \\
    \\  !Интеграция с 1С, акт по стандартной форме из биллинга.png|border=1,width=800!\\
    \\
    * Вкладка "Документы" в 1С, с информацией подобной вкладке "Операции" в биллинге. Можно увидеть, что и акт, и платёж синхронизированы.
    \\
    \\  !Интеграция с 1С, вкладка Документы в 1С.png|border=1,width=1250!\\
    \\
    * Детальная информация по документу "Реализация" в 1С. Это акт, синхронизированный из биллинга.
    \\
    \\  !Интеграция с 1С, акт в 1С (документ типа Реализация).png|border=1,width=1250!
    
    h1. Отладка
    
    h3. Полезные команды
    
    # h4. Сброс синхронизации всех приходов
    

    sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c='' where op_type=2"

    # h4. Сброс синхронизации всех актов
    

    sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c='' where op_type=1"

    # h4. Сброс синхронизации конкретной операции
    

    sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c='' where code1c ='<год операции>_<номер операции в 1с>'"
    sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c='' where code1c ='2015_ВА0000003432'"

    # h4. Просмотреть всех синхронизированных абонентов в [конструкторе отчётов|конструктор отчетов]
    

    select
    a.id,
    a.sync1c,
    a.code1c,
    a.name,
    v.ATTRIBUTE_VALUE as INN
    from abonents a left join attribute_values v on (v.ABONENT_ID=a.ID and v.attribute_id=4)

    # h4. Сторнировать все синхронизированные операции
    

    sqlexec "set list on; select op_id from finance_operations where code1c!='' and storno=0" | awk '

    Unknown macro: {print $2}

    ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1=

    Unknown macro: {"op_id"}

    &method2=storno_op&arg2=

    Unknown macro: {"extra_descr"}

    ' 'http://169.254.80.82:8082/rest_api/v2/FinanceOperations/' -D - ; done

    # h4. Добавление выписок и ПКО через API REST v2.0
    Если Вы интегрированы с [CarbonBilling:АТОЛ Онлайн] и используете нестандартную обработку для 1С, добавляя платежи юр. лиц через [CarbonBilling:API REST v2.0], вероятно их не требуется фискализировать дополнительно, для этого используйте поле _prevent_submit_check=True_ при добавлении платежа, например:
    

    curl -XPOST -d 'method1=objects.create&arg1=

    Unknown macro: {"abonent_id"}

    ' 'http://169.254.80.82:8082/rest_api/v2/FinanceOperations/' -D -

    
    h3. Лог синхронизации в 1С
    
    !1С 8.3, сообщения об обмене данными.png|border=0,width=700!
    
    После выгрузки, информацию об отправленных командах и переданных данных можно будет увидеть в окне "Сообщения", оно открывается автоматический после нажания кнопки "Выполнить" в интерфейсе обработки.
    
    h3. Лог синхронизации в биллинге
    
    Синхронизация происходит по [системному API|Системные API].
    {code:title=Лог системного API}
    /app/asr_billing/var/log/django/system_api.log
    

Известные ошибки

При выполении операции "выгружать ПКО" в 1С ошибка - "Не удалось выполнить запрос: Дата операции не может быть раньше даты создания абонента"

Ошибка возникает, так как системная дата создания абонента в биллинге старше даты прихода(ПКО) в 1С. Для решения проблемы необходимо изменить дату создания абонента на более раннюю чем дата первой операции(ПКО) в 1С. Запрос изменит системную дату создания абоннета с id 1234 на 01.01.2024 .

curl -ss -XPOST -d 'method1=objects.get&arg1={"id": 1234}&method2=set&arg2={"create_date_system": "2024-01-01"}&method3=save&arg3={}' http://169.254.80.82:8082/rest_api/v2/Abonents/ -D -
Введите метки, чтобы добавить к этой странице:
Please wait 
Ищите метку? просто начните печатать.