Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) СводныйОстаток() (число прочтений - 8428 )
VasilyKushnir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
СводныйОстаток()
24. Апреля 2008 :: 09:58
Печать  
Есть ли в 1С++ аналог функции
Регистр.Остатки.СводныйОстаток()? Т.е. работающий быстрее штатной функции.
В чем проблема: сначала селектом выбираю список товаров по определенным условиям, затем по каждому товару обрабатываю подчиненный справочник Серии.  Загвоздка в том, что нужны только серии, на которых есть остаток. В результате Регистр.Остатки.СводныйОстаток()  (по сериям разумеется) выполняется сумашедшее количество раз...
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: СводныйОстаток()
Ответ #1 - 24. Апреля 2008 :: 10:05
Печать  
Ничто не мешает завести собственный класс Регистр.Остатки и ввести там метод СводныйОстаток()
и написать реализацию метода прямыми запросами.
Однако есть большие сомнения что данный метод 1С может быть улучшен - в отличии
от запросов и бухитогов работа с регистрами гораздо более продумана.
  
Наверх
 
IP записан
 
VasilyKushnir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: СводныйОстаток()
Ответ #2 - 24. Апреля 2008 :: 10:13
Печать  
Жаль... После отключения Регистр.Остатки.СводныйОстаток() отчет формируется в 3-4 раза быстрее.... Другими словами определение остатков по сериям "съедает"до 75% общего времени формирования.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: СводныйОстаток()
Ответ #3 - 24. Апреля 2008 :: 10:27
Печать  
VasilyKushnir писал(а) 24. Апреля 2008 :: 10:13:
Жаль... После отключения Регистр.Остатки.СводныйОстаток() отчет формируется в 3-4 раза быстрее.... Другими словами определение остатков по сериям "съедает"до 75% общего времени формирования.


Почему жаль?
Делаешь свой класс - наследник Регистр.Остатки и переопределяешь единственный метод -
СводныйОстаток() - дел на полчаса. Тест в студию - вообще замечательно.

P.S> и можно взглянуть как он вызывается - не часом вроде
Рег.СводныйОстаток(,,,ВыбСерия) ?
  
Наверх
 
IP записан
 
VasilyKushnir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: СводныйОстаток()
Ответ #4 - 24. Апреля 2008 :: 10:33
Печать  
     спр                                          = СоздатьОбъект("Справочник.Серии");
     спр.ИспользоватьВладельца(Товар);
     спр.ВыбратьЭлементы();
     
     Пока спр.ПолучитьЭлемент() = 1 Цикл
           Если ВыбСклад.Выбран() = 1 Тогда
                 Склад      = ВыбСклад;
           Иначе
                 Склад      = Товар.Отдел;
           КонецЕсли;
           
           Остаток = Регистр.Остатки.СводныйОстаток(Товар, Склад, спр.ТекущийЭлемент(),,,,,"Кво");
           
           Если Остаток <= 0 Тогда
                 Продолжить;
           КонецЕсли;
........
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: СводныйОстаток()
Ответ #5 - 24. Апреля 2008 :: 10:39
Печать  
В индекс попадаешь.
А сколько может быть серий у Товара? И товаров?
Если много - может быть лучше ВыгрузитьИтоги(), с соответствующим фильтром.
  
Наверх
 
IP записан
 
VasilyKushnir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: СводныйОстаток()
Ответ #6 - 24. Апреля 2008 :: 10:49
Печать  
Много - до сотни и выше. Хотя есть и меньше десятка.
А относительно ВыгрузитьИтоги() хорошая идея  - обязательно попробую.
Номенклатура в районе 20тыс, в отчет (согласно кучи условий) попадает 8-9 тыс товаров.
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: СводныйОстаток()
Ответ #7 - 24. Апреля 2008 :: 10:55
Печать  
VasilyKushnir писал(а) 24. Апреля 2008 :: 10:49:
Много - до сотни и выше. Хотя есть и меньше десятка.
А относительно ВыгрузитьИтоги() хорошая идея  - обязательно попробую.

Или ВыбратьИтоги(). Иногда быстрей, чем ВыгрузитьИтоги() работает.
  
Наверх
ICQ  
IP записан
 
VasilyKushnir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: СводныйОстаток()
Ответ #8 - 24. Апреля 2008 :: 10:57
Печать  
Попробую и то и другое - на таком сумашедшем массиве данных хорошо будет сравнить оба метода.
Вот только ВыбратьИтоги() не имеет фильтра по сравнению с ВыгрузитьИтоги()....
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: СводныйОстаток()
Ответ #9 - 24. Апреля 2008 :: 11:05
Печать  
VasilyKushnir писал(а) 24. Апреля 2008 :: 10:49:
Много - до сотни и выше. Хотя есть и меньше десятка.
А относительно ВыгрузитьИтоги() хорошая идея  - обязательно попробую.
Номенклатура в районе 20тыс, в отчет (согласно кучи условий) попадает 8-9 тыс товаров.


Так это отчет??? И по 8000 товаров * 20 серий считает СводныйОстаток?
Да метод просто летает при таких условиях Улыбка

Переделай лучше на запрос - прямой, ест-но.
  
Наверх
 
IP записан
 
VasilyKushnir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: СводныйОстаток()
Ответ #10 - 24. Апреля 2008 :: 11:12
Печать  
kiruha писал(а) 24. Апреля 2008 :: 11:05:
Так это отчет??? И по 8000 товаров * 20 серий считает СводныйОстаток?
Да метод просто летает при таких условиях Улыбка

Переделай лучше на запрос - прямой, ест-но.


Т.е., предлагаешь Select и на выборку  остатков по сериям? Но мне надо общее к-во серий и серии с остатками....
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: СводныйОстаток()
Ответ #11 - 24. Апреля 2008 :: 11:13
Печать  
VasilyKushnir писал(а) 24. Апреля 2008 :: 11:12:
kiruha писал(а) 24. Апреля 2008 :: 11:05:
Так это отчет??? И по 8000 товаров * 20 серий считает СводныйОстаток?
Да метод просто летает при таких условиях Улыбка

Переделай лучше на запрос - прямой, ест-но.


Т.е., предлагаешь Select и на выборку  остатков по сериям? Но мне надо общее к-во серий и серии с остатками....


Именно так. Все результаты из запроса.
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: СводныйОстаток()
Ответ #12 - 24. Апреля 2008 :: 11:14
Печать  
VasilyKushnir писал(а) 24. Апреля 2008 :: 10:57:
Вот только ВыбратьИтоги() не имеет фильтра по сравнению с ВыгрузитьИтоги()....

Ты эта... Не принимал с утра? Улыбка
  
Наверх
ICQ  
IP записан
 
VasilyKushnir
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 38
Зарегистрирован: 13. Сентября 2007
Re: СводныйОстаток()
Ответ #13 - 24. Апреля 2008 :: 11:16
Печать  
Не принимал еще... сегодня...
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: СводныйОстаток()
Ответ #14 - 24. Апреля 2008 :: 18:44
Печать  
VasilyKushnir писал(а) 24. Апреля 2008 :: 11:16:
Не принимал еще... сегодня...


Ну вот, напугали человека
Пиши исчо  Улыбка
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать