Имя: Пароль:
1C
1C 7.7
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
:)
ОК, Спасибо всем! Тему можно удалить - мне стыдно...
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn