forum.bitel.ru
http://forum.bitel.ru/

Прошу помощи в XLS шаблоне!
http://forum.bitel.ru/viewtopic.php?f=14&t=2201
Страница 1 из 1

Автор:  Евгений [ 16 апр 2009, 18:06 ]
Заголовок сообщения:  Прошу помощи в XLS шаблоне!

Добрый день!

Прошу помочь получить дату.
Мне надо в xls шаблоне к дате прибавить несколько дней - как сделать?

Заранее спасибо за ответ.

В приложении версия сервера и всего остального.

Вложения:
Version.png
Version.png [ 51.79 КБ | Просмотров: 2786 ]

Автор:  Jimson [ 17 апр 2009, 13:59 ]
Заголовок сообщения: 

я работу с датой делал через mysql
вначале выделяем день месяца из даты, эта переменная будет так же полезна для заголовков документов если надо написать что то вроде "счет № .... от 1 марта 2009г"
<xsl:variable name="day_of_month" select="format-number( substring(/data/bill/@date, 1, 2), '0' )" />

затем формируем дату в формате mysql в переменной xsl
<xsl:variable name="dt" select="concat('&quote;', /bill/data/@yy, '-', /bill/data/@mm, '-', $day_of_month, '&quot;')" />

затем обращаемся к mysql для суммирования дат, для примера прибавляем 3 дня

<xsl:variable name="newdt_query" select="sql:select( concat( 'SELECT ADDDATE(', $dt, ', INTERVAL 3 DAY) AS dt' ) )" />

ну и собственно выбираем значение из выборки
<xsl:variable name="newdt" select="$newdt_query/row[1]/@dt" />

Автор:  Amir [ 17 апр 2009, 17:14 ]
Заголовок сообщения: 

Для 4.6
Обновитесь.
Далее сюда http://wiki.bgbilling.ru/index.php/XSLT
(Выполнение скрипта из библиотек скриптов (версия 4.6)).

Создаем библиотеку bill, добавляем код:
Код:
import java.util.Calendar;
import bitel.billing.common.TimeUtils;

public String dateAdd( date, days )
{
  Calendar result = TimeUtils.parseCalendar( date, "dd.MM.yyyy" );
  result.add( Calendar.DATE, (int)days );
  return TimeUtils.format( result, "dd.MM.yyyy" );
}


В xsl:
Добавляем атрибуты в ветку xsl:stylesheet
xmlns:xalan="http://xml.apache.org/xalan"
xmlns:script="bitel.billing.server.util.exslt.Scripting"

далее
<xalan:component prefix="script" functions="invoke">
<xalan:script lang="javaclass" src="xalan://bitel.billing.server.util.exslt.Scripting"/>
</xalan:component>

а в коде будет, например так:
<xsl:value-of select="script:invoke('bill','dateAdd',string(/data/bill/@date),3)" />

Страница 1 из 1 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/