Skip to main content
Announcements
Qlik Connect 2024! Seize endless possibilities! LEARN MORE
cancel
Showing results for 
Search instead for 
Did you mean: 
shlang03
Contributor II
Contributor II

Как выводить текущие заказы в сводной таблице?

Здравствуйте! 

Хотел с Вами посоветоваться по одному вопросу.

Есть таблица на планирование, в которую подтягиваются данные из файла заказы ВЭД и других источников.

Все показатели я рассчитал и сделал.

Вопрос возникает по колонкам 5-7. Нужно чтобы в зависимости от наличия заказов в файле Excel, динамически менялось количество колонок в Таблице на планирование Qlik, нужно чтобы каждый отдельный заказ выводился в новую колонку (период - с начала текущей недели, старые не нужны).

Я решил эту задачу следующим образом:

Ввел переменные дат:

let v_weekstart_day = Day (weekstart(today ()));
let v_weekstart_day_3 = Day (weekstart(today ())+3);
let v_weekstart_day_4 = Day (weekstart(today ())+4);
let v_weekstart_day_5 = Day (weekstart(today ())+5);
let v_weekstart_day_6 = Day (weekstart(today ())+6);

let v_weekstart_day_7 = Day (weekstart(today ())+7);
let v_weekstart_day_10 = Day (weekstart(today ())+10);
let v_weekstart_day_11 = Day (weekstart(today ())+11);
let v_weekstart_day_12 = Day (weekstart(today ())+12);
let v_weekstart_day_13 = Day (weekstart(today ())+13);

let v_weekstart_day_14 = Day (weekstart(today ())+14);
let v_weekstart_day_15 = Day (weekstart(today ())+17);
let v_weekstart_day_16 = Day (weekstart(today ())+18);
let v_weekstart_day_17 = Day (weekstart(today ())+19);
let v_weekstart_day_18 = Day (weekstart(today ())+20);

Ввел переменные с названиями контрагентов:

SET v_zakaz_1='ПК 33';
SET v_zakaz_2='линии';
SET v_zakaz_3='Молдова';
SET v_zakaz_4='ПК 34';
SET v_zakaz_5='Юни';
SET v_zakaz_6='ПК 35';
SET v_zakaz_7='';
SET v_zakaz_8='';
SET v_zakaz_9='';
SET v_zakaz_10='';

(сделал запасные, если они будут добавляться)

И для каждого из контрагентов я прописываю выражение для каждого дня начиная с v_weekstart_day и заканчивая v_weekstart_day_18.

Выражение эти следующие:

SUM({<[Год] = {$(v_current_year)},[№_недели] = {$(v_current_week)},[№_дня] = {$(v_weekstart_day)}, [Заказчик] = {'$(v_zakaz_1)'}>} [Заказы])

Метка:

Заказы $(v_zakaz_1) $(v_current_week) (тек) неделя $(v_weekstart_day) число

В Условный я пишу:

SUM({<[Год] = {$(v_current_year)},[№_недели] = {$(v_current_week)},[№_дня] = {$(v_weekstart_day)}, [Заказчик] = {'$(v_zakaz_1)'}>} [Заказы])>0

чтобы не выводил нули.

Задачу я решил, но решение это уязвимое.

Во-первых, таким образом можно выводить заказы только на определенный период вперед (неделя, две, три), а хотелось бы от этой зависимости уйти, и выводить на неопределенное количество дней вперед начиная от начала текущей недели.

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

Могли бы вы посоветовать более оптимальный путь решения этой задачи? Все необходимое во вложении.

Спасибо!

4 Replies
mrybalko
Creator II
Creator II

Здравствуйте, Александр

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

Из недостатков: динамические показатели должны располагаться последними, экспорт в excel будет работать неправильно.

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

shlang03
Contributor II
Contributor II
Author

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

mrybalko
Creator II
Creator II

У каждого объекта на листе задан свой слой: свойства объекта, вкладка Layout - блок Layer. Там несколько переключателей. При наложении объектов Layer определяет видимость. По смыслу они аналогичны инструментам работы со слоями в MS Office:

Bottom - на задний план

Top - на передний план

Custom - можно задать порядковый номер слоя: чем больше число, тем выше объект.

В примере сводная таблица имеет настройку Bottom. Поэтому при наложении мы не видим часть, которая пересекается с обычной таблицей.

shlang03
Contributor II
Contributor II
Author

Нет, слои точно не подходят, так как нужно в Excel отправлять.