Как подключить Yandex DataLens к 1С?

Команда Ёлва

Подпишитесь, чтобы получать новые статьи

Подписаться

С вами команда Ёлва и в сегодняшней статье мы расскажем вам про различные способы интеграции 1С с Yandex DataLens. Компания 1С – это российская компания, которая одна из первых заняла нишу управленческих и бухгалтерских информационных систем. Высокая популярность продуктов компании 1С (всех ее конфигураций) связана с тем, что продукты наилучшим образом знают особенности российского законодательства и многие основные аспекты бизнеса. В системе можно выполнять большое количество доработок, благодаря открытому исходному коду и структурам данных в базе данных у типовых конфигураций. 

Таким образом, система 1С сильно популярна в России так как обладает следующими преимуществами:

  • Многопрофильность и гибкость настройки. Разнообразие программ 1С и их индивидуальная настройка позволяет подбирать решения, точно подходящие под конкретные бизнес-процессы, потребности и обстоятельства компании,
  • Регулярные обновления. Безусловно, система стремится поддерживать свою актуальность. Прикладные решения платформы соответствуют текущему законодательству и неуклонно растущим бизнес-запросам. Помимо актуальности, продукт также стремится к постоянному развитию и совершенству. Руководство 1С постоянно улучшает свой продукт, чтобы не терять позиции на рынке. Кроме того, компания имеет для этого необходимые ресурсы.
  • Ценовая доступность. Благодаря невысокой стоимости 1С-программ их могут приобрести не только крупные предприятия с большим капиталом, но и малые компании.

В связи с этим, безусловно, одним из самый частых запросов, с которыми мы сталкиваемся на проектах по внедрению BI-решений – это запрос на интеграцию и получение данных из систем 1С. На сегодняшний день настроить такое подключение любому пользователю в два клиента не получится, так как у Yandex DataLens нет стандартного коннектора для подключения к базе данных 1С напрямую.

Но, если нельзя подключиться напрямую к учетной системе, то почему бы не подключиться к базе данных, с которой учетная система работает и хранит все данные и вытянуть все данные SQL запросом? Тут самая главная проблема такого метода заключается в том, что необходимо корректно написать эти самые SQL запросы. В 1С структура данных очень «хитрая»: поля и таблицы имеют зашифрованные и неочевидные названия. В связи с этим, простая операция получения данных напрямую из БД в BI-систему осложняется тем, что при написании запроса необходимо соотносить название таблиц и их полей с учетной системы и таблицами с полями в базе данных.

К сожалению, обычному пользователю такую операцию не осилить. Там есть некоторые подводные камни, которые заключаются в используемой версии 1С и проделанными в ней доработками. В рамках статьи разберем общий, самый распространенный случай получения данных для аналитики из 1С. Необходимо в 1С создать обработку, которая выдаст необходимые для анализа данные в «буферную базу», то есть промежуточное хранилище (csv-файл или база данных). После этого дальнейшая работа с данными осуществляется в этом промежуточном хранилище (прописываются правила обработки данных (ETL) и подготавливаются витрины для BI). Витрина – это таблица в базе данных предназначенная для определенного отдела или подразделения, например, финансового отдела, отдела маркетинга и продаж. Витрина данных меньше по объему, имеет определенную специализацию и может содержать обобщенные данные, наиболее актуальные для пользователей.  В свою очередь Yandex DataLens обращается уже к этой промежуточной базе данных и запрашивает только лишь витрины, которые были для него подготовлены. В результате получаем следующую архитектуру подключения 1С к Yandex DataLens:

Архитектура подключения 1

В случае, если данных в витринах много, их дополнительно необходимо перекладывать в аналитическую базу данных (например, ClickHouse) и подключать DataLens уже к этой базе данных. База ClickHouse наилучшим образом подходит для хранения большого количества аналитических данных и отвечает на запросы приходящие от Yandex DataLens более чем в 10 раз быстрее, по сравнению с аналогичной транзакционной базой данных. В связи с особенностями работы ClickHouse, класть данные из 1С в эту базу данных не получится. Поэтому, при большом количестве данных из 1С получаем следующую архитектуру:

Архитектура подключения 2

Со структурой в общем виде мы с вами познакомились. Давайте разберем, каким же образом работает обработка.

Первое, что нам необходимо вытянуть из 1С – это метаданные. Вы можете взять готовую или написать собственную обработку, которая даст возможность посмотреть то, какие поля справочников/документов в каких таблицах/полях базы данных учетной системы находятся. Обработок много разных и каждая из них решает свою конкретную задачу, но в общем виде все они позволяют посмотреть все поля, понять какое поле на какой справочник ведет и помогают построить запрос. Таким образом, при исследовании документов, необходимо выбрать нужный и посмотреть в какие регистры данный документ записывается. После этого переходим к регистру, куда записываются необходимые нам документы и при помощи обработки генерируем SQL запрос. Как правило, делается два уровня SQL запросов. Первый уровень – это представления для переименования полей (из системных имен в интерфейсные), а второй уровень – это представления, которые берут данные из первого уровня и уже они делают необходимые объединения данных.

Второе, что нам необходимо вытянуть из 1С – это перечисления. С ними немного сложнее. Например, если мы сделаем SQL запрос на справочник контрагентов, то в нем будут поля на различные справочники перечислений, например, на нашего конкретного контрагента. И если наш SQL запрос начнет тянуть это поле напрямую из базы данных, то мы получим не конкретное значение, а код ссылки на промежуточную базу, которая ведет далее к определенным справочникам. После этого необходимо найти таблицу, где сидят заголовки перечислений и их необходимо разархивировать. Поэтому, мы разработали обработчик, который подключается к 1С с помощью COM, берет все перечисления, и кладет в таблицу промежуточной базы, предварительно ее почистив. Перед чем как запустить обработчик, необходимо создать таблицу и определить для нее необходимую структуру данных. После этого можно запускать обработчик. 

Таким образом, мы с вами разобрали основные особенности подключения 1C к Yandex DataLens. Как вы могли заметить, это достаточно рутинный процесс, который предполагает набор различных этапов действий в зависимости от каждого конкретного случая. В результате накопленного нами проектного опыта мы смогли подвести под единый алгоритм перекладывание данных из базы данных 1С в промежуточную базу данных в том виде, который пользователь видит в интерфейсе системы. Таким образом, мы создали собственный коннектор, который позволяет проводить такую интеграцию с наименьшими трудозатратами со стороны разработчика.

Наш коннектор настраивает выборки данных из 1С, после этого создает необходимые для этих выборок таблицы в базе данных, затем сопоставляет поля между полями из 1С и созданными в базе данных. Таким образом, осуществляется первичная выгрузка данных для использования их в DataLens. После этого коннектор автоматически выгружает данные по заданному расписанию из 1С в базу данных.

Коннектор позволяет работать с любой конфигурацией платформы 1С, если она соответствует двум условиям: 1) Платформа 1С не ниже версии 8.3.19, 2) Имеется возможность подключения расширения к вашей конфигурации 1С. Таким образом, благодаря использованию нашего коннектора вы в короткие сроки сможете настроить выгрузку данных из вашей базы данных 1С в промежуточную базу данных, источником которой будет является ваш отчет в DataLens.

Если у вас остались вопросы по интеграции 1С и DataLens или вы заинтересовались коннектором, то обязательно обращайтесь к нам в компанию Ёлва и наши специалисты обязательно вам помогут. Вы можете связаться с нами через форму обратной связи на сайте, по телефону +7-499-500-45-29 или пишите на request@yolva-it.com.

#1C#BI#DataLens

Подпишитесь на наши статьи

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *