Зачем нужны группы тарифов?
В настройках каждого тарифа есть параметр ‘Тариф принадлежит к N-й группе тарифов’ (N=1..4). ‘Группа тарифов’ это способ поставить метку на данный тариф — в дальнейшем, эта метка будет унаследована звонками, расчитанными с помомощью этого тарифа.
Зачем это нужно? Иногда бывает сложно выделить интересующие звонки, используя обычный подход — по типу звонка или по первым цифрам номера. Например, проблематично (хотя и можно — с помощью исключения лишних звонков) построить отчет по междугородним звонкам (номера начинаются на 8***), но без международных (810*) и сотовых (89**). А с помощью групп задача решается легко:
- разносим тарифы по разным группам: 1 — сотовые (и обычные, городские звонки) , 2 — межгород, 3 — международные
- теперь можно выбирать звонки из разных групп по отдельности: открываем окно параметров выборки и на закладке ‘Время&зона’ выбираем нужную группу. Например, для междугородних звонков в нашем примере следует выбрать группу 2. Остальные параметры выборки можно оставить без изменений (разве что указать диапазон дат)
Группа звонков может быть использована и в бланках отчетов для детализации счета. Например, для примера выше может оказаться полезным бланк, в котором отдельно выводятся данные (и в общей шапке отчета, и для каждого внутр. номера) по трём группам звонков:
- сотовые+городские
- межгород
- международные
Пример такого отчета можно скачать здесь (файл нужно скопировать в папку WinTariff32\Forms). Для вывода суммарных данным по каждой группе тарифов в шапке отчета применены функции CALLSCOUNT(TariffGroupNo), TOTALDURATION(TariffGroupNo), TOTALPRICE(TariffGroupNo). Значения этих функций вычисляются один раз перед подготовкой отчета по всем отобранным звонкам.
Подсчет промежуточных данных для каждого внутреннего телефона устроен сложнее — используется функция SUM():
Примеры:
Подсчет количества звонков:
SUM( IF(TrfGroup=2, 1, 0), MasterData1)
- MasterData1 — это название объекта типа ‘Master data’, который выводит данные для каждого телефона. В функции SUM() это название служит для указание пределов суммирования.
- IF(TrfGroup=2, 1, 0) — функция IF() возвращает 1, если данный звонок принадлежит к тарифной группе 2 (если значение поля TRFGROUP файла Calls.bf равно 2) или 0, если для этого звонка использовались другие тарифы.
Подсчет общей длительности:
SUM( IF(TrfGroup=2, IDuration, 0), MasterData1)
IF(TrfGroup=2, IDuration, 0) — функция IF() возвращает значение поля IDURATION файла Calls.dbf (т.е. длительность
звонка в секундах) если если данный звонок принадлежит к тарифной группе 2 и 0 в противном случае. Так функция SUM()
вернёт значение в секундах, для форматирования в привычный вид HH:MM:SS далее используется функция I2TIME(SUM(..))
Общая стоимость звонков:
SUM( IF(TrfGroup=2, Price, 0), MasterData1)
— аналогично вычислению общей длительности, но используется поле PRICE вместо IDURATION.
Совет: список всех функций WinTariff’a, которые можно использовать в отчетах, можно посмотреть так:
- откройте бланк отчета в редакторе бланков
- далее нужно щелкнуть мышкой любой ‘прямоугольник с тектом’, предназначеный для вывода информации о звонках — откроется маленький текстовый редактор
- левая кнопка на панели инструментов этого редактора называется ‘вставить функцию’ — нажмите её, откроется окно редактора выражений
- нажмите на кнопку ‘Functions’ — откроется окно со списком доступных функций. В левом списке выберите ‘WinTariff functions’ — в правом списке увидите интересующие функции с короткими комментариями