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

Откуда берет данные отчет супермага "остатки" ? : Супермаг Плюс (Супермаг 2000)

23.11.2024 11:01


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

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

Для чего нужно - скриптом получить остатки в ценах последнего прихода на определенную дату.
25.12.2014 12:34
Пополнить бы неплохо, только вот откуда информацию взять. Поэтому и разместил тему, вдруг кто в курсе.
25.12.2014 12:37
Если не обратил внимание, то там ответ на твой вопрос есть.
А взять информацию реверс-инженерией, как все :)
25.12.2014 13:42
Ту тему изучал, но там чуть иное.
Про остатки там два упоминания:
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
В 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
25.12.2014 14:21
Ага, в отчете и смотрел.
Заодно посмотрел список параметров :

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
Как выяснилось экспериментальным путем, работает, если:
1. первый параметр - дата в формате DD.MM.YYYY строка,
2. параметр P_VIEWSUM=2
т.е. запуск должен быть типа:
exec supermag.Rep_Ostatki('23.06.2014',0,0,0,2,0,0,0);
25.12.2014 20:48
Допиши в ту тему, на которую Олег утром ссылался. Кому-нибудь рано или поздно понадобится.
25.12.2014 20:56
Допишу, только сперва повнимательнее изучу параметры и на что они влияют.
От версии СМ, кстати, тоже зависит работоспособность.
Часовой пояс GMT +3, время: 11:01.

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