|
v7: Вопрос о ВыполнитьЗапрос() | ☑ | ||
---|---|---|---|---|
0
wmonref
12.05.14
✎
15:22
|
Приветствую! Помогите пожалуйста с запросом. Когда делаю следующий запрос:
Ит=СоздатьОбъект("БухгалтерскиеИтоги"); Ит.ИспользоватьСубконто(ВидыСубконто.Склады,ВыбСубконто1,1); Ит.ИспользоватьСубконто(ВидыСубконто.Товары,ВыбСубконто2,1); Ит.ВыполнитьЗапрос(НачДата,КонДата,Счет,,,3,"Операция",); Ит.ВыбратьСубконто(ВидыСубконто.Склады); Пока Ит.ПолучитьСубконто(ВидыСубконто.Склады) = 1 Цикл Ит.ВыбратьСубконто(ВидыСубконто.Товары,,,,,"Наименование"); Пока Ит.ПолучитьСубконто(ВидыСубконто.Товары) = 1 Цикл в отчет попадают все товары, независимо от того есть оборыты за период или нет. Нужно чтобы попадали только товары с оборотами. Пробовал "Ит.ВыполнитьЗапрос(НачДата,КонДата,Счет,,,2,"Операция",)" но в этом случае не расчитываются остатки на начало и конец. Подскажите как решить задачку. Спасибо! |
|||
1
an-korot
12.05.14
✎
15:59
|
да правильно, ничего страшного,
ставите например: Оборот = Ит.КорДО(3); Если Оборот > 0 Тогда //код что нам нужно например ТабЗнач.НоваяСтрока(); //или Если Оборот <> 0 Тогда и выбираете, что нужно ;) |
|||
2
an-korot
12.05.14
✎
16:02
|
кстати можно писать не
Ит.ВыбратьСубконто(ВидыСубконто.Склады); // а проще Ит.ВыбратьСубконто(1); |
|||
3
wmonref
12.05.14
✎
16:09
|
Оборот = Ит.КорДО(3);
Если Оборот > 0 Тогда Я это делал но скорость построения отчета слишком велика. В базе ежедневно продаются 200-300 наименований. Скорость с использованием "Ит.ВыполнитьЗапрос(НачДата,КонДата,Счет,,,2,"Операция",)" очень высока но не дает искомый результат. Что еще посоветуете? |
|||
4
an-korot
12.05.14
✎
17:09
|
ну не будем тут мериться ;) сколько строк
конечно когда все выгружаешь работает быстрее чем через проверку... можно без проверки это сделать ;) была бы фантазия... 1 - выгрузи все в таблицу 2 - упорядочи ее по количеству от большего к меньшему 3 - найди ноль в количестве, вернет первую ссылку с нулем. все, выгрузи с 1 строки до найденной сортировка ТЗ и выгрузка в другую ТЗ займет сотые доли секунды. |
|||
5
Classic
12.05.14
✎
17:26
|
(3)
Делай запрос по оборотам (), формируй список номенклатуры и потом запрос по остаткам (без детализации по операциям) с фильтром по номенклатуре Если "оборотной" номенклатуры на порядок меньше, чем "остаточной", то можешь и выиграть в скорости. |
|||
6
wmonref
12.05.14
✎
19:47
|
Ок, просто было интересно узнать есть ли "штатный" метод (без проверок :) ) получения остатков только для элементов у которых есть обороты.
Спасибо! |
|||
7
wmonref
13.05.14
✎
00:02
|
(5) Значит запрос по остаткам надо сделать только по номенклатуре из первого запроса.
А можете дать примерчик как сделать запрос по конкретным элементам справочника? Спасибо! |
|||
8
Фокусник
13.05.14
✎
00:24
|
(7) смотри в СП про ИспользоватьСубконто()
|
|||
9
wmonref
13.05.14
✎
00:44
|
(8) Аха! Я пробовал ИспользоватьСубконто(ВидыСубконто.Товары,ТЗН,1);
Где ТЗН - ТЗ в которой 1 колонка содержащая нужные элементы. Метод не сработал. А вот ИспользоватьСубконто(ВидыСубконто.Товары,СЗ,1); где СЗ - СЗ который содержит нужные элементы, сработал. А как "прочитать" элементы из ТЗ в ИспользоватьСубконто() ? Спасибо! |
|||
10
Фокусник
13.05.14
✎
00:57
|
(9) выгрузить их в СЗ :)
|
|||
11
wmonref
13.05.14
✎
00:59
|
:)
ОК, Спасибо всем! Тему можно удалить - мне стыдно... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |