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

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

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

просмотр истории страницы
* Конфигурация "Бухгалтерия предприятия, редакция 2.0" или "Бухгалтерия предприятия, редакция 3.0"

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

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

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

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


!1c_help0407.png|border=0,width=800!
{info}
Логи API запросов от 1С обработчика к биллингу можно посмотреть в файле:
{code}
Логи api запросов от 1с обработчика можно посмотреть в */app/asr_billing/var/log/admin_web_server.log | grep api_1c*
cat /app/asr_billing/var/log/admin_web_server.log | grep api_1c
{code}
{info}

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

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

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

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

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


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

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


!Unnamed image (2).png|border=1,width=600!
# После добавления адресов, нажмите кнопку "*Сохранить*" и выполните следующую команду в консоли:
{code}

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

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

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

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


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

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

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

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

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

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

h3. 65. Отладка

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

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

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

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

h3. 7. Тестирование
После очиски синхронизации перезапустите веб интерфейс биллинга командами
{code}
chroot /app/asr_billing/ service memcached restart
chroot /app/asr_billing/ service admin_web_server restart
{code}

{note}
Если запустить загрузку данных после сброса синхронизации со стороны биллинга, то при загрузке:
* *Абонентов* - данные будут помещены в уже созданного в 1С контрагента;
* *Актов* - в 1С будут созданы дубли актов.
{note}

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

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

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


!1c_01.png|border=1!

{info}
Если что-то не получается, составьте обращение на портале [HelpDesk|https://helpdesk.carbonsoft.ru/login.php].
Нам может потребоваться подключение стороннего или своего 1С разработчика, в случае если конфигурация 1С отличается от стандартной, указанной в требованиях выше.
{info}

{info}Если что-то не получается, составьте обращение на портале [HelpDesk|https://helpdesk.carbonsoft.ru/login.php].
h1. Совместимость с 1C:Fresh

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

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

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

!1Cfresh.png|width=800!

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

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

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

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

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

Синхронизация абонентов с 1С происходит, если абонент ранее не синхронизирован - пустые поля abonents.sync1c и abonents.code1c.
Синхронизация финансовых операций с 1С проходит по синхронизированным абоннетам. При этом сама финансовая операции должны быть не синхронизированной - с пустыми полями finance_operations.sync1c и finance_operations.code1c. Например, механизм загрузки операций "Приход" следующий:
# Обработчик запрашивает с биллинга все операции с типом "Приход" без выставленного флага "sync1c" и загружает их в 1с
# Обработчик выставляет у операции в биллинге флаг sync1c и добавляет code1c данной операции. Код состоит из года и номера операции

h3. Как сопоставить абонента в биллинге и в 1С

* Биллинг:
!Интеграция 1С, абонент в биллинге, основные поля.png|border=0,width=1000!
!Интеграция 1С, абонент в биллинге, учетная запись.png|border=0,width=300!
!Интеграция 1С, абонент в биллинге, код в 1С.png|border=0,width=470!


* Биллинг:
!Selection_355.png|border=1,width=800! \\ \\
!Selection_355.png|border=1,width=800!\\
\\
* 1С
!Selection_356.png|border=1,width=550!
** Название платёжной системы (operator_name)
** Статус платежа в платёжной системе (operator_result)
** ID платежа от платёжной системы (operator_pay_id_str) | Комментарий |

h3. Пример выгрузки
Ниже можно посмотреть скриншоты из обеих систем после синхронизации.

* Скриншот расхода в биллинге. На ней можно увидеть детальную информацию по потреблению услуг: звонки, длительность, стоимость услуг за единицу и сумму за месяц по каждой услуге в отдельности. \\ \\
\\
\\ !Интеграция с 1С, пример расхода интернет и телефония.png|border=1,width=1250! \\ \\ телефония.png|border=1,width=1250!\\
\\
* Вкладка "Операции", на ней можно увидеть номер акта и итоговую сумму за месяц, а так же поступление денег, сделанное в биллинге. Докуметы уже синхронизированы с 1С, это видно по полю "Код 1С" \\ \\
!Интеграция с 1С, вкладка Операции в биллинге.png|border=1,width=1200! \\ \\
\\
\\ !Интеграция с 1С, вкладка Операции в биллинге.png|border=1,width=1200!\\
\\
* Детальная информация по услугам в акте в биллинге, стандартная печатная форма. \\ \\
\\
\\ !Интеграция с 1С, акт по стандартной форме из биллинга.png|border=1,width=800! \\ \\ биллинга.png|border=1,width=800!\\
\\
* Вкладка "Документы" в 1С, с информацией подобной вкладке "Операции" в биллинге. Можно увидеть, что и акт, и платёж синхронизированы. \\ \\
!Интеграция с 1С, вкладка Документы в 1С.png|border=1,width=1250! \\ \\
\\
\\ !Интеграция с 1С, вкладка Документы в 1С.png|border=1,width=1250!\\
\\
* Детальная информация по документу "Реализация" в 1С. Это акт, синхронизированный из биллинга. \\ \\
\\
\\ !Интеграция с 1С, акт в 1С (документ типа Реализация).png|border=1,width=1250!


h1. Работа с операторами связи
Для включения синхронизации операторв связи с 1С необходимо включить опцию *Экспортировать операторов в 1С* в [настройках|Глобальные настройки биллинга и оператора#Учет].
h21. Отладка

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

# h4. Сброс синхронизации всех приходов
{code}
# h4. Просмотреть всех синхронизированных абонентов в [конструкторе отчётов|конструктор отчетов]
{code}
select
a.id,
a.sync1c,
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
/app/asr_billing/var/log/django/system_api.log
{code}

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

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

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

{code}
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 -
{code}