- Требования
- Общая информация
- Настройка интеграции биллинга с 1С
- 1. Настроить доступ к API биллинга
- 2. Настроить в биллинге доступ с сервера 1С
- 3. Скачать модуль на ПК с 1С.
- 4. Обязательно сделайте копию БД 1С и сначала проверяйте на ней!
- 5. Пометить в БД старые операции, которые не нужно синхронизировать
- 6. Отладка
- 7. Тестирование
- Совместимость с 1C:Fresh
- Работа с модулем
- Как сопоставить абонента в биллинге и в 1С
- Как сопоставить операцию в биллинге и в 1С
- Пример выгрузки
- Отладка
- Полезные команды
- Сброс синхронизации всех приходов
- Сброс синхронизации всех актов
- Сброс синхронизации конкретной операции
- Просмотреть всех синхронизированных абонентов в конструкторе отчётов
- Сторнировать все синхронизированные операции
- Добавление выписок и ПКО через API REST v2.0
- Лог синхронизации в 1С
- Лог синхронизации в биллинге
- Известные ошибки
Требования
- 1С Предприятие 8.x
- Конфигурация "Бухгалтерия предприятия, редакция 2.0" или "Бухгалтерия предприятия, редакция 3.0"
Для работы обработки в 1С Предприятие 8.3 необходимо запускать "Толстый клиент (обычный режим)"
Общая информация
В составе АСР имеется модуль для синхронизации платежей и актов по контрагентам. Вы можете загрузить его в разделе "Помощь" Вашего биллинга
Интеграция 1С построена по принципу работы через API
Логи api запросов от 1с обработчика можно посмотреть в /app/asr_billing/var/log/admin_web_server.log | grep api_1c |
Настройка интеграции биллинга с 1С
Время выполнения инструкции: 10-15 минут, при необходимости исключить часть операций из теста на пятом шаге, время теста может увеличиться |
1. Настроить доступ к API биллинга
Откройте страницу Настройки -> Настройки в файле -> network, укажите IP-адреса компьютеров, с которых планируется выполнять синхронизацию 1С в поле "Список IP для которых разрешено подключаться к системному API"
Если биллинг и компьютеры с 1С находятся в разных подсетях, вероятно клиентские запросы будут проходить NAT-трансляцию - в таком случае укажите конечный IP-адрес с которого будут приходит обращения к биллингу |
Вводить адреса нужно через пробел.
В этом же меню Вы можете узнать и задать пароль доступа к API, он потребуется Вам в дальнейшем в интерфейсе обработки 1С.
Старайтесь использовать в паролях только латинский алфавит, подчеркивания и цифры. Кириллицу и спецсимволы лучше не использовать, они могут некорректно обрабатываться или передаваться. Например:
|
После добавления адресов, нажмите кнопку "Сохранить" и выполните следующую команду в консоли:
chroot /app/asr_billing/ /etc/init.d/admin_web_server restart
2. Настроить в биллинге доступ с сервера 1С
Указывается в веб-интерфейсе биллинга в строке через пробел: Платежные системы -> Настройки сети -> АДРЕСА СЕРВЕРОВ ПЛАТЕЖНЫХ СИСТЕМ
Указывать можно в формате, совместимом с iptables (конкретный ip-адрес, ip-адрес подсети с указанием маски в формате CIDR, доменное имя)
После этого нажать кнопку "Сохранить и применить"
С этих адресов в firewall будет разрешен обмен пакетами по портам 1443 и 1444.
3. Скачать модуль на ПК с 1С.
Для 1С 8 версии
Заходите в администраторскую панель Помощь -> Cписок онлайн документации
Версия обработки должна быть не ниже 2.6
4. Обязательно сделайте копию БД 1С и сначала проверяйте на ней!
Копию может сделать Ваш системный администратор.
5. Пометить в БД старые операции, которые не нужно синхронизировать
В примере отмечены все операции, однозначно не синхронизированные ранее (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
6. Отладка
Сделать тестовую группу, завести тестовых абонентов.
Провести тестовые испытания синхронизации в обе стороны по тестовым абонентам убедиться что все работает как вам нужно.
Очистите предыдущие тестовые синхронизации, если нужно:
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
7. Тестирование
Пробовать работать с модулем синхронизации на реальной БД 1С, предварительно сделав резервные копии БД 1С и БД Carbon Billing 5.
В нашем обработчике синхронизация абонентов в биллинге с контрагентами в 1с происходит по полю ИНН в 1с и реквизиту ИНН в биллинге.
При успешной синхронизации абонента будет заполнено поле "Код в 1С". Дальнейшие синхронизации финансовых операций будут производиться по этому коду.
Если что-то не получается, составьте обращение на портале HelpDesk.
Нам может потребоваться подключение стороннего или своего 1С разработчика, в случае если конфигурация 1С отличается от стандартной, указанной в требованиях выше. |
Совместимость с 1C:Fresh
Кодовая база модуля удовлетворяет требованиям 1С:Fresh. Для запуска модуля на облачной платформе Вам необходимо использовать "Комплект поставки для 1С Fresh", который можно найти в разделе "Помощь" Вашего биллинга.
Работа с модулем
Столбец "Выгружать" - выгрузка данных из 1С в биллинг. Столбец "Загружать" - загрузка данных из биллинга в 1С. |
Для открытия модуля, выберите меню "Файл" -> "Открыть" и укажите путь к модулю.
- "Период с:", "По:"- даты для фильтрации ПКО при выгрузке.
Выгрузка происходит по дату НЕ включительно, т.е. для выгрузки ПКО за 1 месяц необходимо указывать период с 1 числа по 1 число. - "Пароль к системному API:" - задается в биллинге
- "Адрес сервера:" - адрес, по которому доступна администраторская панель с компьютера, который запускает обработку
- "Организация:" - необходима для создания Абонентов в 1С
- "id группы" - это id группы в биллинге, для всех абонентов которой проводится синхронизация платежей.
- "id группы:" - получается из биллинга путем открытия группы в администраторской панели(последняя цифра)
- "Загружать контрагентов" - загружает ранее не синхронизированных абонентов (пометка в биллинге)
- "Загружать ПКО" - загружает Операции с типом "Приход", только по выгруженным в 1С контрагентам. Механизм загрузки следующий: Обработчик запрашивает с биллинга все операции с типом "Приход" без выставленного флага "sync1c" и загружает их в 1с, после чего выставляет у операции в биллинге флаг sync1c и добавляет code1c данной операции. Код состоит из года и номера операции
- "Загружать акты" - загружает Операции с типом "Акт" только по выгруженным в 1С контрагентам
Загружаются с опцией "НДС включено в сумму" - "Выгружать ПКО" - создает в биллинге Операции с типом "Приход" у синхронизированных абонентов.
- "Выгружать выписки" - создает в биллинге Операции с типом "Приход" у синхронизированных абонентов по платежным поручениям из 1с.
Как сопоставить абонента в биллинге и в 1С
- Биллинг:
- 1С
Как сопоставить операцию в биллинге и в 1С
- Биллинг:
- 1С
Биллинг | 1С |
---|---|
Код 1С | Год и Номер |
|
Комментарий |
Пример выгрузки
Абоненту "Старт Телеком" за февраль 2022 года выставлен акт на следующие услуги:
- Интернет, 1000р за полный месяц
- Телефония, внутризоновый звонок на сумму 2р, на городской номер длительностью 1 минуту и 10 секунд, круглён до 2 минуты
- Телефония, внутризоновый звонок на сумму 9.6р, на местный мобильный номер длительностью 7 минут и 8 секунд, круглён до 8 минуты
Ещё он внёс платёж на сумму 2000р.
Ниже можно посмотреть скриншоты из обеих систем после синхронизации.
- Скриншот расхода в биллинге. На ней можно увидеть детальную информацию по потреблению услуг: звонки, длительность, стоимость услуг за единицу и сумму за месяц по каждой услуге в отдельности.
- Вкладка "Операции", на ней можно увидеть номер акта и итоговую сумму за месяц, а так же поступление денег, сделанное в биллинге. Докуметы уже синхронизированы с 1С, это видно по полю "Код 1С"
- Детальная информация по услугам в акте в биллинге, стандартная печатная форма.
- Вкладка "Документы" в 1С, с информацией подобной вкладке "Операции" в биллинге. Можно увидеть, что и акт, и платёж синхронизированы.
- Детальная информация по документу "Реализация" в 1С. Это акт, синхронизированный из биллинга.
Отладка
Полезные команды
Сброс синхронизации всех приходов
sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c='' where op_type=2"
Сброс синхронизации всех актов
sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c='' where op_type=1"
Сброс синхронизации конкретной операции
sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c='' where code1c ='<год операции>_<номер операции в 1с>'" sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c='' where code1c ='2015_ВА0000003432'"
Просмотреть всех синхронизированных абонентов в конструкторе отчётов
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)
Сторнировать все синхронизированные операции
sqlexec "set list on; select op_id from finance_operations where code1c!='' and storno=0" | awk ' {print $2} ' | sed '/^$/d' | while read line; do curl -XPOST -d 'method1=objects.get&arg1={"op_id": '$line'}&method2=storno_op&arg2={"extra_descr": "Test_1C_Sync"}' 'http://169.254.80.82:8082/rest_api/v2/FinanceOperations/' -D - ; done
Добавление выписок и ПКО через API REST v2.0
Если Вы интегрированы с АТОЛ Онлайн и используете нестандартную обработку для 1С, добавляя платежи юр. лиц через API REST v2.0, вероятно их не требуется фискализировать дополнительно, для этого используйте поле prevent_submit_check=True при добавлении платежа, например:
curl -XPOST -d 'method1=objects.create&arg1={"abonent_id": 1111, "op_summa": "50.5", "op_type_id": 2, "descr": "ПКО из 1С", "prevent_submit_check": True}' 'http://169.254.80.82:8082/rest_api/v2/FinanceOperations/' -D -
Лог синхронизации в 1С
После выгрузки, информацию об отправленных командах и переданных данных можно будет увидеть в окне "Сообщения", оно открывается автоматический после нажания кнопки "Выполнить" в интерфейсе обработки.
Лог синхронизации в биллинге
Синхронизация происходит по системному 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 -