Имя: Пароль:
1C
1C 7.7
v7: 1sqlite. Как сделать отбор по группам номенклатуры?
,
0 palpetrovich
 
12.12.14
13:21
что, для этого надо сначала получить СписокЗначний из выбранных групп, а потом:
Док.Товар in (select val from СписокТоваров)

или можно как-то проще?
1 Ёпрст
 
12.12.14
13:21
проще, это как ?
Задача какая ?
2 palpetrovich
 
12.12.14
13:25
(1) на форме СписокТоваров, туда можно добавлять как Папки так и элементы, как обычно в общем..

короче как в "черном"
Условие( товар в СписокТоваров)
3 palpetrovich
 
12.12.14
13:26
+(2) запрос по документам с отбором товара из списка на форме
4 Ёпрст
 
12.12.14
13:28
(2) ну и ?

будет условие Док.Товар in (select val from СписокТоваров)

всё собственно.

ЗЫ: перед этим
база.УложитьОбъекты(СписокНаФорме,"СписокТоваров",0,"Номенклатура");
5 palpetrovich
 
12.12.14
13:29
(4) да не хочет от "укладываться" если в списке - группа ...почему-то
6 Ёпрст
 
12.12.14
13:30
(5) та ты шо ?
:)))
7 palpetrovich
 
12.12.14
13:30
не ругается, но возвращает пустую табличку
8 palpetrovich
 
12.12.14
13:31
(6) мля буду :)
9 Ёпрст
 
12.12.14
13:32
Ну давай, тест на вшивость:

база.УложитьОбъекты(СписокНаФорме,"СписокТоваров",0,"Номенклатура");
запрос.ВыполнитьЗапрос("select val [Номенклатура :Справочник.Номенклатура] from СписокТоваров").ВыбратьСтроку(); // че кажет ?
10 palpetrovich
 
12.12.14
13:35
(9) код:
   базаДанных.УложитьОбъекты(МФВыбТовары,"МФВыбТовары",0);
    Запрос = базаДанных.НовыйЗапрос();    
    ТекстЗапроса = "
    |select
    |  Журнал.iddoc [ТекущийДокумент :Документ.РасходнаяРозничная]
    | ,Док.Товар [Товар :Справочник.Номенклатура]
    |  from [ДокументСтроки.РасходнаяРозничная] Док
    |  Inner join [Журнал] Журнал on Журнал.iddoc=Док.iddoc
    |   and  Журнал.iddocdef=:ВидДокумента.РасходнаяРозничная
    |   and  Журнал.date between :ВыбНачПериода and :ВыбКонПериода
    |    and  Док.Товар in (select val from МФВыбТовары)
    |";

в МФВыбТовары (на форме) выбрана папка и товар, товар в результат  попадает, а товары из папки - нет
11 palpetrovich
 
12.12.14
13:36
+10 , кажись что-то не то с  join :)
12 palpetrovich
 
12.12.14
13:46
(9)  правильно показывает, может у меня в (10) не получается потому что я из документа беру товар?
13 palpetrovich
 
12.12.14
13:54
в общем - сделал так

базаДанных.УложитьОбъекты(МФВыбТовары,"СписокТоваров",0,"Номенклатура");
Запрос = базаДанных.НовыйЗапрос();    
СписокТоваров = СоздатьОбъект("СписокЗначений");
Запрос.ВыполнитьЗапрос("select val [Номенклатура :Справочник.Номенклатура] from СписокТоваров").Выгрузить(СписокТоваров,,,"Номенклатура");

базаДанных.УложитьОбъекты(СписокТоваров,"СписокТоваров",0);
Запрос = базаДанных.НовыйЗапрос();    
ТекстЗапроса = "
|select
| Журнал.iddoc [ТекущийДокумент :Документ.РасходнаяРозничная],
| Док.Товар [Товар :Справочник.Номенклатура]
|     from [ДокументСтроки.РасходнаяРозничная] Док
| Inner join [Журнал] Журнал on Журнал.iddoc=Док.iddoc
|   and  Журнал.iddocdef=:ВидДокумента.РасходнаяРозничная
|   and  Журнал.date between :ВыбНачПериода and :ВыбКонПериода
|    and  Док.Товар in (select val from СписокТоваров)
|";

хоть, наверное, через голову - но работает :)
14 palpetrovich
 
12.12.14
13:55
(13) мля, что-то я поспешил... условие забыл :)
пятница сказывается
15 palpetrovich
 
12.12.14
13:58
+(14)  не, таки все верно, надо заканчивать, а то как-то сам с собой... :)
16 Ёпрст
 
12.12.14
14:17
(13) ё...

читаем по-губам

база.УложитьОбъекты(СписокНаФорме,"СписокТоваров",0,"Номенклатура")

смотрим на последний параметр
17 palpetrovich
 
12.12.14
14:35
(16) мля я тупой ...спасибо :)
18 ildary
 
12.12.14
14:42
Пользуясь случаем спрошу - а как правильно в запросе 1sqlite делать отбор по строковому полю (комментарию)?
19 Ёпрст
 
12.12.14
14:44
(18) ну через like обычно пишут, но можешь и жестко условие на равенство, ежели количество символов совпадать будет
20 palpetrovich
 
12.12.14
14:45
(18) так примерно
комментарий LIKE '%" + ЗначениеОтбора + "%'"
21 ildary
 
12.12.14
14:50
Большое Вам спасибо, like именно то, что надо.
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.