BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 28 апр 2024, 16:22

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




Начать новую тему Ответить на тему  [ Сообщений: 29 ] 
Автор Сообщение
 Заголовок сообщения: SQL запрос из xsl
СообщениеДобавлено: 12 мар 2014, 21:24 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
В общем задача следующая:
в шаблоне Bill_pdf.xsl хочу сделать запрос в mysql на предмет пренадлежнасти договора к определенной группе договоров.
Но на сколько я понял ответа от мускуля не получаю

Код:
<xsl:variable name="gr" select="contract_data/contract/@gr"/>
       
   <xsl:variable name="queryorg1" select="concat('select ', $gr, '&amp;(1&lt;&lt;1) as org1', '')"/>
   <xsl:variable name="org1" select="sql:select( $queryorg1 )"/>
                                                                         
   <xsl:variable name="queryorg2" select="concat('select ', $gr, '&amp;(1&lt;&lt;2) as org2', '')"/>
   <xsl:variable name="org2" select="sql:select( $queryorg2 )"/>


а дальше смотреть если в переменной org1 >0 то одни реквизиты
если в переменной org2>0 то другие

Но проблема что не получаю ответ от мускуля

помогите найти косяк

Bgbilling 6.0


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 11:37 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
А что должен вернуть ваш запрос вида
Код:
select 666&(1<<1) as org1
select 666&(1<<2) as org2

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 11:42 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Или вам надо проверить бит в имеющейся маске (групп договоров)? Это можно сделать без SQL

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 13:25 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
мне нужно проверить принадлежность данного договора к группе договоров.
Что бы вывести нужные реквизиты в счете.

Объясню по другому:
В биллинге есть договор но организаций несколько а файл Bill_pdf.xls один


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 13:30 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Ну, вообще, ваш способ похож на рабочий, сам запрос вернёт значение > 0 если бит установлен.
Только не очень понятно про xsl , будет ли работать и как уйдёт в SQL. Что значит "не получаю ответ от мускуля"? Не возвращает? Зависает? Падает? А другие запросы работают?
Плюс как варианты:
1. Проверяйте просто биты, без SQL.
2. Сделайте разные Bill_pdf.xls для разных организаций.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 14:07 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
а как это? " Сделайте разные Bill_pdf.xls для разных организаций."


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 15:52 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Ну так это же шаблоны бухгалтерии, которые заводятся в модуле и привязываются явным образом к каждому договору. Делаете разные шаблоны , в каждом свой xls указываете, и привязываете к каждой организации какие нужно.
http://bgbilling.ru/v6.0/doc/ch09s03s03.html

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 15:57 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
У меня тоже несколько организаций.

Я написал java класс, который и вызываю в xsl.

Если интересно могу скинуть пример.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 16:02 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Ну, если изменения в шаблонах небольшие то да, разводить несколько их не очень правильно. Корректнее внутри проверять что надо. Иначе обновление их будет адомъ.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 16:38 
Не в сети
Клиент

Зарегистрирован: 20 мар 2008, 20:20
Сообщения: 676
Откуда: Россия, Иваново
Карма: 36
У меня это работает примерно так:
java:
Код:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ru.lda.billing.xlst;

import java.sql.Connection;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import ru.bitel.bgbilling.server.util.ServerUtils;
import ru.bitel.bgbilling.server.util.Setup;
import ru.bitel.common.XMLUtils;

/**
 *
 * @author lda
 */
public class InfoForBill {
    private Setup setup = Setup.getSetup();
    private Connection con;
    public Element getData(String cid_, String date){
        int cid = Integer.parseInt(cid_);
        Element result = null;
        con = this.setup.getDBConnectionFromPool();
        Document doc = XMLUtils.newDocument();
        try{
            result = doc.createElement("data");
            doc.appendChild(result);
           
           
            result.setAttribute( "param1", "value1");
            result.setAttribute( "param2", "value2");
           
           
        }catch (Exception e){   
            e.printStackTrace();
        }finally{
            ServerUtils.closeConnection(con);
        }
        return result;
    }   
   
}


xsl:
Код:
...
<xsl:stylesheet
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns:fo="http://www.w3.org/1999/XSL/Format"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns:xalan="http://xml.apache.org/xalan"
   xmlns:st="bitel.billing.server.bill.bean.SummaToString"
   xmlns:counter="bitel.billing.server.util.exslt.Counter"   
        xmlns:contract_info="ru.lda.billing.xlst.InfoForBill"
   version="1.0">

        <xalan:component prefix="contract_info" functions="get">
            <xalan:script lang="javaclass" src="xalan://ru.lda.billing.xlst.InfoForBill"/>
        </xalan:component>
...

   <xsl:template match="bill">
            <xsl:variable name="CONTRACT_BILL_INFO" select="contract_info:getData( string(/data/bill/contract_data/@cid))"/>

...

<fo:block>param1 <xsl:value-of select="$CONTRACT_BILL_INFO/@param1"/></fo:block>
<fo:block>param2 <xsl:value-of select="$CONTRACT_BILL_INFO/@param2"/></fo:block>
...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 16:42 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
dimOn писал(а):
Или вам надо проверить бит в имеющейся маске (групп договоров)? Это можно сделать без SQL

как?

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 18:14 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Akhmat писал(а):
dimOn писал(а):
Или вам надо проверить бит в имеющейся маске (групп договоров)? Это можно сделать без SQL

как?

Опа-опа, следим за руками, с помощью не шибко хитрого метода
Код:
(MASK div 2^BIT) mod 2 == 1

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 18:28 
Не в сети

Зарегистрирован: 05 окт 2007, 13:36
Сообщения: 1073
Карма: 46
ооо, красота. вот она, формула, вот она родная. молодец! безо всяких там сдвигов херовых.

_________________
интеграция биллинга с 1с http://bgbilling-1c.ru/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 13 мар 2014, 18:37 
Не в сети
Аватара пользователя

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

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 14 мар 2014, 13:43 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
А можно пояснить что тут что
Код:
(MASK div 2^BIT) mod 2 == 1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 14 мар 2014, 14:15 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
MASK - битовая маска групп договоров
div - деление нацело, в xslt операция присутствует
2^BIT - маска с одним битом, два в степени нужного номера бита. например, для группы 3 это будет 2^3 = 8
mod - остаток от деления, в xslt операция присутствует
1 - наименьшее натуральное число

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 17 мар 2014, 15:51 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
в xsl написал следующее:
Код:
<xsl:variable name="gr" select="contract_data/contract/@gr"/>

fo:block xsl:use-attribute-sets="text" space-after="0.3cm">
<------><------><------><------><------><xsl:if test="($gr div 2^7) mod 2 == 1">реквизиты организации с группой 7</xsl:if>
<------><------><------><------><------><xsl:if test="($gr div 2^8) mod 2 == 1">реквизиты организации с группой 8</xsl:if>
<------><------><------><------></fo:block>


В ответ получаю ошибку

Код:
Неизвестный ИД системы; Номер строки 260; Номер столбца 45; Ожидалось ), обнаружено: ^
(Неизвестное расположение или ошибка)java.lang.ClassCastException: org.apache.xpath.objects.XNumber cannot be cast to java.lang.String


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 17 мар 2014, 15:56 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
Если пишу так:
Код:

<xsl:variable name="gr" select="contract_data/contract/@gr"/>

fo:block xsl:use-attribute-sets="text" space-after="0.3cm">
<------><------><------><------><------><xsl:if test="($gr div 128) mod 2 == 1">реквизиты организации с группой 7</xsl:if>
<------><------><------><------><------><xsl:if test="($gr div 256) mod 2 == 1">реквизиты организации с группой 8</xsl:if>
<------><------><------><------></fo:block>


То получаю такую ошибку:
Код:
Неизвестный ИД системы; Номер строки 260; Номер столбца 45; Ожидался путь, однако был обнаружен следующий маркер:  =
(Неизвестное расположение или ошибка)java.lang.RuntimeException: Запись программиста в getNextStepPos: неизвестный stepType: -1


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 17 мар 2014, 16:51 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
а так попробуйте?
Код:
<xsl:if test="floor($gr div 128) mod 2 = 1">
...
</xsl:if>

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 17 мар 2014, 16:55 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
А если просто вывожу на экран переменную $gr то без разницы в какой группе он или без разницы какой договор всегда выводит число 17


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 17 мар 2014, 16:57 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
dimOn писал(а):
а так попробуйте?
Код:
<xsl:if test="floor($gr div 128) mod 2 = 1">
...
</xsl:if>


нет эффекта

Биллинг 6


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 17 мар 2014, 17:05 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
через phpmyadmin смотрю в таблицу contract в поле gr у одних договоров стоит 145 а у других 273


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 17 мар 2014, 17:16 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
Просматриваю через XML счет и вижу там:
Код:
<contract_data cid="22">
            <contract balance_rest="446.43" cid="22" comment="Абонент №23" date1="05.04.2013" date2="" fc="1" gr="17" limit="0.00" mode="1" param_group="2" pswd="453453334" status="0" status_date="05.04.2013" time="19.02.2014 19:36" title="113020">
                <tariff date1="01.05.2013" date2="" eid="0" emid="0" tariff_plan="Безлимитный доступ 4 мегабита" tpid="4"/>
            </contract>


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 17 мар 2014, 17:24 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Так.. и в чём проблема именно? 17 - это неправильная маска?

и что это вообще такое :lupa:
Код:
java.lang.RuntimeException: Запись программиста в getNextStepPos: неизвестный stepType: -1

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 17 мар 2014, 17:25 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
знак равно один или два, проверьте

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 17 мар 2014, 21:55 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
теперь один знак равно, а нужно 2??


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 18 мар 2014, 17:11 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
Разобрался, дело было в расчете маски.
Теперь другая проблема.
Если генерю счет из билинга то, месяц на английском, а если скриптом с вики то наименование в счете в виде ????????
я так понимаю что то с локалями или с чем?
помогите плиз


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 19 мар 2014, 12:04 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
не с локалями, а с кодировками.
вернее месяц на английском если беспокоит - то это локаль в системе скорее всего неправильная, да.
если в русской локали вопросики - кодировка на каком-то этапе сломана.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL запрос из xsl
СообщениеДобавлено: 20 мар 2014, 08:25 
Не в сети

Зарегистрирован: 31 янв 2013, 12:36
Сообщения: 157
Карма: 0
Трабл решен.

С кодировками все норм везде UTF-8

проблема была с локалями.
решил так:
export LC_ALL=ru_RU.UTF-8


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

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


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

Сейчас этот форум просматривают: Bing [Bot] и гости: 1


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

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