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

Заполнение спецификации документа через скрипт : Супермаг Плюс (Супермаг 2000)

18.04.2024 18:16


06.12.2022 12:36
karachun
 
Доброго дня!!!

Создал документ с помощью
SQL код:
supermag.smdoccreateiw 
Пробую заполнить спецификацию с помощью
SQL код:
supermag.smdocaddspeciw 
Получаю ошибку : ORA-20005: Объект IW.НОМЕР не заблокирован и не может быть изменён.
Подскажите, как заблокировать документ для заполнения и разблокировать после.
06.12.2022 12:43
OlegON
 
Лучше бы приводить полностью код... Там надо не только на документ блокировку ставить, но и сессию регистрировать...
Суть результата блокировки - появление записи в SSLOCKS
06.12.2022 12:50
karachun
 
Создание документа :
SQL код:
declare
  
core_result pls_integer;
  
vDocType varchar2(2) := :doctype;
  
vDocID      varchar2(50) := :docid;
  
vLocationFrom number(30) := :locfrom;
  
vLocationTo number(30) := :locto;
  
vOurSelfClient number(30) := :client;
  
vbasestoreorder  varchar2(50) := :basestoreorder;
  
MESSAGE_STR varchar2(250);
begin
  
if supermag.core.getproc is null then
    core_result 
:= supermag.Core.StartSMApp();
  
end if;
  if 
vDocType 'IW' then
    supermag
.smdoccreateiw
    
(vDocID,
                           
trunc(sysdate),
                           
vLocationFrom,
                           
vLocationTo,
                           
vOurSelfClient,
                           
vbasestoreorder);                                                   
  
end if;
  
commit;
EXCEPTION
  WHEN OTHERS THEN
    
:MESSAGE_STR := SQLERRM;
end
Заполнение спецификации:
SQL код:
declare
  
core_result       pls_integer;
  
vDocID            varchar2(50) := :docid;
  
vArticle          varchar2(50) := :article;
  
vDisplayItem      NUMBER(10) := :displayitem;
  
vExcisetbl        VARCHAR2(1) := :excisetbl; -- Акцизный сбор
  vItemGrossWeight  NUMBER
(143) := :itemgrossweight; -- Вес брутто изделия
  vPackName         VARCHAR2
(50) := :packname; -- значение ''
  
vQuantity         NUMBER(143) := :quantity;
  
vPackStbl         VARCHAR2(1) := :packstbl; -- ???
  
vValidDate        DATE := :validdate; -- Срок годности
  vActuallyQuant    NUMBER
(143) := :actuallyquant; -- Надо проверять на совпадение с Spec.Quantity
  vMoveReason       SLSPECQMISMATCH
.REASON%TYPE := :movereason; -- Причина перемещения
  vMismatchReason   VARCHAR2
(30) := :mismatchreason; --Причина несоответствия.
  
vCause            VARCHAR2(1) := :cause;
  
vProducer         SAPRODUCERS.ID%TYPE := :producer;
  
vItemPrice        NUMBER(194) := :itemprice;
  
vTotalPrice       NUMBER(194) := :totalprice;
  
vItemPriceCur     SMSPEC.ITEMPRICECUR%TYPE := :itempricecur;
  
vTotalPriceCur    SMSPEC.TOTALPRICECUR%TYPE := :totalpricecur;
  
vComplexArticle   SMSPEC.ARTICLE%TYPE := :complexarticle;
  
vComplexQuantity  SMSPEC.QUANTITY%TYPE := :complexquantity;
  
vComplexCompQuant SMSPEC.QUANTITY%TYPE := :complexcompquant;

  
MESSAGE_STR varchar2(250);
begin
  
if supermag.core.getproc is null then
    core_result 
:= supermag.Core.StartSMApp();
  
end if;
  
supermag.smdocaddspeciw(vDocID,
                          
vArticle,
                          
vDisplayItem,
                          
vExcisetbl,
                          
vItemGrossWeight,
                          
vPackName,
                          
vQuantity,
                          
vPackStbl,
                          
vValidDate,
                          
vActuallyQuant,
                          
vMoveReason,
                          
vMismatchReason,
                          
vCause,
                          
vProducer,
                          
vItemPrice,
                          
vTotalPrice,
                          
vItemPriceCur,
                          
vTotalPriceCur,
                          
vComplexArticle,
                          
vComplexQuantity,
                          
vComplexCompQuant);
  
commit;
EXCEPTION
  WHEN OTHERS THEN
    
:MESSAGE_STR := SQLERRM;
end
06.12.2022 12:53
karachun
 
Это создание документа. Это у меня получается. Не получается спецификацию заполнить.
06.12.2022 12:55
karachun
 
SQL код:
supermag.documents.lockdoc
  supermag
.documents.unlockdoc 
не то?
06.12.2022 12:57
OlegON
 
Давно где-то записывал, не могу найти и попробовать под рукой нет...
Трейсить не пробовал? Просто же зацепить за сессию, нажать кнопку редактирования и остановить трейс... Будет сильно все понятнее...
Часовой пояс GMT +3, время: 18:16.

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