Параметрический расчет тарифов
для транспортной компании
Для высоконагруженных сайтов компаний, предоставляющих своим клиентам инструмент оформления заказа он-лайн, оптимизация скорости работы системы и сокращение времени отклика на запрос к информационной базе, являются важными задачами для ИТ-специалистов.
Ниже опишем вариант решения подобной задачи для транспортной компании.
Введем некоторые определения:
- МТ - межтерменальная перевозка или перевозка между городами. Тариф определяется за кг или м3 в зависимости от характеристики груза.
- АД - автодоставка в пределах города. Тариф определяется за услугу в пределах установленных границ диапазона.
- Точка 1, Точка 2 - пункты отправления и получения соответственно.
- Плотность груза - отношение веса груза к его объему, например, 250 кг\м3.
- Характеристика груза: объемный, тяжелый, фиксированный.
- Объемный - груз, плотность которого меньше установленной.
- Тяжелый - груз, плотность которого больше установленной.
- Фиксированный (фикс.прайс) - для определенных весогабаритных характеристик тариф на услуги фиксируется. Например, для груза весом до 20 кг, объемом до 0,128 м3, с максимальными габаритами ДхШхВ = 0,4х0,4х0,8 фиксируется единый тариф на МТ - 500 руб.
Прайс компании, загруженный в систему 1С, представляет плоскую таблицу (см. Рисунок 1)
Тариф на услуги определяется по следующему алгоритму:
- Рассчитывается плотность груза (вес/объем).
- Определяется характеристика груза: фиксированный, объемный, тяжелый.
- Отбираются все записи, соответствующие услуге, направлению перевозки, характеристике груза.
- Определяется интервал (От ; До], в который груз попадает по весу или объему.
- Выводится соответствующий тариф.
В зависимости от количества обслуживаемых направлений Прайс компании может содержать от 3000 до 1 000 000 записей, с учетом оказания услуг не только по перевозке груза между городами, но и внутригородской и краевой автодоставки.
Для сокращения количества записей и как следствие снижения нагрузки на систему можно применить параметрический расчет тарифа (цены).
Параметрический расчет тарифа представляет собой определение стоимости услуги через функцию с предопределенными параметрами, в качестве аргумента функции используется правая граница диапазона (От; До]. В этом случае документ "Прайс" преобразуется в вид, представленный на Рисунке 2.
где a, b, c, d - параметры функции в зависимости от ее вида; k - кратность тарифа (например, тариф может быть кратен 10). Варианты используемых функций представлены на Рисунке 3.
Далее, необходимо определить диапазон, точнее его правую границу "До", исходя из значений веса (или объема), введенных пользователем. Результ расчетов будет являться аргументом (Xt) для функции. В данном примере используется степень числа "2", для этого случая правая граница действия тарифов представлена на Рисунке 4. В связи с тем, что расчет может производиться как от веса, так и объема определим делители для каждого типа груза (Рисунок 5)
В результате общую схему определения тарифа параметрическим способом можно представить следующим образом (Рисунок 6).
Практическое применение. Описанный принцип расчета тарифов на услуги был реализован на платформе 1С 8.3 для отраслевого решения "Курьерские перевозки". Расчет тарифа на перевозку был перенесен на сторону сайта, т.е. установленная функциональная зависимость позволила хранить данные Прайса непосредственно на сайте в виде JSON-структуры. Такое решение полностью сняло нагрузку с 1С при первичном расчете тарифов. Количество запросов, обрабатываемых с допустимой скоростью отклика, увеличилось в 4,5 раза. Количество записей в документе "Прайс" сократилось в 33 раза.
Рисунок 1. Пример структуры документа "Прайс" в 1С
Рисунок 2. Структура документа "Прайс" в 1С при параметрическом расчете тарифов
Рисунок 4. Определение диапазонов действия тарифа
Рисунок 5. Делители и основание степени
Рисунок 6. Общая схема применения параметрического метода определения тарифов на услуги.