powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Парус и Crystal reports
25 сообщений из 48, страница 1 из 2
Парус и Crystal reports
    #36594832
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем доброго времени суток!

Делаю отчет на CR 9 - реестр бухгалтерских проводок, по желанию бухгалтеров они хотят выбирать несколько счетов по дебету или кредиту. или по тому и другому одновременно.
задала формулу
local NumberVar i;
Local StringVar result := "";
For i :=1 to UBound ({?A2.ACC_NUMBER}) Do //счет по кредиту
(
result := result+" "+{?A2.ACC_NUMBER}[i];
);
result

и соответственно
local NumberVar h;
Local StringVar result := "";
For h :=1 to UBound ({?A1.ACC_NUMBER}) Do //счет по дебету
(
result := result+" "+{?A1.ACC_NUMBER}[h];
);
result

В свойствах параметра установила галочку Allow multiple values

все в общем то работает, в Preview отображается как положено - по нескольким счетам, но....
как только отчет запускаешь из паруса (версия 8.5.2.1) на печать, то прога выводить пустой отчет...
Однако если пвыбрать по обному счету в параметрах, отчет работает и выводит все данные.

Если кто сталкивался с такой проблемой или подобной, подскажите, что можно сдлелать!
заранее всем спасибо!
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36594919
ustass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Временно вывести, например в заголовке отчета, значение передаваемого параметра и сравнить результаты из дезайнера и из Паруса. Очень похоже на то, что в Парусе неправильно формируется или неправильно передается multivalued параметр
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36597609
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ustass,

В заголовке выведено 2 параметра - счет по дебету и счет по кредиту, в парусе почему то оба работаю по одиночному значению, при этом ни каких ошибок не выдает :-((
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36597673
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запустила SQL Монитор: результат запроса Паруса:
SELECT "USR_V_WIRING"."ДАТАУЧЕТА", "USR_V_WIRING"."НОМЕРОПЕРАЦИИ", "USR_V_WIRING"."СОДЕРЖАНИЕОПЕРАЦИИ", "USR_V_WIRING"."ДЕБЕТ", "USR_V_WIRING"."ПБЕ_Д", "USR_V_WIRING"."АНАЛИТИКА1Д", "USR_V_WIRING"."АНАЛИТИКА2Д", "USR_V_WIRING"."АНАЛИТИКА3Д", "USR_V_WIRING"."АНАЛИТИКА4Д", "USR_V_WIRING"."АНАЛИТИКА5Д", "USR_V_WIRING"."КРЕДИТ", "USR_V_WIRING"."ПБЕ_К", "USR_V_WIRING"."АНАЛИТИКА1К", "USR_V_WIRING"."АНАЛИТИКА2К", "USR_V_WIRING"."АНАЛИТИКА3К", "USR_V_WIRING"."АНАЛИТИКА4К", "USR_V_WIRING"."АНАЛИТИКА5К", "USR_V_WIRING"."ОТ_КОГО", "USR_V_WIRING"."КОМУ", "USR_V_WIRING"."МНЕМОКОД", "USR_V_WIRING"."НОМЕНКЛАТУРА", "USR_V_WIRING"."КОЛИЧЕСТВООСН", "USR_V_WIRING"."ОСНЕИ", "USR_V_WIRING"."КОЛИЧЕСТВОДОП", "USR_V_WIRING"."ДОПЕИ", "USR_V_WIRING"."СУММАБУХГАЛТЕРСКАЯОЦЕНКА", "USR_V_WIRING"."СУММАЭКВИВАЛЕНТА", "USR_V_WIRING"."ВАЛЮТА", "USR_V_WIRING"."ДОКУМЕНТОСНОВАНИЕ", "USR_V_WIRING"."ДОКУМЕНТПОДТВЕРЖДЕНИЕ"
FROM "PARUS"."USR_V_WIRING" "USR_V_WIRING"
WHERE ("USR_V_WIRING"."ДАТАУЧЕТА">=TO_DATE ('01-01-2010', 'DD-MM-YYYY')
AND "USR_V_WIRING"."ДАТАУЧЕТА"<TO_DATE ('24-04-2010', 'DD-MM-YYYY'))
AND "USR_V_WIRING"."ДЕБЕТ" LIKE '911;940'
AND "USR_V_WIRING"."КРЕДИТ" LIKE '201/01'
ORDER BY "USR_V_WIRING"."ДЕБЕТ", "USR_V_WIRING"."КРЕДИТ", "USR_V_WIRING"."ДАТАУЧЕТА", "USR_V_WIRING"."НОМЕРОПЕРАЦИИ"

и результат запроса из Crystal Reports:
SELECT "USR_V_WIRING"."ДАТАУЧЕТА", "USR_V_WIRING"."НОМЕРОПЕРАЦИИ", "USR_V_WIRING"."СОДЕРЖАНИЕОПЕРАЦИИ", "USR_V_WIRING"."ДЕБЕТ", "USR_V_WIRING"."ПБЕ_Д", "USR_V_WIRING"."АНАЛИТИКА1Д", "USR_V_WIRING"."АНАЛИТИКА2Д", "USR_V_WIRING"."АНАЛИТИКА3Д", "USR_V_WIRING"."АНАЛИТИКА4Д", "USR_V_WIRING"."АНАЛИТИКА5Д", "USR_V_WIRING"."КРЕДИТ", "USR_V_WIRING"."ПБЕ_К", "USR_V_WIRING"."АНАЛИТИКА1К", "USR_V_WIRING"."АНАЛИТИКА2К", "USR_V_WIRING"."АНАЛИТИКА3К", "USR_V_WIRING"."АНАЛИТИКА4К", "USR_V_WIRING"."АНАЛИТИКА5К", "USR_V_WIRING"."ОТ_КОГО", "USR_V_WIRING"."КОМУ", "USR_V_WIRING"."МНЕМОКОД", "USR_V_WIRING"."НОМЕНКЛАТУРА", "USR_V_WIRING"."КОЛИЧЕСТВООСН", "USR_V_WIRING"."ОСНЕИ", "USR_V_WIRING"."КОЛИЧЕСТВОДОП", "USR_V_WIRING"."ДОПЕИ", "USR_V_WIRING"."СУММАБУХГАЛТЕРСКАЯОЦЕНКА", "USR_V_WIRING"."СУММАЭКВИВАЛЕНТА", "USR_V_WIRING"."ВАЛЮТА", "USR_V_WIRING"."ДОКУМЕНТОСНОВАНИЕ", "USR_V_WIRING"."ДОКУМЕНТПОДТВЕРЖДЕНИЕ"
FROM "PARUS"."USR_V_WIRING" "USR_V_WIRING"
WHERE ("USR_V_WIRING"."ДАТАУЧЕТА">=TO_DATE ('01-01-2010', 'DD-MM-YYYY')
AND "USR_V_WIRING"."ДАТАУЧЕТА"<TO_DATE ('24-04-2010', 'DD-MM-YYYY'))
AND ("USR_V_WIRING"."ДЕБЕТ" LIKE '911' OR "USR_V_WIRING"."ДЕБЕТ" LIKE '940')
AND "USR_V_WIRING"."КРЕДИТ" LIKE '201/01'
ORDER BY "USR_V_WIRING"."ДЕБЕТ", "USR_V_WIRING"."КРЕДИТ", "USR_V_WIRING"."ДАТАУЧЕТА", "USR_V_WIRING"."НОМЕРОПЕРАЦИИ"

Вопрос: как передать кристалу множественное значение одной строкой или парусу передать значения списка...???
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36597877
ustass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению в наличие только CR2008, поэтому проверить свои предложения не смогу
1.Из примера видно что параметр , который генерится в Парусе воспринимается как еденичное значение. Скорее всего это из за того, что CR9 передает мультипараметр со своими разделителями, а не со знаком ";". Поэтому разделитель нужно ставить именно кристаловский. Для этого можно сделать простой отчет с вызовом хранимой процедуры с мультипараметром и в профайлере посмотреть код разделителя.
2.Параметр учавствуетв фильтрации на уровне SQL запроса или внутри отчета как фильтр? Если как фильтр, то можно сделать этот параметр как одиночный, а внутри отчета осуществлять фильтрацию сравнивая каждую строку со всеми значениями этого параметра, разделенными знаком ";" .Это будет долго работать, но как вариант решения может и подойдет.
3.Можно немного ускорить процесс написав на сервере скалярную функцию, которая проверяет на вхождение строки с названием счета в строке с разделителями и поставить эту проверку в секцию where запроса к базе
4.Можно перед основным запросом добавить код на SQL разбирающий строку с разделителями и заносящее уникальные значения во временную таблицу(табличную переменную), после чего добавить inner join таблицы счетов с этой временной таблицей по условию like .... и после запроса удаляющего эту временную таблицу
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36598428
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ustassК сожалению в наличие только CR2008, поэтому проверить свои предложения не смогу
1.Из примера видно что параметр , который генерится в Парусе воспринимается как еденичное значение. Скорее всего это из за того, что CR9 передает мультипараметр со своими разделителями, а не со знаком ";". Поэтому разделитель нужно ставить именно кристаловский. Для этого можно сделать простой отчет с вызовом хранимой процедуры с мультипараметром и в профайлере посмотреть код разделителя.
2.Параметр учавствуетв фильтрации на уровне SQL запроса или внутри отчета как фильтр? Если как фильтр, то можно сделать этот параметр как одиночный, а внутри отчета осуществлять фильтрацию сравнивая каждую строку со всеми значениями этого параметра, разделенными знаком ";" .Это будет долго работать, но как вариант решения может и подойдет.


Спасибо за совет...
в общем реализовали так:
{USR_V_WIRING.ДАТАУЧЕТА} >= {?dBeg}
and {USR_V_WIRING.ДАТАУЧЕТА} <= {?dEnd}
and ({?ДЕБЕТ}='*' or {USR_V_WIRING.ДЕБЕТ} in {@seld})
and ({?КРЕДЕТ}='*' or {USR_V_WIRING.КРЕДИТ}in {@selc})

добавили две формулы: Join({?КРЕДЕТ},";") и Join({?ДЕБЕТ},";")

Скорость работы конечшно оставляет желать лучшего - около 5-8 мин :-(

автор3.Можно немного ускорить процесс написав на сервере скалярную функцию, которая проверяет на вхождение строки с названием счета в строке с разделителями и поставить эту проверку в секцию where запроса к базе
4.Можно перед основным запросом добавить код на SQL разбирающий строку с разделителями и заносящее уникальные значения во временную таблицу(табличную переменную), после чего добавить inner join таблицы счетов с этой временной таблицей по условию like .... и после запроса удаляющего эту временную таблицу

С сожалению я не на столько сильна в этих программах... я тока начинаю писать отчеты :-))
У меня есть Кристал 2008, поэтому если не сложно скиньте как можно реализовать данные 3 пункта :-))
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36599036
Mit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
используйте отчет на основе процедуры:
1. В парусе есть возможность перед запуском отчета запустить процедуру на основании которой заполнить Вам нужную таблицу
2. Можно в процедуре открывать курсор данные из которого передаются в кристал

В обоих случаях надо писать процедуру на pl/sql , в которую передавать номера счетов с разделителем, а в самой процедуре разбирать этот переданный параметры в массив. В оракловом форуме даже был пример.
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36599747
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mit,

Спасибо! О процедуре мы уже подумали, но учитывая мои навыки в написании процедур это займет как минимум день :-)) Отчет нужен срочно, поэтому решили установить в том виде, в котором он есть.
Как только выдастся свободная минутка я обязательно попробую написать процедуру.
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36599838
ustass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
imp25
С сожалению я не на столько сильна в этих программах... я тока начинаю писать отчеты :-))
У меня есть Кристал 2008, поэтому если не сложно скиньте как можно реализовать данные 3 пункта :-))
по поводу особенносттей работы CR2008SP2 и выше я писал тут , но это имеет смысл если вы придумаете как смоделировать мультипараметр в строке, я не уверен, но мне кажется, что разделителем там выступает символ с кодом 0 -'\0'
По поводу пункта 3
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
CREATE function [dbo].[fFindInList](@ICollection varchar( 1000 ),@FindStr varchar( 1000 ),@Delim char( 1 ))
returns int
as 
begin
declare @s int,@f int,@l int
set @l=len(@Delim)

select @s= 0 ,@f=len(@ICollection)
while (@f> 0 )
	begin
	set @f=charindex(@FindStr,@ICollection,@s)
	if @f= 0  	return  0 	
	else
		begin 
		if	(@f= 1  or	substring(@ICollection,@f- 1 ,@l)=@Delim) 
			and 
			(@f+len(@FindStr)>=len(@ICollection) or substring(@ICollection,@f+len(@FindStr),@l)=@Delim) return  1 
		end
	set @s=@f+ 1 	
	end
return  0 

END
и условие
Код: plaintext
1.
2.
3.
4.
5.
6.
...
WHERE "USR_V_WIRING"."ДАТАУЧЕТА">=TO_DATE ('01-01-2010', 'DD-MM-YYYY') 
AND "USR_V_WIRING"."ДАТАУЧЕТА"<TO_DATE ('24-04-2010', 'DD-MM-YYYY')) 
AND "dbo"."fFindInList"(({?multiParamDebet},"USR_V_WIRING"."ДЕБЕТ",';')= 1  
AND "dbo"."fFindInList"(({?multiParamKredit},"USR_V_WIRING"."КРЕДИТ",';')= 1 
...
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36599853
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ustass,

спасибо, сейчас попробую протестировать :-))
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36602908
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пишу очередной отчет :-)))
есть 2 вьюхи: usr_v_furlough (Реестр расходных накладных) с полями:
DOC, //Документ (далее закомментированные поля используются в отчете)
DOCDATE, //Дата документа
STATUS,
STORE_OUT,//Склад
STORE_IN
NOMENCL, //Номенклатура
PRICE,
QUANT,
SUMMA, //Сумма
SMEAS,
quantalt,
measmain,
measalt,
group_code

и usr_v_acts_shortage (реестр актов списания) с полями:

DOC, //Документ
DOCDATE, //Дата документа
SSTORE, //Склад
NOMENCL, //Номенклатура
PRICE,
QUANT,
SUMMA, //Сумма
MEAS,
CODE

Требуется: Нарисовать отчет который будет выводить в основном отчете расходные накладные на заданный период, а в под отчете все акты списания за тот же период.

Вопрос: Как лучше реализовать?

Делала связь по дате документа, но тогда под отчет не работает....
Дела без связи двух отчетов - под отчет тянет все акты списания за весь период существования паруса.
Пробовала сдалать просто отчет с двумя таблицами связанными.... вобще ни каких данных не выводит....

Как быть? Что я не правильно сделала?
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36604718
ustass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
imp25,
если связь только по отрезку дат, товарианта 2
1 Основной отчет запрос по накладным, в подотчете запрос по списаниям,линкуется по параметрам дата начала, дата окончания
2 Основной отчет запрос дат в качестве параметра и формирование шапки. После чего каждая часть отчета как отдельный подотчет линуемые по параметрам дат.
Мне второй вариант нравится больше, т.к. дает гибкость при работе с отчетным периодом и для линковки подотчетов можно использовать не сами параметры введенные пользователем, а некоторые функции от этих параметров. Что позволят сделать шедулинг этого отчета за определенный отрезок в прошлом, зависящий от текущей даты(прошлая неделя, прошлый месяц,...)
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36606531
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению, данный отчет уже установили в базу... точнее 2 отчета :-(
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36617655
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эти отчеты наверно ни когда не кончатся :-((

В базе есть процедура, которая суммирует накладные расходы по какой либо одной номенклатуре
create or replace procedure P_ININVOICESSPECS_OVRHEAD_SUM
(
nCOMPANY in number,
nRN in number, /* спецификация */
nSPREAD_SUMM_SOURCE out number
)
as
nSUM number;
nNOMEN_TYPE number( 17 );
begin
nSUM := null;
/* поиск типа номенклатуры */
begin
select /*+ ORDERED INDEX(IIS) INDEX(DN) */ DN.NOMEN_TYPE
into nNOMEN_TYPE
from ININVOICESSPECS IIS,
DICNOMNS DN
where IIS.COMPANY = nCOMPANY
and IIS.RN = nRN
and IIS.NOMEN = DN.RN;
exception
when NO_DATA_FOUND then
P_EXCEPTION( 0,'Запись номенклатуры с RN = '||nvl(to_char(nRN), '<NULL>')||' не определена.' );
end;
/* поиск записи */
begin
select /*+ ORDERED */
sum(OVHS.SUMM_DOC *
(OVH.CURBASECOURS / OVH.CURCOURSE) * (II.CURCOURS / II.CURBASECOURS) *
(SO.GSMWAYS_TYPE * 2 - 1))
into nSUM
from ININVOICESSPECS IIS,
DOCINPT DI,
DOCLINKS DL,
DOCOUTPT DO,
OVERHEADSSP OVHS,
OVERHEADS OVH,
AZSGSMWAYSTYPES SO,
ININVOICES II
where IIS.COMPANY = nCOMPANY
and IIS.RN = nRN
and IIS.RN = DI.DOCUMENT
and IIS.PRN = II.RN
and DI.UNITCODE = 'IncomingInvoicesSpecs'
and DI.RN = DL.IN_DOC
and DL.OUT_DOC = DO.RN
and DO.UNITCODE = 'RealizationOverheadSpecs'
and DO.DOCUMENT = OVHS.RN
and OVHS.PRN = OVH.RN
and OVH.STOPER = SO.RN;
exception
when others then null;
end;
if nNOMEN_TYPE = 2 then /* услуга */
nSPREAD_SUMM_SOURCE := null;
else
nSPREAD_SUMM_SOURCE := nvl(nSUM, 0);
end if;
end;

как вставить во вьюшку эту саму сумму? Подскажите как написать функцию, которая будет вызываться во вьюхе.

select *
from ininvoices i, ininvoicesspecs ii
where i.doc_date=to_date('28.01.2010','dd.mm.yyyy')
and i.rn=ii.prn

как правильно вставить вычисление?
(сумма (с ндс/без ндс)+накладные расходы)/количество)
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36620177
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все еще актуально
UP
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36621833
ustass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думаю, этот вопрос полностью в компетенции специалистов по Oracle и его стоит задать в соотв ветке. А CR для этого использовать смысла нет
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36622275
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ustass,

Дело в том что в дальнейшем этот запрос будет использоваться для выведения красивого отчетика, точнее поля........ а отчет я буду рисовать в CR
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36622405
Mit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
imp25 приезжайте к нам на курсы. Мы Вас быстренько всему научим. И не будете терзать народ пустяковыми вопросами :)
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36622514
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mit,

К вам это куда?
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36622523
ustass
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
imp25ustass,
Дело в том что в дальнейшем этот запрос будет использоваться для выведения красивого отчетика, точнее поля........ а отчет я буду рисовать в CR
CR работает с рекордсетом, ему все равно какими средствами формируется результирующий датасет. А как использовать возможности СУБД для получения необходимых данных целиком на совести СУБД и разработчика.
Да и так на всякий случай, специалистов по Oracle гораздо больше в ветке СУБД->Oracle, а не в ветке отчетные системы)
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36622529
Mit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так как оффтоп можно напиши на мыло или если есть в аську?
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36622948
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Mit,
ваши данные скрыты.. куда писать?
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36622982
Mit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
написал Вам на адрес электронной почты.
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36623044
buven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ОФФ-топ
Mitimp25 приезжайте к нам на курсы. Мы Вас быстренько всему научим. И не будете терзать народ пустяковыми вопросами :)


Из Алматы в Мытищи?
...
Рейтинг: 0 / 0
Парус и Crystal reports
    #36627458
imp25
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как в Кристал репортс (9) сделать, чтобы не разбивались записи по группам если параметр =*
то есть:
если параметр {?sStore} = Разбить по складам
было бы так:
Склад №1
11
12
13
14

Склад № 2
11
12
13
14 ... и т.д.

если параметр {?sStore} = Не разбивать по складам
Было бы вот так:
11
12
13
14

Я пробовала через формулу скрыть группы - получатся не то что нужно:
11
12
13
14
11
12
13
14

Подскажите что еще можно придумать?
...
Рейтинг: 0 / 0
25 сообщений из 48, страница 1 из 2
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / Парус и Crystal reports
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]