Пять способов передать данные из 1С в BI
Сначала о том, чего делать нельзя. Иногда BI подключают напрямую к SQL-базе, в которой хранятся данные 1С. Лицензионное соглашение 1С запрещает обращаться к данным информационной базы в обход платформы. Да и технически это неудобно. Таблицы в базе называются по типу _Document123, а после обновления конфигурации их структура может поменяться. Все способы ниже работают через саму платформу 1С.
1. Выгрузка отчетов в Excel
Сотрудник выгружает готовый отчет из 1С в файл, а BI-система забирает его из папки. Запустить такую схему можно за день, и для пилотного дашборда этого достаточно.
На постоянной основе она работает плохо. Актуальность данных зависит от того, не забыл ли человек нажать кнопку, а любая правка в форме отчета ломает загрузку. По сути, ручная работа никуда не уходит, меняется только инструмент визуализации.
2. Встроенный инструмент «1С:Аналитика»
У 1С есть собственный BI-инструмент,
«1С:Аналитика», который работает на платформе 1С:Предприятие. Он использует те же права доступа, что и 1С, и позволяет собирать дашборды без переноса данных во внешнюю систему. Для компании, где почти все данные уже в 1С, это логичный первый шаг.
Ограничения связаны с тем, что инструмент живет внутри платформы 1С. Загрузить в него Excel или внешние данные можно, но для свода нескольких баз 1С и больших объемов обычно нужен еще и «1С:Корпоративное хранилище данных». Лицензируется «1С:Аналитика» отдельно, по числу пользователей.
3. Подключение через OData
OData — стандартный интерфейс платформы 1С, через который внешние системы читают справочники, документы и регистры. Менять конфигурацию при этом не нужно. Базу публикуют на веб-сервере и выбирают, какие объекты будут доступны снаружи.
Стоит учесть, что напрямую к OData подключаются в основном Power BI и Power Query в Excel. Российские BI-платформы, в том числе Yandex DataLens, обычно получают данные 1С через промежуточную базу. Кроме того, Microsoft приостановила продажи в России, и многие компании переходят с Power BI на отечественные системы.
Второе слабое место — большие объемы. Как правило, данные забираются целиком, и на регистрах с миллионами строк обновление идет долго и нагружает рабочий сервер. Вся логика связей и расчетов при этом переезжает в сам дашборд, и держать ее в порядке сложнее.
4. Готовые коннекторы
На рынке есть расширения для 1С, которые сами выгружают данные в аналитическую базу. Расширение устанавливают в 1С, выбирают нужные регистры и документы и задают расписание. Дальше данные сами передаются в базу, к которой подключается BI-система. Программист для этого не нужен, первые данные появляются за несколько дней.
Ограничения у таких решений похожи. Лицензию обычно покупают на каждую базу 1С, у облачной базы есть лимит на объем, а само решение часто привязано к одной BI-системе. Данные из CRM и других систем коннектор для 1С не передает, их придется подключать отдельно.
5. Выгрузка в хранилище данных
В этом варианте данные 1С по расписанию выгружаются в отдельную аналитическую базу, например PostgreSQL или ClickHouse. Выгрузку делают через HTTP-сервисы или OData, а запускает ее ETL-процесс, обычно ночью. В то же
хранилище попадают данные CRM, Excel-бюджеты и другие источники, а BI-система работает уже с чистыми и связанными таблицами. Подходит этот способ для любой BI-платформы, включая российские.
На старте он требует больше времени. Для HTTP-сервисов и расширений обычно нужен программист 1С, а выгрузку приходится поддерживать, когда меняется конфигурация. Зато рабочая база не страдает от аналитических запросов, в хранилище накапливается история, а один и тот же показатель считается одинаково во всех отчетах. BI-платформу можно поменять, хранилище останется.
Главная ловушка: изменения задним числом
В 1С данные за прошлые периоды меняются постоянно. Бухгалтерия перепроводит документы, исправляет ошибки, вносит корректировки перед закрытием месяца. Если выгружать в хранилище только новые документы, через пару месяцев цифры в BI начнут расходиться с отчетами 1С, и никто не сможет сразу объяснить почему.
Поэтому выгрузка должна забирать не только новое, но и измененное. В 1С для этого есть регистрация изменений в плане обмена. Платформа сама отмечает измененные объекты, и при следующей выгрузке они уходят в хранилище повторно. А чтобы закрытые периоды больше не менялись, в 1С ставят дату запрета изменения данных.