forum.bitel.ru http://forum.bitel.ru/ |
|
Как можно узнать параметры договора в Action http://forum.bitel.ru/viewtopic.php?f=19&t=5809 |
Страница 1 из 1 |
Автор: | madmax [ 22 авг 2011, 16:34 ] |
Заголовок сообщения: | Как можно узнать параметры договора в Action |
Подскажите где можно посмотреть различные параметры которые передаются в Web. Например из форума понятно что параметры договора можно посмотреть через /data/contract_data/parameters/parameter[@pid= А как посмотреть синтаксис возможных параметров? Например интересует как получить через WEB ID группы договора. |
Автор: | dimOn [ 22 авг 2011, 16:38 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
вопрос непонятен. это не "синтаксис параметров", это просто xpath, который вытаскивает данные из заведомо определённой к этому моменту xml. xml можно поглядеть указав контенттипе=xml upd. т.е. добавив в адресную строку &contentType=xml |
Автор: | dimOn [ 22 авг 2011, 16:43 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
xml примерно такая: Цитата: <data action="ChangeTariff" balance_mode="1" comment="тестовый договор" contract="dimon" fc="0" id="352715" mid="contract" module="contract" notificationsCount="0" step="0" title="dimon" to_tariff="-1" to_tariff_title="" year="2011"> .... <contract_data> <contract balance_rest="444.19" cid="352715" comment="тестовый договор" date1="04.02.2009" date2="" fc="0" gr="536870912" limit="-50.00" mode="1" param_group="0" pswd="123456" status="4" status_date="01.09.2007" time="22.08.2011 16:39" title="dimon"> .... вон вам и маска групп |
Автор: | dimOn [ 22 авг 2011, 16:45 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
очевидно, получить её можно запросом Код: /data/contract_data/contract/@gr . что такое id группы договора (там нет id, это номер что-ли?) и куда и в каком виде её нужно получить - тут уже непонятно...
|
Автор: | madmax [ 22 авг 2011, 17:10 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Вот например режим договора можно получить "/data=/@balance_mode=1" А группу получается так - "/data/contract_data/contract/@gr= Я имел ввиду ID группы это код группы - в справочниках->другие->Договора-группы. Хочу в личном кабинете сделать проверку на группу, если договор принадлежит определенной группе тогда показать ему Action. Вроде такого <xsl:if test="/data/contract_data/contract/@gr=1"> |
Автор: | dimOn [ 22 авг 2011, 17:20 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
так не получится, потому что там не номер, а маска! то есть если будет больше одной группы, то уже будет число непонятное для сравнения. надо пользоваться битовыми операциями. надо сравнивать по маске. в xslt нет битовых фишек, но есть разные трюки. гуглится. если не найдёте - в личке спросите, подскажу |
Автор: | Cromeshnic [ 23 авг 2011, 06:53 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Рабочий пример: Код: <!-- Проверяем наличие групп 22,26,27 -->
<xsl:if test="(floor(/data/contract_data/contract/@gr div 4194304) mod 2 = 1) or (floor(/data/contract_data/contract/@gr div 67108864) mod 2 = 1) or (floor(/data/contract_data/contract/@gr div 134217728) mod 2 = 1)"> <!-- ... --> </xsl:if> |
Автор: | madmax [ 23 авг 2011, 10:30 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Спасибо за пример, это то что нужно. |
Автор: | madmax [ 06 ноя 2012, 10:14 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Не пойму почему так происходит пытаюсь сделать чтобы меню отображалось только если у договора присутствует код договора 0. Прописываю floor(/data/contract_data/contract/@gr div 1) mod 2 = 1) но в итоге если у договора еще присутствует любой код договора от 53 до 62 которые имеются в биллинге то меню не отображается. Все договора которые меньше 53 и у которых есть код договора 0 - все работает. Почему так? Никто с таким не сталкивался |
Автор: | dimOn [ 06 ноя 2012, 11:16 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
полный код покажите |
Автор: | madmax [ 06 ноя 2012, 11:58 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Код: xsl:if test="floor(/data/contract_data/contract/@gr div 1) mod 2 = 1"><li><a href="?action=Parameters&mid=contract&contractId={$CONTRACT_ID}">Test</a></li></xsl:if> .В общем как я понимаю все договора которые выше 53 дают число начинающиеся от 9 и с 16 знаками. А данный код не можем применить вышеуказанную математику поэтому не отрабатывает если на договоре имеется группа с кодом выше 53 |
Автор: | snark [ 06 ноя 2012, 12:44 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Код: остаток от деления (группа деленная на один) на 2 = 1 м? |
Автор: | madmax [ 12 ноя 2012, 11:52 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Так что тупик, получается. Никак не вытащить номер группы? |
Автор: | dimOn [ 12 ноя 2012, 13:25 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
номер группы это бит в маске. проверить его можно как выше указано. |
Автор: | madmax [ 12 ноя 2012, 13:38 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Да это понятно. Но когда у клиента стоит 53,54,55 группа как узнать что у него есть именно 53 что соответствует битовой маске 9007199254740992 Код: xsl:if test="floor(/data/contract_data/contract/@gr div 9007199254740992) mod 2 = 1"><li><a href="?action=Parameters&mid=contract&contractId={$CONTRACT_ID}">Test</a></li></xsl:if> Понимаете такой код не отрабатывает. |
Автор: | dimOn [ 13 ноя 2012, 11:42 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Ну вообще всё корректно, проверил. Тока надо учесть что группы нумеруются с нуля, но вроде всё корректно. Вы сервер перезагружаете? Потому как если даже это: Цитата: чтобы меню отображалось только если у договора присутствует код договора 0. не работает, что-то не то делаете. Сами подумайте floor(/data/contract_data/contract/@gr div 1) mod 2 == /data/contract_data/contract/@gr mod 2 - это просто значение самого правого бита, т.е. наличие "нулевой" группы
Прописываю floor(/data/contract_data/contract/@gr div 1) mod 2 = 1) но в итоге если у договора еще присутствует любой код договора от 53 до 62 которые имеются в биллинге то меню не отображается. |
Автор: | madmax [ 13 ноя 2012, 11:53 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Если вы внимательнее почитаете, то увидите что в последней теме я написал Код: floor(/data/contract_data/contract/@gr div 9007199254740992) mod 2 = 1 где группа 53 и данный код не работает. Про нулевую группу у меня тоже все работает. А свыше 53 группы уже не работает
|
Автор: | dimOn [ 13 ноя 2012, 13:55 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Т.е. до 53 всё работает, а всё что выше уже нет? Ну тут я не знаю даже, переполнение может) |
Автор: | madmax [ 12 дек 2012, 16:51 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Так что получается приехали. Математика не работает не умеет она считать такие большие значения. Ни у кого нету другого решения по выявлению определения группы договора |
Автор: | madmax [ 13 мар 2013, 13:09 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
Разработчики скажите что нету способа ограничить возможность группа свыше 53 видеть определенные разделы меню? |
Автор: | skn [ 13 мар 2013, 21:27 ] |
Заголовок сообщения: | Re: Как можно узнать параметры договора в Action |
как вариан добавте параметр на договор с флагами, кому что можно показывать и проверяйте этот флаг в ЛК |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |