<< Click to Display Table of Contents >> Navigation: Проект > Документы объектов > Мнемосхемы > Графический редактор MasterGraph > Графический редактор > Элементы палитры графического редактора > Элементы диалога > Календарь рабочих дней > Пример использования |
Данный пример демонстрирует работу формирования некоторых событий по расписанию с игнорированием выходных и праздничных дней.
Поскольку список новогодних праздников каждый год утверждается Правительством РФ, а также некоторые предприятия могут переносить выходные и рабочие дни, оператору необходима возможность самостоятельно составить базу выходных.
Добавляем контрол "Календарь рабочих дней".
Задавать какой день является праздничным или рабочим нужно в режиме исполнения.
Контрол способен сохранять настроенный пользователем табель. Для этого есть параметр "Путь к файлу с исключительными датами". В этот файл (xml) контрол сохраняет введенные пользователем исключения.
В данном примере параметр не заполнен - мы подавать его от скрипта через вход динамизации.
Для взаимодействия с объектами мы разработали специальный скрипт.
Скрипт считывает сохраненный файл, и проверяет поданное на вход "Дата" число, и если день рабочий то на выходе "Рабочий день" формируется - Вкл, иначе – Выкл. Если файл не будет найден (например, пользователь его еще не сформировал), то скрипт будет считать все субботы и воскресенья – выходными, остальные дни – рабочими.
Примечание. У скрипта стоит опрос "По-изменению", то есть скрипт считывает файл только когда изменится вход "Дата" - то есть раз в сутки, это сделано с целью оптимизации. Установка периодического опроса допускается.
На выходе "Путь" формируется путь для считывания файла. Чтобы контрол и скрипт работали с одним и тем же файлом, на вход контрола "Путь к файлу с исключительными датами", подсоединен выход скрипта "Путь".
•Открытие мнемосхемы.
В качестве примера, мы будем открывать мнемосхему по расписанию только в рабочие дни. "Объект 2" каждый день в 12 часов дня формирует сигнал на команду "Сигнал_расписания", используя закладку "Расписание".
Событие "Открыть" проверяет, является ли текущий день рабочим. И если день рабочий и есть сигнал от команды "Сигнал_расписания" то происходит открытие мнемосхемы (через закладку события "Действия").
•Создание табеля.
Табель создается в режиме исполнения.
Например. Нам необходимо отметить дни с 31 декабря по 9 января как выходные.
Щелкаем мышью по 31 декабря.
Жмем правую кнопку мыши и выбираем пункт "Нерабочие дни". 31 число станет помечен черным – как нерабочий
Дни с 3 по 7 января выделим группой. Для этого можно сначала щелкнуть по 3 числу, затем удерживая Shift нажать по 7 числу, либо удерживая клавишу мыши выделить с 3 по 7. Аналогично отмечаем как нерабочие дни:
Теперь сохраняем табель.
Аналогично формируются табель для остальных дней. Прокрутить календарь вперед и назад, можно используя кнопки со стрелками.
Проверим работу табеля.
Подадим на вход "Дата" число 5 января.
День стал отмечен как нерабочий
Скачать пример можно по этой ссылке.