Быстро посчитать сальдо по МЦ

ПНР и сопровождение

Модераторы: m0p3e, edward_K, Модераторы

hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Быстро посчитать сальдо по МЦ

Сообщение hope »

Добрый день!

Имеем каталог МЦ ~ 80 тыс наименований.
На складах остатков ~ 8 тыс наименований.
В SaldoMc больше 10 млн записей.
Нужно максимально быстро посчитать сальдо по всем МЦ по конкретному складу.
Какой вариант самый быстрый?
Nalt, Store_Init (в 7.12 есть такая?), доставать данные из SaldoMc? Или еще как-то?
Направьте, плз, по правильному пути!

Спасибо!
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Быстро посчитать сальдо по МЦ

Сообщение n0where »

Через SQL естественно быстрее.
Только что вам нужно? Просто увидеть в отчете или пересчитать галактические.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Быстро посчитать сальдо по МЦ

Сообщение hope »

Нужно для отчета "типа оборотки" посчитать сальдо по всем МЦ на выбранном складе.

Если запросом, то как его правильнее организовать? - чтобы быстро работало.
Учет ведется по Склад - МОЛ - МЦ - Партия.
Циклами? :
1. по KatMc
2. по KatPodr
3. по KatMol
4. по KatParty
5. по SaldoMc
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Быстро посчитать сальдо по МЦ

Сообщение RAJAH »

hope писал(а):1. по KatMc
2. по KatPodr
3. по KatMol
4. по KatParty
5. по SaldoMc
Судя по индексу SALDOMC04, именно так.
Наверное, имеет смысл прямой SQL использовать, раз вопрос скорости критичен.
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Быстро посчитать сальдо по МЦ

Сообщение hope »

Циклами нереально долго получается: пока переберет для каждой из 80 тыс МЦ склад/все МОЛ/все партии и для каждой такой комбинации - отберет все записи сальдо до даты отчета.... в общем, скорость поиска сальдо исчисляется в часах - не подходит.

Пробовала отобрать все записи SaldoMc по нужному складу - тоже не то - начинается экспорт таблицы, который тоже не быстрый....

На прямом SQL можно только готовый запрос выполнить, или циклы по таблицам тоже можно организовать?
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Быстро посчитать сальдо по МЦ

Сообщение RAJAH »

hope писал(а):циклы по таблицам тоже можно организовать?
По идее, можно (sqlNavigateMT, к примеру, или SQLFetch). Есть возможность выгрузить результат запроса в локальную таблицу и далее по ней бегать. Но зачем? Для чего эти циклы? Для суммирования, поиска экстремума? Так лучше сразу в запросе использовать GROUP BY, MAX, MIN.
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Быстро посчитать сальдо по МЦ

Сообщение hope »

Да, вы правы - надо в запросе собрать сразу все нужные данные, без циклов, надеюсь получится!
Спасибо!
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Быстро посчитать сальдо по МЦ

Сообщение hope »

Только вот как сгруппировать? ведь в этой таблице остатки хранятся на дату движения - сгруппировать по дате не получится.
Мне нужно собрать сальдо по МЦ в целом по складу на определенную дату, без разбивки по МОЛ и партии.
Как-то надо отобрать все последние записи сальдо по разрезу Склад/МОЛ/МЦ/Партия и сложить их!!!

Есть какие-нибудь идеи?
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Быстро посчитать сальдо по МЦ

Сообщение Den »

hope писал(а):Добрый день!
...
(в 7.12 есть такая?)?
...
в 7,12 вроде не было еще dsql
oiko
Местный житель
Сообщения: 419
Зарегистрирован: 29 мар 2005, 17:49

Re: Быстро посчитать сальдо по МЦ

Сообщение oiko »

Store_Init;
Store_ReInit;
Store_TypeOstatki(TRUE) ; // входящие остатки
Store_SkladProizv(0);
Store_Run(date1,comp(-2),comp(-2),comp(0),comp(0), true, false, false);
Остатки лягут в таблицу tmpsaldo1
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Быстро посчитать сальдо по МЦ

Сообщение hope »

Если в 7.12 нет DSQL, буду пробовать Store_ - может быть устроит быстродействие....
Спасибо!
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Быстро посчитать сальдо по МЦ

Сообщение Den »

hope писал(а):Если в 7.12 нет DSQL, буду пробовать Store_ - может быть устроит быстродействие....
Спасибо!
Боюсь что нет (
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Быстро посчитать сальдо по МЦ

Сообщение Den »

hope, платформа какая ?
hope
Местный житель
Сообщения: 1353
Зарегистрирован: 29 мар 2005, 17:49
Контактная информация:

Re: Быстро посчитать сальдо по МЦ

Сообщение hope »

MS SQL
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Быстро посчитать сальдо по МЦ

Сообщение Den »

Ну тогда такие пути :
1. Писать свою dll-шку с вызов функции которая будет обращаться к данным mssql и запихивать их в какую то таблу (создать випом свою таблу для этого например)откуда их потом будите брать в теле vip и обрабатывать нужным образом.
2. добавить свою таблу в словарь, со структурой, которая будет собой представлять нужные параметры для получения данных. Далее вставлять фиктивную запись в нее и в тригере на insert вызывать заранее описанную хранимку MSSQL которая также закачивает данными нужными таблу...Это конечно изврат еще тот - но от безысходности почему бы и нет )
3. Озаботиться вопросом обрезания остатков в БД чтобы поджать табл saldomc
Ответить