Подключение BI-систем к 1С
Ни для кого не секрет, что 1С – одна из самых популярных учётных систем на территории СНГ. При этом, мировые лидеры BI-индустрии (Qlik, Tableau, PowerBI) с ней, разумеется, не знакомы. Нативных коннекторов к 1С в этих системах нет и отсюда возникает потребность в разработке подключения к данным, которая позволит с минимальными затратами времени/сил/денег извлекать данные из довольно специфической базы 1С.
В своей более чем 10-летней истории работы над проектами в области BI мы пробовали разные методы подключения. Какие-то из них более популярны, какие-то менее. Давайте рассмотрим их все, а там уже по обстоятельствам вы будете решать, что наиболее полно подходит под ваши конкретные потребности.
Итак, вот список возможных вариантов подключения:
1. Вручную выгрузить данные в подходящий формат (обычно используют xml) и далее подключиться к этим данным нативным коннектором.
2. Использовать коммерческий коннектор (порекламирую нашу разработку BiView)
3. Подключиться к базе по протоколу oData, предварительно настроив выгрузку в web.
4. Подключиться напрямую к метаданным 1С
Давайте рассмотрим эти способы более подробно.
1. Вручную выгрузить данные в подходящий формат (обычно используют xml) и далее подключиться к этим данным нативным коннектором.
Этим способом можно быстро и относительно просто получать актуальные файлы. В 1С существует специальный инструмент – Рассылка отчётов, который поможет организовать этот процесс.
Сначала нужно подготовить в 1С отчёт, который вы хотите далее обрабатывать в BI. В нём настройте все нужные поля, период и сохраняете его.
Далее в инструменте Рассылка отчётов настраиваете расписание выгрузки, место выгрузки и формат готового файла. Далее – дело техники.
При кажущейся простоте, довольно быстро возникает вопрос с версией данных. Инкрементальная загрузка таким способом невозможна, поэтому необходимо организовать процесс так, чтобы новый файл записывался поверх старого. Данные при этом всегда актуальные, но невозможно отследить что было записано в предыдущей версии этого файла.
В связи с тем, что выгружается большой объём информации, а не инкремент, необходимо организовать разную выгрузку для разных по длительности периодов. Например, на выходных выгружаются помесячные данные, а по ночам – только текущий месяц.
В идеальном случае все выгрузки со всеми их иерархиями можно укладывать в свою SQL базу. Более того, эти данные можно обогащать информацией из других источников и в результате у вас получится база данных, в которой можно будет выполнять расчёты, что дополнительно ускоряет работоспособность вашей BI.
В связи с описанными ограничениями очевидно, что способ подходит для небольших компаний или как костыльное решение. Как только вы поймёте, что вам сложно поддерживать в актуальном состоянии несколько сотен файлов, вы созреете морально и материально для следующих вариантов интеграции, которые потребуют определённых финансовых усилий.
2. Использовать коммерческий коннектор (порекламирую нашу разработку BiView)
BiView (1C Коннектор для QlikView/Qlik Sense/Tableau/PowerBI) разработан для наиболее эффективной интеграции BI-продуктов с 1С и увеличения скорости выгрузки данных. Приложение позволяет полностью автоматизировать процесс управления выгрузкой данных из 1C без необходимости отдельного запуска обработок или заданий в 1С. Подробнее о 1C Коннекторе >>
Функционал коннектора в большой степени зависит от базы, которая лежит под 1С. Изначально коннектор задумывался для работы с Microsoft SQL, поэтому именно с этой базой он будет работать максимально полно.
Очевидно, что коннектору нужен полный доступ как самой базе 1С, так и базе, которая лежит под ней.
Коннектор создаёт View, в котором связывает данные из 1С и расшифрованные данные, которые вы напрямую можете забирать в BI. Никаких реальных данных коннектор в себя не тянет и поэтому само View занимает минимум дискового пространства.
Коннектор сканирует все данные по конфигурации, чтобы аналитик мог в ручном режиме выбрать нужные ему документы и регистры.
Прелесть коннектора в том, что он подключается непосредственно к метаданным 1С и ему не важно насколько кастомизирована ваша 1С. Прямо во View аналитик может преобразовывать ключи из 1С в нужные «человеческие» значения типа Номенклатура, Организация, Контрагент и т.д. То есть вам нет необходимости вместе с запрашиваемым документом тянуть из базы ещё несколько справочников, как это обычно требуется в 1С.
При работе с Postgre SQL коннектор не созадёт View, а генерирует специальные запросы, которые вы можете использовать в BI.
Да, такие запросы нам может написать и программист 1С, но во-первых, где ж нормального взять, а во-вторых, он всегда занят.
Ещё одним плюсом является то, что после обновления 1С коннектор перепрописывает связи во View и вы практически сразу можете работать с данными в BI. А теперь вспомните сколько времени у вас обычно проходит между обновлением системы 1С и появлением первых отчётов и вы поймёте за что вы платите деньги.
Стоимость коннектор зависит от количества информационных баз в 1С (спросите у своего 1С-программиста сколько их у вас) и начинается от 62 тыс руб. для работы с одной информационной базой. На самом деле мы не очень рекомендуем такую конфигурацию, потому что в работе всегда требуется переключаться между тестовой средой и продуктивной и в этом случае коннектор будет считать, что баз у вас уже 2 и не будет работать (потребуется апгрейд).
Разумеется, есть тестовые лицензии, где вы можете оценить все особенности им принять взвешенное решение.
Коннектор подключается к 1С предприятию, чтобы получить информацию о метаданных объектов, после этого подключается к серверу БД и создаёт в новой базе виртуальные представления для каждого объекта с его составом атрибутов, как в 1С. Далее через стандартное подключение к SQL можно загрузить данные через эти виртуальные представления уже в виде 1С сущностей: справочников, регистров, документов и т.д.
Сравнение Коннектора 1С с oData:
1. Не требуется работ на стороне 1С, поднятие веб-сервиса, настройки обменов;
2. Скорость загрузки данных в разы выше и нет избыточности XML формата;
3. Гибкость в части выгрузки требуемых данных, в любой момент можно легко подключить новую сущность или новые атрибуты.
4. Возможность построить работоспособную модель данных без навыков программирования (таблицы выбираются по клику, на них можно ставить ограничения, можно построить иерархические справочники).
Пошаговый алгоритм построения модели указан в инструкции https://biconsult.ru/products/biview/besplatnaya-probnaya-licenziya
3. Подключиться к базе по протоколу oData, предварительно настроив выгрузку в web.
Довольно популярный способ. По уровню сложности – чуть сложнее варианта 1. Конечно, сначала нужно опубликовать базу 1С на вашем интернет-сервере.
Далее нужно писать запросы типа:
https://web.company.ru:8443/odata/standard.odata/Catalog_Номенклатура?$format=json
Ответом вы получите справочник по Номенклатуре вашей 1С. Если позволяют знания в 1С (или если вы внимательно читаете справку), можно применять специальные команды, позволяющие преобразовывать ссылки в значения. Это позволит вам выгрузить полноценный документ, а не десятки отдельных справочников. Точно также можно задавать в запросах фильтры, если вам не нужны полные данные, а интересует какой-то период или блок данных.
Как не трудно догадаться, на входе в BI у вас будет json-файл, который может обработать любая система аналитики.
Казалось бы всё просто, но тут тоже есть нюансы. Во-первых, скорость подключения по протоколу oData оставляет желать лучшего. То есть, как и в варианте 1, этот тип подключения подходит для небольших компаний с небольшим объёмом данных в 1С.
Во-вторых, вопросы безопасности никто не отменял. Попробуйте сказать вашему директору, что опубликуете данные из 1С где-то на сервере в интернете и узнаете много новых интересных слов. В общем, тут решение скорее политическое, нежели рационально-экономическое.
4. Подключиться напрямую к метаданным 1С
Важная оговорка для этого способа подключения – это напрямую запрещено лицензионными правилами 1С. Если вас это не пугает, то есть ещё одну сложность – практически все поля представляют собой ссылки на другие таблицы, а сами названия полей закодированы специальным образом 1С, поэтому разобраться в метаданных бывает очень непросто. Однако если у вас получилось разобраться в этой сложной структуре, то дальше вы будете довольно быстро получать нужную информацию из SQL базы 1С.
Поэтому программисты, имеющие опыт такой работы ценятся на вес золота.
Как видите, существует довольно много способов получения данных из 1С. Все они имеют свои плюсы и минусы и должны выбираться опытными разработчиками на основе реальной ситуации в проекте.
Обращайтесь к нам за советом и наши специалисты помогут вам с оптимальным выбором.