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

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

29.03.2024 0:22


16.09.2008 19:09
fbdp
 
Долго ползали по темам и ковыряли запросы и вот до чего дошли :

Как получить остатки на дату –

begin
Supermag.Remains.Calс ('13/09/2008',FALSE,23, 0, FALSE);
End;

Далее во временно табличке SUPERMAG.TTREMAINS получаем все артикулы с остатками на конец 13/09/2008

Для производства

begin
Supermag.Remains.Calcprod ('13/09/2008',FALSE,23, 0, FALSE);
End;

Далее во временно табличке SUPERMAG.TTREMAINSPROD
получаем все артикулы с остатками на конец 13/09/2008


Время работы «SQL2.sql: Выполнение завершено успешно [1,020 c]»
17.09.2008 07:37
kadr
 
Очень хорошо, надо бы в тему по функциям это закинуть
17.09.2008 07:42
OlegON
 
сказал "спасибо", а другие параметры, кроме даты, разобрать не пытались?
17.09.2008 13:11
fbdp
 
разбираемся, как только разберемся , выложу
17.09.2008 14:56
Mihon
 
АААААААА от души! Просто необходимая вещь!
Только бы еще заработала эта штука........

Откуда запускать надо?
Я через DOA компонент запускаю этот скрипт - молчит...
Из-под supermag попробовал и из-под sys попробовал. тишина.
Табличку проверил-пусто
Не нужно, случайно, перед запуском пользователей выгонять или службы останавливать? commit в конце не нужно ставить? или вначале execute immediate ""?
17.09.2008 15:20
kadr
 
Mihon почитай про временные таблицы Oracle. Необходимо выполнять скрипт и читать данные из временной таблицы в рамках одной сессии. Т.е. если ты делаешь через DOA компонент, то тебе сначала надо выполнить скрипт, а потом уже читать данные из таблицы при этом необходимо учитывать что и исполнение скрипта, и чтение данных должно происходить в рамках одного OracleSession и не отключаться между исполнением скрипта и чтением данных
Вроде есть понятие контекста сессии, и используя этот контекст можно читать данные из временной таблицы заполненной в другой сессии, но я про это мало знаю, в каком-то месте могу и ошибаться
17.09.2008 15:26
Mihon
 
Хм... это остобенность табличек, начинающихся с ТТ (как я понял)
То есть я подключился, выполнил скрипт, logoff не делаю, в табличке данные будут. После logoff табличка очистится. ясно.
А в FFRemains никак перетащить нельзя, например? или сделать так, чтобы не очищалась?
(просто есть мысль одна... у нас много самописных отчетов и формочек к ним, было бы неплохо, чтобы в форме ввода параметров, когда пользун нажал кнопку "выполнить", прога запустила бы скрипт на выбранную дату, а потом сам отчет юзал бы заполнееную табличку. вот)
26.09.2008 21:58
YuraZ
 
PROCEDURE CALC(I_DATE IN DATE, I_ISADDINGDATA IN BOOLEAN, I_DOCSTATEMODE IN NUMBER, I_CALCMODE IN NUMBER, I_ISALLREMAINS IN BOOLEAN)

I_DATE - ну тут понятно

I_ISADDINGDATA - будет ли расчет добавляться к уже существующему.
Иначе предварительно чистится таблица TTRemains.

I_DOCSTATEMODE:
0 - DocState = 0
2 - DocState = 2
23 - DocState >= 2

I_CALCMODE:
2 - считать остатки от текущих, т.е. как остатки из smgoods - приходы/расходы
с датой больше I_DATE
3 - считать остатки взяв за основу заранее расчитанные остатки в
административном модуле
иначе - считать остатки на основании документов

I_ISALLREMAINS - показывает все остатки, в том числе и нулевые.
Иначе только ненулевые

Вот вроде и все. Конечно, возможно, что внутри пакета в зависимости от этих параметров есть свои ньюансы, которые сложно узнать не видя исходников :)
29.09.2008 10:04
Mihon
 
У меня, как обычно, со скриптами проблема.
Запускаю в рамках одной сессии в DOA,
Код:
OracleScript1.Lines.Clear;
  OracleScript1.Lines.Append('BEGIN');
  OracleScript1.Lines.Append('  Supermag.Remains.Calс (''23/09/2008'',FALSE,23, 0, FALSE);');
  OracleScript1.Lines.Append('END; ');
  OracleScript1.Execute;
при выполнении пишет ошибку
Цитата:
ORA-06550: Строка 2, столбец 20:
PLS-00302: Компонента 'CALC' должна быть объявлена
Запускал из под sys и из под supermag'а - не видит он процедуру calc.
Как этот скрипт можно запустить в SQL Plus чтобы увидеть результаты?
1.024.6 SP5
29.09.2008 12:08
YuraZ
 
Цитата:
Mihon Запускал из под sys и из под supermag'а - не видит он процедуру calc.
Как этот скрипт можно запустить в SQL Plus чтобы увидеть результаты?
1.024.6 SP5
Заходишь в sql plus.
Пишешь:
execute supermag.remains.calc('10/01/2008', false, 23, 0, false);
select * from supermag.ttremains;
Все.
Часовой пояс GMT +3, время: 00:22.

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