Создание QlikView-файлов из 1С

Автор admin, 17 декабря 2012, 11:06:40

« назад - далее »

admin

Формирование QlikView из 1с, возможно ли это? Почему бы и нет.
Подробности и файлики здесь. Спасибо автору.

Aleksey

В данной ветке не увидел описания, либо вложенных файлов.
Ошибка отображения либо открытая тема? Могу поделиться опытом подключения к 1С.
Тоже самое относится к теме коннекторов 1С...

Aleksey

Даже не знаю с конца приступить :)

Наверное с темы: "Создание QlikView-файлов из 1С". Конечно никаких файлов QlikView создавать из 1С не умею, а вот как выгружать информацию из 1С в QlikView немного расскажу.
*Рассматривается версия 1С 8.х

Начнем с аксиом. 1С работает в 2-х режимах:
• файловый
• клиент-серверный

1. Файловый режим
Файловый режим хранит таблицы данных в файле с форматом собственного приготовления ".1CD".
Пытаться читать из него, на мой взгляд, безумие. При внедрении и реальных задачах с "QlikView + 1С" вы наверняка будите работать с клиент серверным вариантом.
Если потребуется работа именно с файлом, то начать копать можно отсюда: http://infostart.ru/public/19633/

2. Клиент-Серверный режим
Вот тут все понятно. Имеем СУБД на которой крутится 1С, выгружаем данные именно из нее.
Для этого используется поддерживаемый QlikView интерфейс OLE DB.

Для интеграции на сервере QlikView должен быть установлен драйвер ODBC от поставщика СУБД.
Если говорить о MSSQL, то он поставляется и устанавливается автоматически при установке оснастки среды.

В самой модели QlikView подключение выполняется помощи оператора Connect

ЦитироватьСинтаксис:
OLEDB CONNECT TO connect-string [ ( access_info ) ]

Где
connect-string - строка подключения, содержащая информацию по расположению СУБД, пользователю и пр. мелочей.
access_info - генеирируемый в зашифрованном виде пароль для подключения к СУБД. Можно конечно пароль указать явно в первом параметре. Но это не совсем секурно.

Для создания рекомендую использовать конструктор  (вставить -> оператор Connect)

После выполнения подключения можно скачивать данные и загружать в таблицы QlikView.
Для этого используется секция SQL SELECT очень похожая на язык SQL.

У меня выглядит примерно так:
OLEDB CONNECT TO [Provider=SQLOLEDB.1;Persist Security Info=True;User ID=[b][i]UserName[/i][/b];Initial Catalog=[b][i]BaseName[/i][/b];Data Source=[b][i]ServerIP[/i][/b];Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=[b][i]QlikServerName[/i][/b];Use Encryption for Data=False;Tag with column collation when possible=False] (XPassword is [b][i]26СгенерированныхКликомЗнаковПароля[/i][/b]);

СправочникНоменклатура:
LOAD
Код,
Наименование;
SQL SELECT
    СпрНоменклатура._Code Код,
    СпрНоменклатура._Description Наименование
FROM
    _Reference35 СпрНоменклатура;


Если потребуется использовать несколько баз в качестве источников данных, необходимо объявить новый оператор соединения непосредственно перед обращением к таблицам.
При этом подключения к прошлому источнику автоматически завершится.


А теперь пара не очень приятных вещей:
1. Именование таблиц и полей внутри СУБД генерируются 1С-кой автоматически на основе ведомой только ей логике.
Так что в дальнейшем придется работать с наименованиями на подобии _InfoRg14103, Q_001_F_003RRef, _Reference59 и т.п.
Таким образом, потребуется разбираться со структурой хранения таблиц.
Тут на помощь придут инструменты анализа запросов СУБД (например SQL Server Profiler), а так-же обработки для просмотра структуры конфигурации 1С.
Кроме того существуют уже готовые наработки "Коннекторы", которые позволяют интерактивно строить запросы по выборке данных непосредственно из 1С, но об этом наверное расскажу в отдельной теме по коннекторам 1С+QlikView.

2. Любые разработки моделей QlikView для СУБД 1С будут уникальными. Дело в том, что даже если конфигурация совпадает, в каждой развернутой СУБД именование полей будет своим.
Аналогичная ситуация при работе с распределенной ИБ. Именование таблиц в периферийных узлах также отличается - не во всех таблицах, но % на 20 отклонения проскакивают. Закономерности пока выявить не удалось.
Самое страшное - если ваша базы вышла из строя, а бэкап имеет месячную давность. Обновив до последнего релиза вы можете обнаружить, что настроенная ранее модель QlikView перестанет обновляться по причине несоответствия полей. Вот такие пироги.

По большому счету ничего страшного нет.
Если не превращать модель в хаос (не копипастить как-есть запросы из профайлера), и вдумчиво назначать алиасы, то устранение проблем займет не более 20-ти минут.

П.С.
Периодически просматривая модели других разработчиков я убеждаюсь, что необходима выработка неких внутренних стандартов написания модулей.
Несколько раз из-за полного хаоса приходилось просто удалять и писать модули с чистого листа.

admin

#3
Цитата: Aleksey от 05 апреля  2013, 02:21:38  

Наверное с темы: "Создание QlikView-файлов из 1С". Конечно никаких файлов QlikView создавать из 1С не умеют,
Ну здесь готов поспорить.
Во вложении обработка - доработанная Консоль запросов.
Сначала делаем запрос, затем в настройках указываем файлик и если надо, ставим галочку на формировании QVD файлов. В итоге должен сформироваться файл приложения и файл данных из запроса, сформированного в консоли.

Механизм несложен, правда практическая польза в рабочих условиях сомнительна.
Но пригодится может, например для экспресс анализа.

По поводу загрузки из базы 1с, есть уже несколько коннекторов, не приходилось пользоваться?

Aleksey

Цитата: admin от 05 апреля  2013, 05:12:06  
Механизм несложен, правда практическая польза в рабочих условиях сомнительна.

Новый COMОбъект("QlikTech.QlikView") Все гениальное просто! Как то даже не приходило в голову...
Значит в теории можно не только создавать, но и модифицировать скрипты существующих моделей.
В качестве применения - можно разработать некую панель управления скриптом загрузки.

Текущий встроенный интерфейс разработки оставляет желать лучшего...
За обработку спасибо! Попробую поковырять.

Что касается коннекторов - пользовался. Но я думаю стоит в отдельной ветке обсудить.
Цитата: Aleksey от 05 апреля  2013, 02:21:38  
Кроме того существуют уже готовые наработки "Коннекторы", которые позволяют интерактивно строить запросы по выборке данных непосредственно из 1С, но об этом наверное расскажу в отдельной теме по коннекторам 1С+QlikView.

admin

#5
Цитата: Aleksey от 05 апреля  2013, 06:45:08  
Значит в теории можно не только создавать, но и модифицировать скрипты существующих моделей.
В качестве применения - можно разработать некую панель управления скриптом загрузки.
Насчет модифицировать - не уверен, слишком много моментов следует учесть.
А вот формирование скрипта на основе шаблонов, т.е. формирование скрипта в режиме диалога с пользователем в среде 1С - почему бы нет. Тоже, своего рода коннектор-"выгружалка"  :).
Настроить запуск по расписанию - и готов универсальный генератор хранилища для начального уровня.
Выложенная обработка носит характер научного эксперимента  :D, все в руках энтузиастов ;)  ...

Яндекс.Метрика