BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 22 июн 2025, 22:37

Часовой пояс: UTC + 5 часов [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
СообщениеДобавлено: 19 апр 2010, 13:41 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Сейчас в параметре /data/contract_data/contract/@gr хранится long число - битовая маска групп договора. Но использовать её средствами одного только xsl нельзя, т.к. в нем отсутствуют побитовые операции.

Может быть есть смысл добавить параметр, скажем bingr, содержащий маску в бинарном представлении, чтобы можно было проверить наличие группы через substring(@bingr,20,1)=1
?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 апр 2010, 15:24 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
почему отсутствуют то?

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 апр 2010, 15:27 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
тут
Код:
<xsl:template name="power">
    <xsl:param name="x"/>
    <xsl:param name="n"/>

    <xsl:choose>
        <xsl:when test="$n = 0">1</xsl:when>
        <xsl:when test="$n = 1">
            <xsl:value-of select="$x"/>
        </xsl:when>
        <xsl:otherwise>
            <xsl:variable name="pow-1">
                <xsl:call-template name="power">
                    <xsl:with-param name="x" select="$x"/>
                    <xsl:with-param name="n" select="$n - 1"/>
                </xsl:call-template>
            </xsl:variable>
            <xsl:value-of select="$x * $pow-1"/>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 апр 2010, 15:29 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
а причём тут степень?))

я немного затупил с сутью вопроса, да, напрямую побитово нельзя....

_________________
I'm clever. I've got a computer.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 апр 2010, 15:37 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Так может добавить? :)

2snark
Ну, возведу я в степень, а "bitwise and" всё равно не сделаешь.
Можно конечно через xmlns:sql="bitel.billing.server.util.exslt.SQLQuery дергать запросом, но некрасиво ведь.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 19 апр 2010, 16:04 
Не в сети
Клиент

Зарегистрирован: 12 фев 2008, 18:10
Сообщения: 3951
Карма: 249
Цитата:
(xslt) support the arithmetic operations "div" and "mod" that you can use to simulate bitwise calculations. For example, to extract the low-order bit from x you could use "x mod 2", and to extract the bit to the left of that you could use "floor(x div 2) mod 2" and like that.

первая ссылка в гугле
Код:
http://google.com/search?q=xsl+bitwise+operations

тут еще есть немного инфы


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 апр 2010, 09:16 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 20 апр 2009, 12:03
Сообщения: 3092
Откуда: Иркутск
Карма: 338
Упс, плохо искал.

Бтв, решение:
Код:
<xsl:if test="floor(/data/contract_data/contract/@gr div 4194304) mod 2 = 1">

- для проверки наличия группы 22
(2^22 = 4194304)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 5 часов [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
POWERED_BY
Русская поддержка phpBB
[ Time : 0.102s | 29 Queries | GZIP : On ]