Имя: Пароль:
1C
1C 7.7
v7: РегистрОстатки - передать список товаров - вылазят ошибочные данные
0 EvgeniuXP
 
29.05.12
18:47
В РегистреОстатков создал условие: Товар В (ВЫБРАТЬ val #СписокТоваров), но как заметил, итоги считает каждый раз по-разному.... перенес условие в ГДЕ - отлично работает... для интереса написал условие наоборот через "НЕ" регистрах остатках, т.е. в итоге должен получить пустой список, если занесу в СписокТоваров все товары - в результате, через параметр виртуальной таблицы - список не пустой, а через условие "ГДЕ" - действительно пустой....

Такое ощущение, что виртуальные таблицы в прямом запросе работают всё-таки криво.... :( список состоял из 4800 элементов.
1 Mikeware
 
29.05.12
18:48
чиво?
2 Mikeware
 
29.05.12
18:49
+(1) такое ощущение™, что ты выпимши...
3 Злопчинский
 
29.05.12
19:00
(1) ..а город подумал - ученья идут...
на форуме 1С++ чего-то там перетирали про виртуальные таблицы в классе "прямой запрос"
4 Mikeware
 
29.05.12
19:02
(3) Ну так и нужно человечьим языком проблему описывать...
5 EvgeniuXP
 
30.05.12
19:32
(4) ну что не понятного, выбираю вот так:

ВЫБРАТЬ
   |        Доходы.Филиал КАК Филиал,
   |        Доходы.Товар КАК Товар,
   |        Доходы.Цвет КАК Цвет,
   |        Доходы.Размер КАК Размер,
   |        СУММА(Доходы.ОстатокТовараОстаток) КАК ОстатокТовараОстаток,
   |        СУММА(Доходы.ПродСтоимостьОстаток) КАК ПродСтоимостьОстаток
   |    ИЗ
   |        $РегистрОстатки.УчетРеализации(:ВыбДата,НЕ Товар В (ВЫБРАТЬ val ИЗ #ВыбТовар),(Филиал,Товар,Цвет,Размер),(ОстатокТовара,ПродСтоимость)) КАК Доходы $nolock
   |
   |    СГРУППИРОВАТЬ
   |        Филиал,
   |        Товар

Товар=СоздатьОбъект("Справочник.Товары");
Товар.ВыбратьЭлементы();

СЗТовары=СоздатьОбъект("СписокЗначений");

Пока Товар.ПолучитьЭлемент()=1 Цикл
   Если Товар.ЭтоГруппа()=1 Тогда
       Продолжить;
   Инача
       СЗТовары.ДобавитьЗначение(Товар.ТекущийЭлемент());
   КонецЕсли;
КонецЦикла;

Запрос.УложитьСписокЗначений(СЗТовары,"#ВыбТовар");

результат: выбираются товары - но результат должен быть ПУСТОЙ!!! все товары положил же в список значений и условие НЕ.

А если напишу вот так:

ВЫБРАТЬ
   |        Доходы.Филиал КАК Филиал,
   |        Доходы.Товар КАК Товар,
   |        Доходы.Цвет КАК Цвет,
   |        Доходы.Размер КАК Размер,
   |        СУММА(Доходы.ОстатокТовараОстаток) КАК ОстатокТовараОстаток,
   |        СУММА(Доходы.ПродСтоимостьОстаток) КАК ПродСтоимостьОстаток
   |    ИЗ
   |        $РегистрОстатки.УчетРеализации(:ВыбДата,,(Филиал,Товар,Цвет,Размер),(ОстатокТовара,ПродСтоимость)) КАК Доходы $nolock
   |
   |    СГРУППИРОВАТЬ
   |        Филиал,
   |        Товар
   |    ГДЕ НЕ Товар В (ВЫБРАТЬ val ИЗ #ВыбТовар

В результате получаю пустой список - что и правильно :) Где собака зарыта?
6 EvgeniuXP
 
30.05.12
19:37
переданный массив проверял все товары попадают, в первом случае многие товары не попадают в результат таблицы, лишь малая часть...

во втором случае - вообще никто не попадает.

Виртуальные таблицы работают плохо :( Массив состоял из 4800 товаров.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.