Post-Image

Аптечка первой помощи

Рвав-рвав, собака Смайл говорит “Здрям!”

Представляем вашему вниманию свою 4-ю разработку комплекта отчетности “Офисная жизнь” – отчет “Аптечка первой помощи”, помогающий контролировать наличие в офисе такой важной вещи, как лекарства.

ВАЖНО: Информация, представленная в отчете, носит демонстрационный характер, и не является руководством к действию, собака Смайл при разработке активно пользовался гуглом.

dev_003_screen

Отчет реализован при помощи DAX и Power Query, и построен на базе производственного календаря.

Не устаю посторять, что “Производственный календарь” – наше все. Хотя, раскрою секрет, в данном случае он избыточен, и используется просто календарь с датами. Однако собака Смайл – маленький стратег, и где-то в голове у него стала мелькать идея создать комплект отчетности по принципу “Один файл – много отчетов”. Так что, зрим глубже, пишем универсально, по возможности – просто, и единообразно (наверно, вы уже заметили это по дизайну).

Опять же, для недавно присоединившихся, описание календаря представлено здесь: Производственный календарь

Разработка содержит 2 листа:

  • Сам отчет.

  • Памятка пользователя.

    Используемые элементы:

  • Фильтры (стандартный функционал), боковой панелью фильтрации пользоваться не планируем, поскольку при публикации в интернете она становится недоступной.

  • Кнопки.

  • Закладки.

  • Подсказки.

  • В качестве основного элемента используется “Table” (“Таблица”), а дополнительных – “Card” (“Карточка”) и “Donut chart” (“Кольцевая диаграмма”).

  • Иконки.

  • Дополнительные украшательства – “Text box” (“Текстовое поле”), “Shapes” (“Фигуры”), условное форматирование.

    Процесс разработки:

  • Для указания базового промежутка времени на уровне Power Query были созданы параметры “Start_Date” и “End_Date” – это даты начала и окончания периода, которые выведены в заголовок отчета.

  • Создана таблица “Calendar” – базовая таблица, определяющая набор дат для расчета.

  • Создана таблица “Russian_Holidays” – таблица настройки, содержащая список российских праздников.

  • Создана таблица “Break_Days” – таблица настройки, содержащая даты так называемых “перенесенных” дней.

  • Создана таблица “Measure” – техническая таблица, созданная для удобства, складываем туда меры (по старинке), хоть теперь можно их группировать при помощи каталогов.

  • Создана таблица “Options” – содержит параметры отчета для указания необходимого отрезка времени.

  • Создана таблица “Dataset_Plan” – содержит набор исходных данных, который имеет минимально необходимую структуру для планирования стоимости аптечки, а именно:

    – наименование позиции, которая должна быть в аптечке;

    – плановое количество указанных позиций (поскольку, их может быть больше одной в зависимости от количества сотрудников);

    – плановую цену позиции (ориентировочная цена позиции, так сказать, чтобы представлять бюджет).

  • Создана таблица “Dataset_Actual” – содержит набор исходных данных, который имеет минимально необходимую структуру для контроля текущего состояния аптечки, а именно:

    – наименование позиции, которая должна быть в аптечке;

    – фактическое количество указанных позиций;

    – дату проверки аптечки;

    – фактический срок годности конкретной позиции.

  • Создана таблица “First_Aid” – содержит набор исходных данных, являющийся своеобразным справочником, в котором отражена следующая информация:

    – приоритет позиции;

    – наименование позиции;

    – форму выпуска позиции;

    – справочный срок годности;

    – список симптомов;

    – фармокологическую группу препаратов.

    На этом работы с Power Query завершены.

    Рвав-рвав, видимо, тут стоит пояснить, почему, собственно, так “сложно”.

    Итак, логика хитрой собаки следующая:

  • Количество позиций может быть различно, в зависимости от количество сотрудников, работающих в офисе (планирование количества обязательно, так как таблеток может на всех не хватить).

  • Цена позиции, используемая для оценки стоимости аптечки, близка к реальной, для большей точности конечный потребитель может ее периодически актуализировать, или выставлять фактические цены последней закупки.

  • Срок годности препаратов может быть разным даже при одинаковом названии позиции (например, в аптеке лекарства попались из разных партий). Также есть позиции без срока годности (например, медицинские ножницы), или с большим сроком годности (например, тонометр).

  • Есть очень важный момент: препарат может быть в наличии, но при этом просрочен, что, в свою очередь, означает, что по факту его нет.

    Рвав-рвав, просроченные лекарства – в утиль, однозначно!.

  • Проверку состояния аптечки лучше делать, например, ежемесячно, то есть, мы предполагаем, что сроки годности вносятся исправно, а просроченные препараты заменяются нормальными на постоянной основе :-)

  • Также важно понимать разницу между позициями, составляющими “джентельменский набор” (в примере использовано 20 наименований), и позициями, которые необходимо закупить (их может быть больше 20, в зависимости от размеров коллектива). То есть первое – это некая постоянная величина, когда отсутствие чего-либо дает повод, как минимум, озаботиться данным вопросом, а второе – можно планировать в зависимости от частоты наступления конкретных обстоятельств.

    Проще говоря, не стоит народ на лапах - покупай бинты и йод!”

  • Следующим этапом является проверка связей получившейся модели данных, и их корректировка в случае необходимости. Схема связей представлена ниже:

    dev_002_relations

  • Затем, при помощи DAX, начинаем формировать нужные аналитические разрезы, например, производим деление общего массива данных, сформированного в таблице “Dataset_Actual”, на дополнительные составляющие: в соответствии со сроком годности получаем статус позиции, равный “Нормально” или “Просрочено”.

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

  • При визуализации данных был применен функционал условного форматирования.

  • При визуализации данных был применен функционал всплывающих подсказок.

  • Управление фильтрацией данных в разрезе временных периодов не реализовано специально (за исключением параметров), поскольку в данном отчете, по нашему мнению, важно именно состояние в настоящий момент времени. Именно для этого введена информация о дате последней проверки.

    Особенности разработки:

  • Работа и функционал созданного календаря подробно описана в одной из предшествующих статей, все преимущества сохранены.

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

  • Отчет, на начальном этапе, подскажет, что можно использовать для облегчения появившегося недомогания (см. фильтр “Симптомы”), однако это не панацея, и, по-хорошему, нужно обратиться к врачу.

  • Дополнительно обозначена примерная стоимость аптечки.

  • При разработке отчета данные исходного набора значений вносились непосредственно в Power BI (таблицы “Dataset_Plan”, “Dataset_Actual” и “First_Aid”), дабы конечный файл не зависел от внешних источников. Переключение на внешние источники данных не составляет проблем.

    Граждане, здоровье – штука важная, своевременно и правильно используя данную разработку, можно избежать множества проблем, если вдруг “авось” все-таки наступит.

    Правда, в случае, как у меня на фото, одним йодом не отделаешься. Когда повредил лапу, хозяин, бросив все, вез меня на такси к хирургу. Дело было зимой, напоролся на стекло, закончилось все нормально.

    Собственно, на этом все. Будьте здоровы!

    Ваш Смайл

    ДЛЯ ЛЮБИТЕЛЕЙ ПОНАЖИМАТЬ НА КНОПОЧКИ