![]() |
![]() |
![]() |
|
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) спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |