Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Бизнес анализ. Движение артикула. Добавление контрагента. : Супермаг Плюс (Супермаг 2000)

29.03.2024 16:09


11.03.2014 11:31
OlegON
 
почитай описание и посмотри, что ты туда напихала...
11.03.2014 12:06
konvik
 
Starter говорит Код клиента считаем так: Get_Document_Info( Article_LastDocID({Место хранения. Код места хранения},{Карточка товара. Артикул},0),'CLIENTINDEX','WI')
Получение наименования контрагента
RAD_GET_Client_Info(TO_NUMBER({...здесь поле задачи с вычислением кода контрагента...}),0)

Поэтому я запихала туда только это. Помогите!
11.03.2014 12:07
Starter
 
И для этого поля нужно использовать тип возвращаемых данных "строка"
как у нас вычисляется:
RAD_GET_Client_Info(TO_NUMBER({Поля задачи. 6. Пост. ПП}),0)
в качестве первого аргумента используется уже существующее поле задачи (где код контрагента последнего прихода).
но можно и вот так:
RAD_GET_Client_Info(TO_NUMBER(Get_Document_Info( Article_LastDocID({Место хранения. Код места хранения},{Карточка товара. Артикул},0),'CLIENTINDEX','WI')),0)
11.03.2014 12:12
konvik
 
Цитата:
Starter И для этого поля нужно использовать тип возвращаемых данных "строка"
как у нас вычисляется:
RAD_GET_Client_Info(TO_NUMBER({Поля задачи. 6. Пост. ПП}),0)
в качестве первого аргумента используется уже существующее поле задачи (где код контрагента последнего прихода).
но можно и вот так:
RAD_GET_Client_Info(TO_NUMBER(Get_Document_Info( Article_LastDocID({Место хранения. Код места хранения},{Карточка товара. Артикул},0),'CLIENTINDEX','WI')),0)
:-* Starter огромное спасибо!
09.07.2015 17:41
hells
 
Подыму тему. Подскажите кто знает как подтянуть контрагента не последнего прихода, а меньше даты "остатка на конец" из Модели: Остатки на дату.
Я так понимаю вместо Get_Document_Info нужна другая таблица?
09.07.2015 21:19
Starter
 
Т.е. интересует контрагент не последнего прихода (т.е. на сегодняшнее число), а чтобы бралась дата, и уже от этой даты искался последний приход и соответствующий контрагент ?
Тогда рекомендую функцию Article_LastDocID изменить.
Вместо нее использовать Article_LastDocID_from_DATE:
Вызов аналогичен Article_LastDocID, только добавлен еще один параметр - дата, начиная с которой идет поиск.
SQL код:
Create or Replace Function Article_LastDocID_from_DATE(
                
MyStoreloc IN SUPERMAG.SMSTORELOCATIONS.ID%TYPE
                
MyArticle IN SUPERMAG.SMCARD.ARTICLE%TYPE
                
MyOpCode IN SUPERMAG.SMDOCUMENTS.OPCODE%TYPE
                
MyUserOp IN SUPERMAG.SMDOCUMENTS.USEROP%TYPE := null,
      
MyDATE IN DATE

return 
VARCHAR2 is
res_all varchar2 
(100);
res_0 integer := -1;
BEGIN
        
-- res_0 признак типа МХ для операциинет операциирасходприход. -внутреннее перемещение
        select 
(decode(a.incometype0
                    
decode(a.expensetype001), 2))
            
into res_0
       from supermag
.saoperation a
            where a
.id MyOpCode
            
and a.incometype*a.expensetype 0;
        
res_0:= nvl(res_0, -1);
        
        IF  
res_0 >= 0 THEN 
        SELECT MAX
(TO_CHAR(d.CREATEDAT'YYYYMMDD') || d.ID)
            
INTO res_all
        FROM supermag
.smdocuments dsupermag.smspec s
        WHERE d
.opcode MyOPCode
          
and (d.userop MyUserOp or MyUserOp is null)
          and 
d.createdat <= TRUNC(MyDATE)
          and 
decode(res_00d.location1d.locationfrom2d.locationto) = MyStoreloc
          
and d.docstate -- статус документа
          
and s.doctype d.doctype
          
and s.docID d.ID
          
and s.article MyArticle;
      ELSE -- 
дял внутренних перемещений всех видов
        SELECT MAX
(TO_CHAR(d.CREATEDAT'YYYYMMDD') || d.ID)
            
INTO res_all
        FROM supermag
.smdocuments dsupermag.smspec s
        WHERE d
.opcode MyOPCode
          
and (d.userop MyUserOp or MyUserOp is null)
          and 
d.createdat <= TRUNC(sysdate)
          and (
d.locationfrom MyStoreloc or d.locationto MyStoreloc)
          and 
d.docstate -- статус документа
          
and s.doctype d.doctype
          
and s.docID d.ID
          
and s.article MyArticle;
      
END IF;
               
        IF 
res_all IS NULL THEN
           
RETURN NULL;   
        ELSE   
          RETURN(
SUBSTR(res_all9LENGTH(res_all) - 8));
        
END IF;
       
EXCEPTION WHEN NO_DATA_FOUND THEN RETURN NULL;
      
END Article_LastDocID_from_DATE;
/
grant execute on supermag.Article_LastDocID_from_DATE to supermag_user;
commit
09.07.2015 22:57
hells
 
Прошу прощения за тупость, я в SQL не силен, а как это добавить в masdef
09.07.2015 23:28
hells
 
Пытаюсь так:

TO_NUMBER(Get_Document_Info( Article_LastDocID_from_DATE({Место хранения. Код места хранения},{Карточка товара. Артикул},0,{Фильтр. Параметр модели. Отчетный период. FDateLast}),'CLIENTINDEX','WI'))

Выдает:

Причина исключения, уровень вложения 1 -----
сообщение: "Ошибка открытия курсора. ORA-06553: PLS-306: ошибочно число или типы аргументов при обращении к 'ARTICLE_LASTDOCID_FROM_DATE'"
исключение: Sm.Core.InteropException
hResult: 80004005h; доп. код: 20012
источник: База данных

----- Причина исключения, уровень вложения 2 -----
сообщение: "ORA-20012: Ошибка открытия курсора. ORA-06553: PLS-306: ошибочно число или типы аргументов при обращении к 'ARTICLE_LASTDOCID_FROM_DATE'
ORA-06512: на "SUPERMAG.CORE", line 324
ORA-06512: на "SUPERMAG.ANALYTICS", line 2224
ORA-06553: PLS-306: ошибочно число или типы аргументов при обращении к 'ARTICLE_LASTDOCID_FROM_DATE'
ORA-06512: на "SUPERMAG.SMARUNTEMPLATE", line 5
ORA-06512: на line 1
"
исключение: Sm.Core.InteropException
hResult: 80004005h; доп. код: 20012
источник: Microsoft OLE DB Provider for Oracle

----- Причина исключения, уровень вложения 3 -----
сообщение: "begin supermag.SMARunTemplate(1886); end;"
исключение: Sm.Core.InteropException
hResult: 80004005h; доп. код: 0
источник: SmLibaryBase trace
10.07.2015 06:48
Mtirt
 
Как-то описание аргументов функции Article_LastDocID_from_DATE не совпадает с тем, что вы в неё передаете.
4-ый аргумент MyUserOp, а вы туда дату пытаетесь передать, которая должна быть в 5-м аргументе.
Часовой пояс GMT +3, время: 16:09.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.