Здравствуйте!
Оплатили лицензию на 10.1, но прямого дистрибутива найти не смог, только патч. Поэтому решил обновить сначала на 10.0.0.13 (не знаю правда правильно ли это). Однако при обновлении возникла очередная проблема:
invalid request BLR at offset 875
function DM_TEXTTOCURRENCY is not defined
module name or entrypoint could not be found
Error while parsing procedure DM_GET_COPYPARAMPOSITION's BLR
C:\Users\HARITO~1\AppData\Local\Temp\SQL\10.0\_pte.sql
ALTER PROCEDURE DM_GET_COPYPARAMPOSITION (
IDUSER INTEGER,
IDPOS INTEGER,
IDPRICE INTEGER,
ROW INTEGER)
RETURNS (
TAB VARCHAR(42),
ALTTAB VARCHAR(250),
IDNAME INTEGER,
IDEDIZM INTEGER,
BB DOUBLE PRECISION,
BB_ORIGINAL DOUBLE PRECISION)
AS
declare variable POSITIONNAME varchar(510);
declare variable POSITIONCOST VARCHAR(255);
declare variable NAMEBLOB BLOB;
declare variable NAMEBLOB1 BLOB;
declare variable POSITIONEDIZM VARCHAR(100);
declare variable SUPPLIERNAME varchar(252);
declare variable IDEDIZMGROUP integer;
declare variable ID_BLOB_GEN integer;
declare variable NDSVALUE double precision;
declare variable BWITHNDS integer;
begin
-- IDNAME = 'Наименование позиции по прайсу';
execute procedure dm_getpriceposname(ABS(:IDPOS)) returning_values OSITIONNAME;
NAMEBLOB1 = copyvarchartoblob (substring (:POSITIONNAME from 1 for 500));
ID_BLOB_GEN = gen_id(B_GEN_TEMP, 1);
insert into B_TEMP_BLOB(ID, BLOB1) values (:ID_BLOB_GEN, :NAMEBLOB1);
select BLOB1 from B_TEMP_BLOB where ID = :ID_BLOB_GEN into :NAMEBLOB1;
delete from B_TEMP_BLOB where ID = :ID_BLOB_GEN;
execute procedure B_WRITE_NAIMENOVANIE(IDUSER, -1, null, NAMEBLOB1) returning_values :IDNAME, :NAMEBLOB;
--Обоснование
TAB = 'По прайсу'; -- CQ[12585] TAB = 'Позиция по прайсу № '||:ROW;
--Альтернативное обоснование
NDSVALUE = 0;
SUPPLIERNAME = '';
BWITHNDS = 0;
select PS.FNAME, PP.ndsvalue, PP.bwithnds from PM_PRICES PP
join PM_SUPPLIERS PS on PS.ID = PP.IDSUPPLIER
where PP.ID = :IDPRICE
into :SUPPLIERNAME, :NDSVALUE, :BWITHNDS;
-- CQ[12585] -->
-- if (STRLEN(:SUPPLIERNAME) > 200) then --Не паримся с вычислением общей длины а просто обрезаем до 200 символов
-- begin
-- SUPPLIERNAME = substring (:SUPPLIERNAME from 1 for 200)||'...';
-- end
-- CQ[12585] ALTTAB = 'Поставщик: '''||:SUPPLIERNAME||'''. Позиция по прайсу № '||:ROW;
-- ALTTAB = 'По прайсу ('||:SUPPLIERNAME||')'; -- CQ[12585]
ALTTAB = 'По прайсу'; -- csMonitoringAltTab
-- CQ[12585] <--
--Цена
for select LCKTRIMVARCHAR(substring (p.DATAIDENT from 1 for 255)) from pm_priceposareas p
join pm_areas a on a.id = p.idarea
where p.IDPOS = ABS(:IDPOS) and a.areatype = 3 into OSITIONCOST do -- BB = 'Значение цены позиции по прайсу';
begin
if (POSITIONCOST is not null) then
begin
BB = dm_texttocurrency (POSITIONCOST);
BB_ORIGINAL = BB; -- MK CQ[11629]
if (BWITHNDS = 1) then BB = BB/(1 + NDSVALUE / 100); --CQ[7773]
BB = LROUNDN(:BB, 2);
BB_ORIGINAL = LROUNDN(:BB_ORIGINAL, 2); -- MK CQ[11629]
end
end
--Единица измерения
IDEDIZM = null;
POSITIONEDIZM = null;
--Есть ли в прайсе единица измерения заданная ручками с галочкой на разметке прайса
select UserEdIzm from PM_PRICES PP where (PP.ID = :IDPRICE) and (PP.USEREDIZMUSED <> 0)
into OSITIONEDIZM;
if (POSITIONEDIZM is null) then
begin
select LCKTRIMVARCHAR(substring (P.DATAIDENT from 1 for 100)) from pm_priceposareas p
join pm_areas a on a.id = p.idarea
where p.IDPOS = ABS(:IDPOS) and a.areatype = 6 into OSITIONEDIZM;
end
--поиск в B_EDIZM
execute procedure B_FIND_EDIZM(:IDUSER, OSITIONEDIZM,'') returning_values :IDEDIZM ;
if (IDEDIZM is null) then -- не нашли - добавляем
begin
--ищем группу "Единицы измерения по прайсу" если не нашли - добавлем
execute procedure DM_ADD_EDIZMGROUP ('Единицы измерения по прайсу') returning_values :IDEDIZMGROUP;
execute procedure B_ADD_EDIZM (:IDUSER, :IDEDIZMGROUP,:POSITIONEDIZM, OSITIONEDIZM, 1) returning_values :IDEDIZM;
end
suspend;
end
---
Поиск по pte.sql дал ссылку на post117989.html, но эта тема закрыта для меня.
Windows 10 Pro, 64 bit.