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&amp;mid=contract&amp;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&amp;mid=contract&amp;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 = 1) но в итоге если у договора еще присутствует любой код договора от 53 до 62 которые имеются в биллинге то меню не отображается.
не работает, что-то не то делаете. Сами подумайте floor(/data/contract_data/contract/@gr div 1) mod 2 == /data/contract_data/contract/@gr mod 2 - это просто значение самого правого бита, т.е. наличие "нулевой" группы

Автор:  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/