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

Ключ
Эта строка удалена.
Это слово было удалено. Это слово было добавлено.
Эта строка добавлена.

Изменения (85)

просмотр истории страницы
h1. Общая информация

Интеграция 1С построена по принципу работы через API [http://docs.carbonsoft.ru/display/CarbonBilling/API+REST+v2.0]
В составе АСР имеется модуль для синхронизации платежей и актов по контрагентам. Вы можете загрузить его в разделе "*Помощь*" Вашего биллинга

Интеграция 1С построена по принципу работы через [API|http://docs.carbonsoft.ru/display/CarbonBilling/API+REST+v2.0]


!1c_help0407.png|border=0,width=800!
{info}

В составе АСР имеется модуль для синхронизации платежей и актов по контрагентам.
Логи api запросов от 1с обработчика можно посмотреть в */app/asr_billing/var/log/admin_web_server.log | grep api_1c*
{info}

[https://github.com/carbonsoft/carbon_1c8_sync]
h2. Настройка интеграции биллинга с 1С

{tip}{*}Время выполнения инструкции*: 10-15 минут, при необходимости исключить часть операций из теста на пятом шаге, время теста может увеличиться
{tip}

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

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

{info}Если биллинг и компьютеры с 1С находятся в разных подсетях, вероятно клиентские запросы будут проходить NAT-трансляцию - в таком случае укажите конечный IP-адрес с которого будут приходит обращения к биллингу{info}


Вводить адреса нужно через пробел.

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

Пароль для доступа к api можно посмотреть в настройке биллинга (в файле)
{info}Старайтесь использовать в паролях только латинский алфавит, подчеркивания и цифры. Кириллицу и спецсимволы лучше не использовать, они могут некорректно обрабатываться или передаваться.
Например:
* *Подходящий пароль*: {color:green}zBxnaRBrxM_27dJHW{color}
* *Нерабочий пароль*: D1kfGbdE{color:red}#%{color}A0d
{info}

!Unnamed image (2).png|border=1!

Так же необходимо добавить IP-адрес компьютера, на котором будет запущена внешняя обработка 1С, в соответствующий список как на скриншоте.
!Unnamed image (2).png|border=1,width=600!

После добавления адресов, нажмите кнопку "Сохранить" и выполните следующую команду в консоли:
{code}chroot /app/asr_billing/ service admin_web_server restart{code}

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

h2. Настройка интеграции биллинга с 1С
h3. 2. Настроить в биллинге доступ с сервера 1С


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

Для этого зайти в биллинг Настройки - Настройки в файле - network - Список IP адресов машин, работающих через API
Вводить адреса нужно через пробел.

h3. *2. Настроить в биллинге доступ с сервера 1С*

Указывается в веб-интерфейсе биллинга в строке через пробел: Платежные системы \-> Настройки сети \-> АДРЕСА СЕРВЕРОВ ПЛАТЕЖНЫХ СИСТЕМ
Указывать можно в формате, совместимом с iptables (конкретный ip-адрес, ip-адрес подсети с указанием маски в формате CIDR, доменное имя)
С этих адресов в firewall будет разрешен обмен пакетами по портам 1443 и 1444.

h3. *3. Скачать модуль на ПК с 1С.*


*Для 1С 8 версии*
Заходите в администраторскую панель Помощь->Cписок онлайн документации
Заходите в администраторскую панель *Помощь* \-> *Cписок онлайн документации*
{color:#ff0000}Версия обработки должна быть не ниже 2.6{color}

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

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

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

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

Через ib_expert CTRL+f11:
{code}
update FINANCE_OPERATIONS set  sync1c=1,  code1c='old'  where FINANCE_OPERATIONS.op_date<'01.01.2011'
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
{code}
или из консоли рута/помощника:
{code}
sqlexec "update FINANCE_OPERATIONS set  sync1c=1,  code1c='old'  where FINANCE_OPERATIONS.op_date<'01.01.2011'"
{code}

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

Очистите предыдущие тестовые синхронизации&nbsp;если нужно{code} sqlexec "execute procedure api_clear_all;"
Очистите предыдущие тестовые синхронизации, если нужно:

sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c=NULL"
{code}
sqlexec "update abonents set SYNC1C=0, CODE1C=''"

sqlexec "update abonents set sync1c=0, code1c=NULL"
sqlexec "update FINANCE_OPERATIONS set SYNC1C=0, CODE1C=''"
{code}

h3. *7. Тестирование*
h3. 7. Тестирование

Пробовать работать с модулем синхронизации на реальной БД 1С, предварительно сделав резервные копии БД 1С и БД Carbon Billing 5.
*В нашем обработчике синхронизация абонентов в биллинге с контрагентами в 1с происходит по полю ИНН в 1с и реквизиту ИНН в биллинге.*

{info}Если что-то не получается, обратитесь в техническую поддержку.
При успешной синхронизации абонента будет заполнено поле "Код в 1С". Дальнейшие синхронизации финансовых операций будут производиться по этому коду.

Сотрудники тех. поддержки подскажут в чем проблема. Стоит учитывать, что &nbsp;при этом может потребоваться подключение стороннего или своего 1С разработчика, в случае если конфигурация&nbsp;1С отличается от стандартной, указанной в требованиях выше{info}

h2. Работа с модулем.
!1c_01.png|border=1!

{note}При открытии модуля нужно использовать толстый клиент. Посмотреть какой клиент используется можно в *"Справка" \-> "О программе"*{note}

!Selection_059.png|border=1!
{info}Если что-то не получается, составьте обращение на портале [HelpDesk|https://helpdesk.carbonsoft.ru/login.php].

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

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

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

!1Cfresh.png|width=800!

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

!1С 8.3, современный интерфейс 2022.png|width=900!

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

Для открытия модуля, выберите меню *"Файл" \-> "Открыть"* и укажите путь к модулю.

{color:#ff0000}Выгрузка происходит по дату НЕ включительно, т.е. для выгрузки ПКО за 1 месяц необходимо указывать период с 1 числа по 1 число.{color}
* "Пароль к системному API:" - задается в биллинге
* "Адрес сервера:" - адрес, по которому доступна администраторская панель с компьютера, который запускает обработку
* "Организация:" - необходима для создания Абонентов в 1С
* "id группы" - это id группы в биллинге, для всех абонентов которой проводится синхронизация платежей.
* "id группы:" - получается из биллинга путем открытия группы в администраторской панели(последняя цифра) &nbsp; !Selection_060.png|border=10!
* "Загружать контрагентов" - загружает ранее не синхронизированных абонентов (пометка в биллинге)
* "Загружать ПКО" - загружает Операции с типом "Приход", только по выгруженным в 1С контрагентам. Механизм загрузки следующий: Обработчик запрашивает с биллинга все операции с типом "Приход" без выставленного флага "sync1c" и загружает их в 1с, после чего выставляет у операции в биллинге флаг sync1c и добавляет code1c данной операции. Код состоит из года и номера операции
* "Загружать ПКО" акты" - загружает Операции с типом "Приход", "Акт" только по выгруженным в 1С контрагентам
* "Загружать акты" - загружает Операции с типом "Акт",&nbsp;только по выгруженным в 1С контрагентам
{color:#ff0000}Загружаются с опцией "НДС включено в сумму"{color}
* "Выгружать ПКО" - создает в биллинге Операции с типом "Приход" у синхронизированных абонентов.
* "Выгружать выписки" - создает в биллинге Операции с типом "Приход" у синхронизированных абонентов по платежным поручениям из 1с.

h3. Бухгалтерия предприятия 3.0
h3. Как сопоставить абонента в биллинге и в 1С

По-умолчанию, конфигурация БП 3.0 загружается в режиме "управляемого приложения". Наш модуль не оптимизирован для данного режима, потому для обмена данными с биллингом необходимо запустить 1С в режиме "обычного приложения".
Для этого выполните следующее:
# В интерфейсе запуска 1С нажмите кнопку "Добавить"
# Выберите "Добавление в список существующей информационной базы"
# Укажите параметры доступа к Вашей конфигцрации 1С Бухгалтерия предприятия 3.0
# На последнем шаге укажите режим запуска "Толстый клиент" и напишите следующее в поле "Параметры запука", как показано на скришноте:
\\
\\
{code}/DisableStartupMessages /RunModeOrdinaryApplication{code} !sync1c_acc30.png|border=1!\\
\\
# Нажмите "Готово" и запустите приложение.
* Биллинг:
!Интеграция 1С, абонент в биллинге, основные поля.png|border=0,width=1000!
!Интеграция 1С, абонент в биллинге, учетная запись.png|border=0,width=300!
!Интеграция 1С, абонент в биллинге, код в 1С.png|border=0,width=470!

Дальнейшие шаги идентичны запуску обработки в Бухгалтерии 2.0 платформы 1С 8.2
* 1С
!Интеграция 1С, абонент в 1С, общие.png|border=0,width=450! !Интеграция 1С, абонент в 1С, адреса и телефоны.png|border=0,width=450!
!Интеграция 1С, абонент в 1С, счета и договоры.png|border=0,width=450!


h2. Полезные команды
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!


h2. Отладка

h3. Полезные команды

h3. 1. # h4. Сброс синхронизации всех приходов
{code}
sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c=NULL where op_type=2 and code1c is not null"
sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c='' where op_type=2"
{code}

h3. 2.Сброс синхронизации всех актов
# h4. Сброс синхронизации всех актов
{code}
sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c=NULL where op_type=1 and code1c is not null"
sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c='' where op_type=1"
{code}

h3. 3. # h4. Сброс синхронизации конкретной операции
{code}
sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c=NULL code1c='' where code1c ='<год операции>_<номер операции в 1с>'"
sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c='' where code1c ='2015_ВА0000003432'"
{code}
# h4. Просмотреть всех синхронизированных абонентов в [конструкторе отчётов|конструктор отчетов]
{code}
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)
{code}
# h4. Сторнировать все синхронизированные операции
{code}
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
{code}
# h4. Добавление выписок и ПКО через API REST v2.0
Если Вы интегрированы с [CarbonBilling:АТОЛ Онлайн] и используете нестандартную обработку для 1С, добавляя платежи юр. лиц через [CarbonBilling:API REST v2.0], вероятно их не требуется фискализировать дополнительно, для этого используйте поле _prevent_submit_check=True_ при добавлении платежа, например:
{code}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 -{code}

sqlexec "update FINANCE_OPERATIONS set sync1c=0, code1c=NULL where code1c ='2015_ВА0000003432'"
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
{code}