При построении продвинутой аналитики в среде 1С часто возникает необходимость интеграции с многомерными базами данных Microsoft SQL Server Analysis Services (SSAS). Использование внешних источников данных в 1С позволяет напрямую обращаться к OLAP-кубам и строить на их основе комплексные отчеты. Для обеспечения удаленной работы и обхода ограничений прямой видимости серверов подключение настраивают через специальный HTTP-шлюз на базе веб-сервера IIS с использованием библиотеки msmdpump.dll.
Однако на этапе настройки разработчики часто сталкиваются с проблемой: в MS Excel кубы подключаются без проблем, но в конфигураторе 1С при попытке выбрать куб внешнего источника данных открывается абсолютно пустой список, при этом платформа не выдает никаких ошибок. Давайте подробно разберем эту ситуацию, проанализируем причины возникновения ошибки и пошагово решим проблему.
При работе с MS Excel подключение к SSAS через HTTP-шлюз обычно использует текущие учетные данные пользователя Windows (технология SSPI / Integrated Security). Excel инициирует сессию от имени текущего доменного пользователя, и веб-сервер IIS прозрачно передает эти данные на сервер авторизации SSAS.
В случае с 1С ситуация иная. Платформа 1С выполняет запросы к внешним источникам данных на стороне сервера приложений (в клиент-серверном варианте) или от имени специального процесса. При анонимном доступе к IIS, который часто настраивают для упрощения работы шлюза msmdpump.dll, запросы к кубу фактически выполняются от имени локальной учетной записи веб-сервера. Если у этой учетной записи нет прав внутри базы данных SSAS, сервер аналитики просто возвращает пустую структуру метаданных, что и приводит к отображению пустого списка кубов в конфигураторе 1С.
Давайте по шагам разберем процесс исправления этой ошибки и корректной настройки всей цепочки взаимодействия.
Прежде всего, убедимся, что строка подключения, которую мы указываем в мастере создания внешнего источника данных 1С, сформирована корректно. Рекомендуется использовать официальный формат строки подключения, адаптированный под требования платформы 1С:
http://<Имя_Вашего_Сервера>:80/msolap/msmdpump.dll?ProviderName=Microsoft Analysis Services&DataSourceName=<Имя_Сервера_SSAS>&Catalog=<Имя_Базы_Данных_SSAS>
Обратите внимание на параметр ProviderName. Версия провайдера (например, MSOLAP.8 или MSOLAP.7) должна быть установлена на компьютере, с которого выполняется подключение (на сервере 1С и на рабочем месте разработчика, где запущен Конфигуратор).
Для того чтобы конфигуратор 1С мог корректно прочитать структуру папок и обратиться к шлюзу, на стороне веб-сервера IIS необходимо включить просмотр каталога. Рассмотрим, как это сделать:
Default Web Site/MSOLAP).Важное примечание по безопасности: Функция просмотра каталога необходима в первую очередь для работы мастера подключения в конфигураторе 1С. После того как структура метаданных успешно импортирована и подключение настроено, в целях безопасности эту функцию на IIS рекомендуется отключить.
Теперь перейдем к главному решению проблемы. Поскольку IIS обрабатывает входящие анонимные запросы через специального системного пользователя, нам необходимо предоставить этому пользователю права на чтение кубов в SSAS.
По умолчанию для анонимного доступа IIS использует встроенную учетную запись NT AUTHORITY\IUSR. Проанализируем, как дать ей необходимые права:
1C_Reader_Anonymous, и установите разрешение на чтение базы данных (Read).NT AUTHORITY\IUSR (если сервер находится в домене, убедитесь, что поиск производится по локальному компьютеру, а не по активному каталогу домена). Нажмите ОК.После применения этих настроек веб-шлюз msmdpump.dll сможет успешно обращаться к метаданным SSAS от имени пользователя IUSR, и список кубов в 1С перестанет быть пустым.
Предоставление прав учетной записи NT AUTHORITY\IUSR — это рабочее и быстрое решение, но оно несет в себе определенные риски безопасности, так как фактически открывает анонимный доступ к вашим аналитическим данным для любого пользователя, имеющего доступ к веб-серверу IIS. Рассмотрим более безопасные альтернативы.
Вариант А: Использование выделенного пула приложений
Вместо использования системной учетной записи IUSR мы можем настроить IIS так, чтобы шлюз выполнялся от имени определенного локального или доменного пользователя:
MSOLAP_AppPool.domain\svc_1colap).MSOLAP укажите использование "Удостоверения пула приложений" (Application pool identity) вместо IUSR.domain\svc_1colap.Вариант Б: Базовая проверка подлинности (Basic Authentication)
Если вам необходимо строго разграничивать доступ к кубам для разных пользователей 1С, настройте базовую аутентификацию:
MSOLAP отключите анонимный доступ и включите Базовую проверку подлинности (Basic Authentication).
http://<Имя_Сервера>/msolap/msmdpump.dll?ProviderName=Microsoft Analysis Services&DataSourceName=<Имя_Сервера>&Catalog=<База>;UID=olap_user;PWD=user_password;
Если после выполнения всех настроек прав доступа список кубов все еще пуст, обязательно проанализируйте разрядность используемого ПО. Это одна из самых частых неявных проблем:
msmdpump.dll, параметр "Разрешить 32-разрядные приложения" (Enable 32-Bit Applications) должен быть установлен в значение False, если вы используете стандартную 64-битную библиотеку шлюза.Мы успешно разобрали все тонкости интеграции 1С с кубами Microsoft SQL Server Analysis Services через HTTP-шлюз. Последовательное выполнение этих шагов гарантирует стабильное подключение и корректное отображение кубов во внешних источниках данных 1С.