BiTel

Форум BiTel
bgbilling.ru     docs.bitel.ru     wiki.bitel.ru     dbinfo.bitel.ru     bgcrm.ru     billing.bitel.ru     bitel.ru    
Текущее время: 05 май 2024, 13:34

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




Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: SQL-запрос в счете
СообщениеДобавлено: 17 май 2012, 13:12 
Не в сети

Зарегистрирован: 16 сен 2009, 13:40
Сообщения: 30
Карма: 0
Подскажите, пожалуйста, как вставить SQL-запрос в шаблон счета за услуги связи.
Нашел в WIKI следующее описание:
Объявляется расширение так:

<xsl:stylesheet
version="1.0"
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:sql="bitel.billing.server.util.exslt.SQLQuery">
......
Используется так:

<xsl:variable name="query" select="'SELECT id, title FROM contract'"/>
<xsl:variable name="contracts" select="sql:select( $query )"/>

<xsl:for-each select="$contracts/row"/>
<xsl:value-of select="@id"/>
<xsl:value-of select="@title"/>
</xsl:for-each>

Этот запрос выводит данные по всем абонентам. Как изменить его, чтобы выводилось только для абонента которому создается счет? Что-то вроде SELECT id, title FROM contract WHERE id=xxxx.
Подскажите, что подставить вместо ****.


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

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
а какие поля нада вывести?

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


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

Зарегистрирован: 16 сен 2009, 13:40
Сообщения: 30
Карма: 0
Мне нужно выводить детализацию МГ переговоров. Этот запрос я взял для примера из описания.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL-запрос в счете
СообщениеДобавлено: 18 май 2012, 05:09 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
нене, просто допустим есть поля которые можно получить не запросом, просто я не вкурсе как передать id в счет

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL-запрос в счете
СообщениеДобавлено: 18 май 2012, 12:39 
Не в сети

Зарегистрирован: 16 сен 2009, 13:40
Сообщения: 30
Карма: 0
Мне нужно выводить поля: дата, номер абонента Б, длительность разговора. Все это находится в тблицах log_session_1_yyyymm. Если есть возможность извлечь эти данные без SQL-запроса, подскажите как.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL-запрос в счете
СообщениеДобавлено: 18 май 2012, 12:43 
Не в сети
Клиент
Аватара пользователя

Зарегистрирован: 03 авг 2009, 18:42
Сообщения: 7166
Откуда: Благовещенск
Карма: 241
а, не, неть кажись :(

_________________
Код:
  Клиент: вер. 6.2.714 / 25.05.2015 17:27:15
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
  Сервер: вер. 6.2.881 / 22.05.2015 17:56:55
    os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_45
Помощь по администрированию bgbilling в jabber конференции или Группа в telegram
Стиль программирования - пьяный мастерстер
Разработка мобильных приложений


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL-запрос в счете
СообщениеДобавлено: 18 май 2012, 14:00 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Проверить у себя не могу, пока предположения.
XSL натравливается на XML, в котором информация о счете.
В xml счета есть вот такая информация (это вкратце, всякие атрибуты выкинул, чтобы не загромождать)
Код:
<?xml version="1.0" encoding="windows-1251"?>
<data secret="984BBF2483277311604E298D8DB8E12A" status="ok">
    <inline_params/>
    <bill account>
        <sub_bill cid="3"/>
        <sub_bill cid="4"/>
        <sub_bill cid="5"/>
        <contract_data cid="1">
    </bill account>
</data>


т.е добраться до идентификатора договора можно. Вопрос Вам нужен основной договор или субдоговоры ?
Если основной то, вот так можно попробовать

Код:
<!-- Так объявляем для себя переменную, куда будет сохраняться значения cid -->
<xsl:variable name="mycid" select="/data/bill/contract_data/@cid" />
<!-- Так передаем это значение в SQL запрос -->
<xsl:variable name="query">select id, title from contract where id=<xsl:value-of select="$mycid"/></xsl:variable>
<xsl:variable name="contracts" select="sql:select( $query )"/>
<!-- Перебираем строки запроса -->
<xsl:for-each select="$contracts/row">
<fo:block><xsl:value-of select="@id"/></fo:block>
<fo:block><xsl:value-of select="@title"/></fo:block>
</xsl:for-each>


Если вам нужны данные из log_session_1_.... то запрос модифицируем
Код:
.........
<!-- Так передаем это значение в SQL запрос -->
<xsl:variable name="query">select session_start, to_number_164, round_session_time from log_session_1_201204 where id=<xsl:value-of select="$mycid"/></xsl:variable>
.........


Нужно будет ещё динамически формировать имя таблички в зависимости от года и месяца.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL-запрос в счете
СообщениеДобавлено: 18 май 2012, 15:04 
Не в сети

Зарегистрирован: 16 сен 2009, 13:40
Сообщения: 30
Карма: 0
Большое спасибо за помощь. Ваше предположение полностью оправдалось.
Скажите еще, пожалуйста, как вы узнали, что переменная находится data/bill/contract_data/@cid


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL-запрос в счете
СообщениеДобавлено: 21 май 2012, 07:41 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Посмотрел сформированный xml счета.
XML можно посмотреть из клиентской части.
В 5.2 по крайней мере можно:
Заходим в модуль Bill, переходим к сформированным счетам. Делаем поиск какого-нибудь счета или выводим все счета за месяц, правой кнопкой на конкретном счете - "Просмотр". Откроется закладка с просмотром документов. Там есть кнопочка XML. И видим XML документа, на основании которого формируется счет.
Этот же xml есть в табличке bill_data_[mid].


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL-запрос в счете
СообщениеДобавлено: 22 май 2012, 12:09 
Не в сети

Зарегистрирован: 16 сен 2009, 13:40
Сообщения: 30
Карма: 0
У меня биллинг версии 4.6. Здесь тоже есть возможность просмотра XML.
Запись имеет вид <contract_data cid="6421">. 6421 соответствует id договора в базе данных.
Вопрос в том, как это переводится в переменную <xsl:variable name="mycid" select="/data/bill/contract_data/@cid"/>.

И еще, в моем шаблоне уже есть переменная <xsl:variable name="cid" select="/data/bill/@cid"/>.
Если в SQL использовать ее, получается тот же результат. Может быть и еще где-то есть.

Наверное где-то есть описание этих переменных?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL-запрос в счете
СообщениеДобавлено: 22 май 2012, 12:58 
Не в сети
Аватара пользователя

Зарегистрирован: 30 май 2008, 15:51
Сообщения: 6055
Карма: 244
Вы же сами сказали что видите XML, там явно видно структуру XML и что cid берётся по xpath: /data/bill/contract_data/@cid. Это никакая не переменная, какое ещё описание нужно? Структуры XML? Всё вроде из семантики понятно…

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL-запрос в счете
СообщениеДобавлено: 23 май 2012, 14:01 
Не в сети
Клиент

Зарегистрирован: 27 окт 2009, 16:17
Сообщения: 319
Откуда: Иркутск
Карма: 18
Цитата:
Вопрос в том, как это переводится в переменную <xsl:variable name="mycid" select="/data/bill/contract_data/@cid"/>.

dimOn писал(а):
cid берётся по xpath: /data/bill/contract_data/@cid.

т.е из xml с помощью XPath берем значение атрибута и запоминаем в переменную mycid.
Если в xsl уже есть переменная cid и "видна" (доступна) в том месте, где выполняется SQL запрос, то используем её.
Согласен с dimOn, что вроде интуитивно понятно из названий что к чему.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SQL-запрос в счете
СообщениеДобавлено: 24 май 2012, 11:22 
Не в сети

Зарегистрирован: 16 сен 2009, 13:40
Сообщения: 30
Карма: 0
Вроде бы разобрался. Еще раз большое спасибо за помощь.


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

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


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

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


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

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