QlikView + 1С без 1С коннектора

В качестве бесплатной альтернативы предлагаю простой способ получения информации из 1С через COM-соединение.
Для экспериментов я использовал демо-базу 1С:Управление торговлей 11. Сначала реализуем тестовую функцию в 1С, открываем Модуль внешнего соединения, пишем код:

Функция TestQlik() Экспорт

Возврат «QlikView успешно подключилось к 1С»;

КонецФункции

Теперь в QlikView настраиваем COM-соединение. Открываем редактор макросов, пишем следующий скрипт, подставляем свои параметры подключения к базе:

sub v82connect

set conn = CreateObject(«V82.ComConnector»)
set v82 = conn.Connect(«File=»»I:\1c_base\demoTRD»»;usr=»»QlikView»»;»)

MsgBox(v82.TestQlik)

end sub

Обратите внимание на настройки параметров локальной безопасности, установлена в «Разрешить системный доступ». Жмем «Тест», если все сделано правильно, должно появиться сообщение «QlikView успешно подключилось к 1С».

Теперь попробуем подгрузить данные из 1С. Сначала сформируем пустую таблицу в скрипте загрузки:

SET ThousandSep=’ ‘;
SET DecimalSep=’,’;
SET MoneyThousandSep=’ ‘;
SET MoneyDecimalSep=’,’;
SET MoneyFormat=’# ##0,00р.;-# ##0,00р.’;
SET TimeFormat=’h:mm:ss’;
SET DateFormat=’DD.MM.YYYY’;
SET TimestampFormat=’DD.MM.YYYY h:mm:ss[.fff]’;
SET MonthNames=’янв;фев;мар;апр;май;июн;июл;авг;сен;окт;ноя;дек’;
SET DayNames=’Пн;Вт;Ср;Чт;Пт;Сб;Вс’;

LOAD * INLINE [
Data, Firma, Partner, Tovar, Quantity, Summa, Cost
];

Запускаем скрипт, размещаем простую таблицу на листе:

В свойствах документа включаем динамическое обновление данных:


Пишем скрипт загрузки в редакторе макросов:

sub v82query

set conn = CreateObject(«V82.ComConnector»)
set v82 = conn.Connect(«File=»»I:\1c_base\demoTRD»»;usr=»»QlikView»»;»)

query_1c = «ВЫБРАТЬ» &_
» НАЧАЛОПЕРИОДА(ВыручкаИСебестоимостьПродаж.Период, ДЕНЬ) КАК Data,»& vbNewLine & _
» ПРЕДСТАВЛЕНИЕ(РегистрАналитикаУчетаПоПартнерам.Организация) КАК Firma,»& vbNewLine & _
» ПРЕДСТАВЛЕНИЕ(РегистрАналитикаУчетаПоПартнерам.Партнер) КАК Partner,»& vbNewLine & _
» ПРЕДСТАВЛЕНИЕ(РегистрАналитикаУчетаНоменклатуры.Номенклатура) КАК Tovar,»& vbNewLine & _
» СУММА(ВыручкаИСебестоимостьПродаж.Количество) КАК Quantity,»& vbNewLine & _
» СУММА(ВыручкаИСебестоимостьПродаж.СуммаВыручки) КАК Summa,»& vbNewLine & _
» СУММА(ВыручкаИСебестоимостьПродаж.Себестоимость) КАК Cost»& vbNewLine & _
«ИЗ»& vbNewLine & _
» РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК ВыручкаИСебестоимостьПродаж»& vbNewLine & _
» ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК РегистрАналитикаУчетаПоПартнерам»& vbNewLine & _
» ПО ВыручкаИСебестоимостьПродаж.АналитикаУчетаПоПартнерам = РегистрАналитикаУчетаПоПартнерам.КлючАналитики»& vbNewLine & _
» ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаНоменклатуры КАК РегистрАналитикаУчетаНоменклатуры»& vbNewLine & _
» ПО ВыручкаИСебестоимостьПродаж.АналитикаУчетаНоменклатуры = РегистрАналитикаУчетаНоменклатуры.КлючАналитики»& vbNewLine & _
«СГРУППИРОВАТЬ ПО»& vbNewLine & _
» НАЧАЛОПЕРИОДА(ВыручкаИСебестоимостьПродаж.Период, ДЕНЬ),»& vbNewLine & _
» ПРЕДСТАВЛЕНИЕ(РегистрАналитикаУчетаПоПартнерам.Организация),»& vbNewLine & _
» ПРЕДСТАВЛЕНИЕ(РегистрАналитикаУчетаПоПартнерам.Партнер),»& vbNewLine & _
» ПРЕДСТАВЛЕНИЕ(РегистрАналитикаУчетаНоменклатуры.Номенклатура)»

set v8query = v82.NewObject(«Query»)
v8query.text = query_1c
set result = v8query.Execute

set m = result.Choose

do while m.next
set sql_string = ActiveDocument.DynamicUpdateCommand(«INSERT INTO * «& vbNewLine & _
«(Data, Firma, Partner, Tovar, Quantity, Summa, Cost) » & vbNewLine & _
«VALUES (» & m.Data &», «& m.Firma & «, » & m.Partner & «, » & m.Tovar & «, » & m.Quantity & «, » & m.Summa & «, » & m.Cost & «)»)
loop

ActiveDocument.GetApplication.Refresh

end sub

Обратите внимание на написание текста запроса, это связано с особенностями VBScript. Поэтому лучше описание запроса оставлять на стороне 1С, в QlikView передавать только готовый результат. Так же псевдонимы полей в запросе пришлось писать на латинице, кириллицу не воспринимает. Выделяем нашу процедуру в списке редактора, жмем «Тест». Мы увидим что наша пустая таблица заполнилась данными.


Теперь можно построить пару диаграмм:

При желании можно поставить наш скрипт в выполнение после скрипта загрузки:

Найти решение у бизнес-партнера QlikTech (QlikView) в России.

Форум разработчиков QlikView и Qlik Sense. Получите ответы на все вопросы по QlikView и Qlik Sense!

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий

64 queries in 0,371 seconds