[ОТВЕТИТЬ]
Опции темы
24.12.2014 22:55  
Starter
День добрый!
Возник вопрос - откуда стандартный супермаговский отчет остатки берет данные по документам последнего прихода и, соответственно, цене последнего прихода.

Что за временные таблички TTOstatki1 и TTOstatki2 и какая процедура их заполняет ?

Для чего нужно - скриптом получить остатки в ценах последнего прихода на определенную дату.
 
24.12.2014 23:11  
OlegON
Встроенные функции Супермаг 2000
предлагаю ее пополнить :)
 
25.12.2014 12:34  
Starter
Пополнить бы неплохо, только вот откуда информацию взять. Поэтому и разместил тему, вдруг кто в курсе.
 
25.12.2014 12:37  
OlegON
Если не обратил внимание, то там ответ на твой вопрос есть.
А взять информацию реверс-инженерией, как все :)
 
25.12.2014 13:42  
Starter
Ту тему изучал, но там чуть иное.
Про остатки там два упоминания:
1. просто получить остатки -
Supermag.Remains.Calс
затем смотрим остатки (в количестве) в табличке SUPERMAG.TTREMAINS

2. получить остатки "партий" товаров, т.е. остатки по приходам.
supermag.FixRemIncome.Calc(:Date);
затем в ttRemIncome смотрим остатки по приходам.

Необходимо же узнать цену последнего прихода (а также документ/дату). За это, судя по исходникам отчета остатки, отвечают таблички:
TTOSTATKI1 ( поля LOCID, ARTICLE, ID, CREATEDAT) и TTOSTATKI2 (поля LOCID, ARTICLE, QTY, PRICE1, PRICE2, PRICEPREC)
Вопрос в том - какая процедура эти временные таблички заполняет. Возможно Supermag.Rep_Ostatki , но какие у нее входные параметры - непонятно.
 
25.12.2014 13:57  
Mtirt
В 1.031 версии отчет "Остати" уже в формате FastReport.
Судя по этому:
Код:
 DateTime currentDate = (DateTime)Report.GetVariableValue("Date");
      // true, если остатки нужны текущие
      isCurrentDate = ( paramDate.Date == currentDate.Date );
      // true, если в отчете выводятся цены (учетные или последних приходов)
      bool isViewSum = ( ToInt32(Report.GetParameterValue("P_VIEWSUM")) != 0 );
      // true, если в отчете выводятся учетные цены
      isViewAccountPrice = ( ToInt32(Report.GetParameterValue("P_VIEWSUM")) == 1 );
      // true, если в отчете выводятся документы последних приходов
      isViewIncome = ( ToInt32(Report.GetParameterValue("P_VIEWSUM")) == 2 );
      // true, если отчет выводит данные детально по артикулам
      bool isViewArticle = ( ToInt32(Report.GetParameterValue("P_ITOGOONLY")) == 0 );

      // заполняем временные таблицы              
      RepOracleRunner.ExecuteProcedure(host.Connection,"Supermag.Rep_Ostatki", 
        Report.GetParameterValue("P_DATE"),
        Report.GetParameterValue("P_OST"),
        Report.GetParameterValue("P_QTYMIN"),
        Report.GetParameterValue("P_QTYMAX"),
        Report.GetParameterValue("P_VIEWSUM"),
        Report.GetParameterValue("P_VIEWSCALE"),
        Report.GetParameterValue("P_CARDALL"),
        Report.GetParameterValue("P_ONLYNOPRICE"),
        Report.GetParameterValue("P_GROUPSTORE")
        );
Тебе нужна функция Supermag.Rep_Ostatki с параметром P_VIEWSUM=1
 
"Спасибо" Mtirt от:
25.12.2014 14:21  
Starter
Ага, в отчете и смотрел.
Заодно посмотрел список параметров :

OBJECT_NAME ARGUMENT_NAME DATA_TYPE
------------------------------ ------------------------------ -----------
REP_OSTATKI PDATE VARCHAR2
REP_OSTATKI POST NUMBER
REP_OSTATKI PQTYMIN NUMBER
REP_OSTATKI PQTYMAX NUMBER
REP_OSTATKI PVIEWSUM NUMBER
REP_OSTATKI PVIEWSCALE NUMBER
REP_OSTATKI PONLYACCEPTCARD NUMBER
REP_OSTATKI PONLYNOPRICE NUMBER

8 rows selected.

Пробовали запустить - процедура отрабатывает, а вот в табличках пусто.
Будем дальше копать в этом направлении.
 
25.12.2014 16:03  
Starter
Как выяснилось экспериментальным путем, работает, если:
1. первый параметр - дата в формате DD.MM.YYYY строка,
2. параметр P_VIEWSUM=2
т.е. запуск должен быть типа:
exec supermag.Rep_Ostatki('23.06.2014',0,0,0,2,0,0,0);
 
"Спасибо" Starter от:
25.12.2014 20:48  
Mtirt
Допиши в ту тему, на которую Олег утром ссылался. Кому-нибудь рано или поздно понадобится.
 
25.12.2014 20:56  
Starter
Допишу, только сперва повнимательнее изучу параметры и на что они влияют.
От версии СМ, кстати, тоже зависит работоспособность.
 
 


Опции темы



Часовой пояс GMT +3, время: 03:03.

Все в прочитанное - Календарь - RSS - - Карта - Вверх 👫 Яндекс.Метрика
Форум сделан на основе vBulletin®
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd. Перевод: zCarot и OlegON
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.