Быстро посчитать сальдо по МЦ
Модераторы: m0p3e, edward_K, Модераторы
Быстро посчитать сальдо по МЦ
Добрый день!
Имеем каталог МЦ ~ 80 тыс наименований.
На складах остатков ~ 8 тыс наименований.
В SaldoMc больше 10 млн записей.
Нужно максимально быстро посчитать сальдо по всем МЦ по конкретному складу.
Какой вариант самый быстрый?
Nalt, Store_Init (в 7.12 есть такая?), доставать данные из SaldoMc? Или еще как-то?
Направьте, плз, по правильному пути!
Спасибо!
Имеем каталог МЦ ~ 80 тыс наименований.
На складах остатков ~ 8 тыс наименований.
В SaldoMc больше 10 млн записей.
Нужно максимально быстро посчитать сальдо по всем МЦ по конкретному складу.
Какой вариант самый быстрый?
Nalt, Store_Init (в 7.12 есть такая?), доставать данные из SaldoMc? Или еще как-то?
Направьте, плз, по правильному пути!
Спасибо!
Re: Быстро посчитать сальдо по МЦ
Через SQL естественно быстрее.
Только что вам нужно? Просто увидеть в отчете или пересчитать галактические.
Только что вам нужно? Просто увидеть в отчете или пересчитать галактические.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Re: Быстро посчитать сальдо по МЦ
Нужно для отчета "типа оборотки" посчитать сальдо по всем МЦ на выбранном складе.
Если запросом, то как его правильнее организовать? - чтобы быстро работало.
Учет ведется по Склад - МОЛ - МЦ - Партия.
Циклами? :
1. по KatMc
2. по KatPodr
3. по KatMol
4. по KatParty
5. по SaldoMc
Если запросом, то как его правильнее организовать? - чтобы быстро работало.
Учет ведется по Склад - МОЛ - МЦ - Партия.
Циклами? :
1. по KatMc
2. по KatPodr
3. по KatMol
4. по KatParty
5. по SaldoMc
Re: Быстро посчитать сальдо по МЦ
Судя по индексу SALDOMC04, именно так.hope писал(а):1. по KatMc
2. по KatPodr
3. по KatMol
4. по KatParty
5. по SaldoMc
Наверное, имеет смысл прямой SQL использовать, раз вопрос скорости критичен.
Re: Быстро посчитать сальдо по МЦ
Циклами нереально долго получается: пока переберет для каждой из 80 тыс МЦ склад/все МОЛ/все партии и для каждой такой комбинации - отберет все записи сальдо до даты отчета.... в общем, скорость поиска сальдо исчисляется в часах - не подходит.
Пробовала отобрать все записи SaldoMc по нужному складу - тоже не то - начинается экспорт таблицы, который тоже не быстрый....
На прямом SQL можно только готовый запрос выполнить, или циклы по таблицам тоже можно организовать?
Пробовала отобрать все записи SaldoMc по нужному складу - тоже не то - начинается экспорт таблицы, который тоже не быстрый....
На прямом SQL можно только готовый запрос выполнить, или циклы по таблицам тоже можно организовать?
Re: Быстро посчитать сальдо по МЦ
По идее, можно (sqlNavigateMT, к примеру, или SQLFetch). Есть возможность выгрузить результат запроса в локальную таблицу и далее по ней бегать. Но зачем? Для чего эти циклы? Для суммирования, поиска экстремума? Так лучше сразу в запросе использовать GROUP BY, MAX, MIN.hope писал(а):циклы по таблицам тоже можно организовать?
Re: Быстро посчитать сальдо по МЦ
Да, вы правы - надо в запросе собрать сразу все нужные данные, без циклов, надеюсь получится!
Спасибо!
Спасибо!
Re: Быстро посчитать сальдо по МЦ
Только вот как сгруппировать? ведь в этой таблице остатки хранятся на дату движения - сгруппировать по дате не получится.
Мне нужно собрать сальдо по МЦ в целом по складу на определенную дату, без разбивки по МОЛ и партии.
Как-то надо отобрать все последние записи сальдо по разрезу Склад/МОЛ/МЦ/Партия и сложить их!!!
Есть какие-нибудь идеи?
Мне нужно собрать сальдо по МЦ в целом по складу на определенную дату, без разбивки по МОЛ и партии.
Как-то надо отобрать все последние записи сальдо по разрезу Склад/МОЛ/МЦ/Партия и сложить их!!!
Есть какие-нибудь идеи?
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Быстро посчитать сальдо по МЦ
в 7,12 вроде не было еще dsqlhope писал(а):Добрый день!
...
(в 7.12 есть такая?)?
...
Re: Быстро посчитать сальдо по МЦ
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
Store_ReInit;
Store_TypeOstatki(TRUE) ; // входящие остатки
Store_SkladProizv(0);
Store_Run(date1,comp(-2),comp(-2),comp(0),comp(0), true, false, false);
Остатки лягут в таблицу tmpsaldo1
Re: Быстро посчитать сальдо по МЦ
Если в 7.12 нет DSQL, буду пробовать Store_ - может быть устроит быстродействие....
Спасибо!
Спасибо!
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Быстро посчитать сальдо по МЦ
Боюсь что нет (hope писал(а):Если в 7.12 нет DSQL, буду пробовать Store_ - может быть устроит быстродействие....
Спасибо!
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Быстро посчитать сальдо по МЦ
hope, платформа какая ?
-
- Местный житель
- Сообщения: 1844
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
- Контактная информация:
Re: Быстро посчитать сальдо по МЦ
Ну тогда такие пути :
1. Писать свою dll-шку с вызов функции которая будет обращаться к данным mssql и запихивать их в какую то таблу (создать випом свою таблу для этого например)откуда их потом будите брать в теле vip и обрабатывать нужным образом.
2. добавить свою таблу в словарь, со структурой, которая будет собой представлять нужные параметры для получения данных. Далее вставлять фиктивную запись в нее и в тригере на insert вызывать заранее описанную хранимку MSSQL которая также закачивает данными нужными таблу...Это конечно изврат еще тот - но от безысходности почему бы и нет )
3. Озаботиться вопросом обрезания остатков в БД чтобы поджать табл saldomc
1. Писать свою dll-шку с вызов функции которая будет обращаться к данным mssql и запихивать их в какую то таблу (создать випом свою таблу для этого например)откуда их потом будите брать в теле vip и обрабатывать нужным образом.
2. добавить свою таблу в словарь, со структурой, которая будет собой представлять нужные параметры для получения данных. Далее вставлять фиктивную запись в нее и в тригере на insert вызывать заранее описанную хранимку MSSQL которая также закачивает данными нужными таблу...Это конечно изврат еще тот - но от безысходности почему бы и нет )
3. Озаботиться вопросом обрезания остатков в БД чтобы поджать табл saldomc