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

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

23.11.2024 1:39


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

Поэтому я запихала туда только это. Помогите!
11.03.2014 12:07
И для этого поля нужно использовать тип возвращаемых данных "строка"
как у нас вычисляется:
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
Цитата:
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
Подыму тему. Подскажите кто знает как подтянуть контрагента не последнего прихода, а меньше даты "остатка на конец" из Модели: Остатки на дату.
Я так понимаю вместо Get_Document_Info нужна другая таблица?
09.07.2015 21:19
Т.е. интересует контрагент не последнего прихода (т.е. на сегодняшнее число), а чтобы бралась дата, и уже от этой даты искался последний приход и соответствующий контрагент ?
Тогда рекомендую функцию 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 - признак типа МХ для операции: 0 - нет операции, 1 - расход, 2 - приход. -1 - внутреннее перемещение
        select (decode(a.incometype, 0, 
                    decode(a.expensetype, 0, 0, 1), 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 d, supermag.smspec s
        WHERE d.opcode = MyOPCode
          and (d.userop = MyUserOp or MyUserOp is null)
          and d.createdat <= TRUNC(MyDATE)
          and decode(res_0, 0, d.location, 1, d.locationfrom, 2, d.locationto) = MyStoreloc
          and d.docstate = 3 -- статус документа
          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 d, supermag.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 = 3 -- статус документа
          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_all, 9, LENGTH(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
Прошу прощения за тупость, я в SQL не силен, а как это добавить в masdef
09.07.2015 23:28
Пытаюсь так:

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
Как-то описание аргументов функции Article_LastDocID_from_DATE не совпадает с тем, что вы в неё передаете.
4-ый аргумент MyUserOp, а вы туда дату пытаетесь передать, которая должна быть в 5-м аргументе.
Часовой пояс GMT +3, время: 01:39.

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