Для магазина полиграфических услуг ООО "Полиграфмастер" потребовался калькулятор расчета стоимости тиража. Я взял наш типовой калькулятор из Marketplace, но оказалось, что применить его для этой задачи без переделки невозможно. Порядок расчета был задан заказчиком вот так:
Как видно требовался расчет по формуле. Но это еще "полбеды". Основная "беда" была в таблице связей коэффициентов. Надо было реализовать логику при которой выбор значений в одном поле - изменял возможность выбора значений в другом. Стало ясно, что универсальный калькулятор далеко не так универсален, как хотелось бы.
Формулу удалось реализовать довольно просто и изящно. Добавил свойство следующего содержания: (K_1*K_4+40+K_2+K_3)*K_5, где K_1 ... N префиксы символьных кодов соответствующих свойств-коэффициентов, а вот с зависимыми полями пришлось попотеть...
В результате родился такой монстр к описанию поля Тип переплета (K2): fr=3&fra=dws&frf=3:1,2;5:1,2&fd=pereplet, что в переводе означает: fr (field relation) = 3 - услуга K_2 имеет связь с услугой K_3 fra (field relation action) = dws - действие по связи - скрыть, когда выбрано (dws - disabled when selected) frf (field relation field) = 3:1,2;5:1,2 - поля 3 и 5 услуги 2 связываются с полями 1 и 2 услуги 3 fd (field dictionary) = pereplet - услуга K_2 связывается со справкой в полиграфическом справочнике с кодом "pereplet" (раздел с кодом "pereplet";)
Вот так выкрутился. Полный скриншот настройки - приведен ниже. Там есть еще одна настройка fc (field check ) =int, что означает провести проверку поля на целое значение.
В общем появился повод серьезно задуматься над качественной и системной переработкой инструментария калькулятора, чтобы он оправдывал свое гордое название "универсальный".
Здравствуйте, я тоже не понял про "то, что в параметрах калькулятора значится как "Отображать поле количества расч. единиц? (Нет=1)". Как можно ввести количество услуг?
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».