При решении задач бизнес-аналитики часто возникает потребность анализировать данные 1С средствами Excel или внешних BI-систем. Основная сложность заключается в том, как передать данные аналитикам («сглщикам»), не создавая нагрузки на рабочую базу, не нарушая лицензионное соглашение и обеспечив безопасность данных. Рассмотрим подробнее несколько архитектурных подходов, которые позволяют эффективно решить эту задачу.
Самый простой путь, который часто выбирают системные администраторы, — создание полной копии (реплики) основной базы SQL. Это позволяет изолировать аналитическую нагрузку от транзакционной нагрузки пользователей 1С. Разберем этот процесс по шагам:
Always On или Log Shipping).db_owner. Необходимо создать отдельную роль в MS SQL Server с правами только на чтение (db_datareader)._AccumReg). Как подтверждается в обсуждении, SQL позволяет гибко назначать права SELECT на конкретные объекты.Важный нюанс: Прямое чтение таблиц SQL нарушает лицензионное соглашение 1С, если это делается для обхода логики платформы. Однако для целей построения отчетности на отдельной копии базы этот риск часто считается приемлемым, хотя и остается «серой зоной».
Проблема прямого чтения таблиц 1С в том, что их названия (например, _InfoRg1234) малоинформативны и могут измениться при реструктуризации базы. Чтобы защитить OLAP-кубы от поломок, проанализируем ситуацию с использованием вьюх:
Мы создаем в базе-реплике View с понятными именами (например, v_SalesData), внутри которых прописываем SQL-запрос к реальным таблицам 1С. Таким образом, внешняя система (Excel) подключается к вьюхе. Если 1С изменит имя таблицы после обновления метаданных, системному администратору достаточно будет поправить код одной вьюхи, и все внешние отчеты продолжат работать.
Для тех, кто хочет оставаться в рамках «белого» использования платформы, рассмотрим вариант работы через OData. Это стандартный механизм 1С, который позволяет обращаться к данным через HTTP-запросы.
Преимущества этого метода:
OData через инструмент Power Query.Однако на больших объемах данных OData может работать медленно. В этом случае рекомендуется предварительно готовить «плоские» таблицы внутри 1С, которые будут содержать уже агрегированные данные для выгрузки.
Начиная с версии платформы 8.3.14, появился мощный встроенный механизм — «Копии базы данных». Рассмотрим, как это помогает администратору отделаться от задачи «выдачи данных» максимально просто.
Платформа позволяет назначить отдельную СУБД (например, еще один MS SQL Server или даже встраиваемую DB2) в качестве копии. Вы сами выбираете, какие объекты метаданных (регистры, справочники) должны реплицироваться. 1С будет автоматически обновлять данные в копии по расписанию или в реальном времени.
К этой копии можно подключаться внешними средствами. Главное преимущество здесь в том, что 1С сама берет на себя всю «грязную работу» по синхронизации данных, а администратор получает официальный и производительный источник для OLAP.
Если задача стоит серьезно, «легких путей» с репликами будет недостаточно. Проанализируем системный подход, который предполагает создание отдельной аналитической базы с другой структурой данных (денормализованной).
Процесс выглядит следующим образом:
SSIS (SQL Server Integration Services), которые раз в сутки забирают данные из 1С.SSAS (SQL Server Analysis Services).Такой подход требует бюджета и времени, но он единственный обеспечивает мгновенную скорость работы отчетов в Excel при миллионах строк данных, так как Excel будет работать уже с предварительно рассчитанными агрегатами.
В ходе дискуссии часто возникает вопрос: «Зачем нужен OLAP, если есть Система Компоновки Данных (СКД)?». Выясним основные причины выбора внешнего инструмента:
Power Pivot и Power BI предоставляют гораздо больше возможностей для построения интерактивных дашбордов, чем стандартные формы 1С.Подводя итог, если вы хотите максимально просто решить задачу, придерживайтесь следующего алгоритма:
1. Если данных немного (до 10-20 Гб), предложите аналитикам использовать Power Query в Excel с подключением через OData. Это безопасно и не требует настройки SQL.
2. Если база большая, настройте Механизм копий баз данных средствами платформы 8.3. Это легальный способ создать реплику, к которой можно дать доступ «сглщикам».
3. При использовании прямого доступа к SQL всегда создавайте View. Это ваш «страховой полис» на случай обновлений конфигурации 1С, который спасет вас от необходимости переписывать все отчеты вручную.
4. Для защиты от нагрузки используйте параметр Application Intent=ReadOnly в строке подключения, если ваша SQL-инфраструктура поддерживает Availability Groups.