Имя: Пароль:
1C
 
1sqlite: Условие по группам подчиненного справочника в прямом запросе.
0 Перелетный косяк
 
14.06.11
16:13
Нетленка на 7.7.
Есть справочник прайс-позиций (далее "Прайс"), подчиненный спр. Ценовое соглашение, который сам подчинен справочнику контрагентов.
У спр. Прайс реквизит "Товар"=группа из сп. Номенклатура


не могу понять почему не работает условие на этот реквизит

база.УложитьОбъекты(СписокУдаляемыхГрупп,"ВыбТовар",0,"Номенклатура");
Текст = "SELECT
|СпрПрайс.Descr,
|СпрПрайс.ID [Прайс :Справочник.Прайс],
|СпрПрайс.Товар [Товар :Справочник.Номенклатура],
|СпрПрайс.ParentExt [ЦС :Справочник.ЦеновыеСоглашения]
|FROM
|Справочник_Прайс as СпрПрайс

вот так все работает на УРА, а при добавлении

|WHERE
|   СпрПрайс.Товар in (SELECT Val From ВыбТовар)

не хочет работать.
хелп.
сломал себе моск,ничегонипонимаю...
1 Перелетный косяк
 
14.06.11
16:14
(1)+
СписокУдаляемыхГрупп = СЗ, непустой, заполнен необходимыми группами из спр. Номенклатура
2 Ёпрст
 
гуру
14.06.11
16:16
ясен пень не будет работать..
в СпрПрайс.Товар у тебя группа, в SELECT Val From ВыбТовар всегда id элементов
3 Перелетный косяк
 
14.06.11
16:17
(2) а как в нее группу запихать?
4 Перелетный косяк
 
14.06.11
16:27
разобрался, сделал через Запрос.Подставлять()
5 Перелетный косяк
 
23.06.11
13:12
Тут же, в рамках ДРУГОЙ проблемы с прям. запросами.



Нужно посчитать остаток на произвольный день в разрезе товара/склада. На прямом как я понимаю [ост на день Х = Ост. на НачМесяца(Х) +движуха за Х дней]?

Не могу сообразить, почему прямой и черный запросы дают разный результат(

прямой запрос
       Текст =    "SELECT
       |  SubQuery.Товар [Товар :Справочник.Номенклатура],
       |  SUM(SubQuery.КонечныйОстаток) [КолКонОст :Число]
       |FROM      
       |(SELECT
       |    РегОстатки.Количество [КонечныйОстаток],
       |    РегОстатки.Товар [Товар]
       |FROM    
       |    [РегистрИтоги.ТовОстатки] as РегОстатки
       |WHERE
       |    РегОстатки.Period = :НачДатаМесяцаДатаОстатков
       |    AND (РегОстатки.Товар in (select val from ВыбРекв1))
       |    AND (РегОстатки.Склад in (select val from ВыбРекв2))
       |UNION ALL
       |
       |SELECT
       |    РегДвижения.Количество*(1-РегДвижения.Debkred*2),
       |    РегДвижения.Товар
       |FROM
       |    [Регистр.ТовОстатки] as РегДвижения
       |WHERE
       |    РегДвижения.date BETWEEN :НачДатаМесяцаДатаОстатков And :ДатаОстатков
       |    AND (РегДвижения.Товар in (select val from ВыбРекв1))
       |    AND (РегДвижения.Склад in (select val from ВыбРекв2))
       |) As SubQuery
       |GROUP BY Товар
       |";
       
       база.УложитьОбъекты(ВыбТовар,"ВыбРекв1",0,"Номенклатура");
       база.УложитьОбъекты(ВыбСклад,"ВыбРекв2",0,"Склады");

       запросП.Подставлять("НачДатаМесяцаДатаОстатков",начмесяца(ДатаОстатков));  
       запросП.Подставлять("ДатаОстатков",ДатаОстатков);  
       тз=запросП.ВыполнитьЗапрос(текст);

//--------------------------------------
//--------------------------------------
//--------------------------------------
черный запрос

       ТЗ = "";
       Запрос = СоздатьОбъект("Запрос");
       ТекстЗапроса =
       "//{{ЗАПРОС(ПолучитьОстаткиТЗ)
       |Период с ДатаОстатков по ДатаОстатков;
       |Обрабатывать НеПомеченныеНаУдаление;
       |Без итогов;
       |Склад = Регистр.ТовОстатки.Склад;
       |Товар = Регистр.ТовОстатки.Товар;
       |Количество = Регистр.ТовОстатки.Количество;
       |Функция КолКонОст = КонОст(Количество);
       |Группировка Товар без групп упорядочить по Товар.Наименование все;
       |Условие(Товар в ВыбТовар);
       |Условие(Склад в ВыбСклад);
       |"//}}ЗАПРОС
//--------------------------------------
//--------------------------------------
//--------------------------------------

прямой выдает какие-то цифры, совсем далекие от реальных.. (

где туплю, ткните лпиз
6 Ёпрст
 
гуру
23.06.11
13:19
(5)
>>>На прямом как я понимаю [ост на день Х = Ост. на НачМесяца(Х) +движуха за Х дней]?

Неправильно понимаешь.
7 Перелетный косяк
 
27.06.11
13:45
(6) поясню свою ситуацию.
мне нужно вычислить средний товарный остаток, и для этого необходимы остатки на КАЖДЫЙ ДЕНЬ какого-либо периода

хотел корявенько в цикле двигая дату извлекать их прямым запросом, но не понимаю как.

Не догоняю с извлечением остатка на произвольный день Х который <>ТА и <> конецпериода
8 Перелетный косяк
 
27.06.11
13:47
Как можно сделать в 1sqlite временныйрасчет регистра на произвольную дату?
9 ДенисЧ
 
27.06.11
13:48
(8)
цЫфра из таблицы остатков на предыдущий месяц +/- движения от начала текущего месяца до нужной даты.
10 Ёпрст
 
гуру
27.06.11
13:50
(7,8)  ничего сложного

для получения останка на произвольную дату нужно взять итоги с таблички итогов на дату = предыдущей дате начала периодичности итогов + движения от даты начала периодичности итогов до указанной даты.

Чтоб поиметь остаток на каждый день, нужно взять табличку с датами и сделать левое соединение с тем что выше.
Всё собственно.
11 Ёпрст
 
гуру
27.06.11
13:51
(9) ответ не совсем верный. Это частный случай, при периодичности хранения останков - месяц
:)

+ не ясно, какой остаток нужно получить - НачОст или КонОст.. там тоже есть маааленькая хитрость с датами.
12 ДенисЧ
 
27.06.11
13:51
(11) s/месяц/период/g
13 Ёпрст
 
гуру
27.06.11
13:53
(12) че ?
14 Перелетный косяк
 
27.06.11
13:55
(9),(10) спасибо