Имя: Пароль:
1C
1C 7.7
v7: 1c++ Как сделать запрос к спискуЗначений?
,
0 palpetrovich
 
11.04.16
12:43
так
    ТекстЗапроса = "SELECT Val FROM #ТекСписокЗначений";
    ТекСписокЗначений = СоздатьОбъект("СписокЗначений");
    ТекСписокЗначений.ДобавитьЗначение("Раз");
    ТекСписокЗначений.ДобавитьЗначение("Два");
    глЗапрос1срр.УложитьСписокОбъектов(ТекСписокЗначений, "#ТекСписокЗначений");    
    ТЗ = глЗапрос1срр.ВыполнитьИнструкцию(ТекстЗапроса);
ТЗ - пустая
1 VladZ
 
11.04.16
12:45
(0)  Сколько работал с 1с++ - ни разу с такими извращениями не сталкивался.  Зачем это нужно?
2 palpetrovich
 
11.04.16
12:47
(1) для
WHERE $Спр.Код IN (SELECT Val FROM #СписокКодов)
СписокКодов - из экселя
3 Дык ё
 
11.04.16
12:56
УложитьСписок _Объектов_ как бы намекает ;)
4 Mikeware
 
11.04.16
12:56
УложитьСписокОбъектов(<?>,<?>,<?>)
Синтаксис:
PutObjectList(ObjList, strTableName, strRefKinde)
Назначение:
сохраняет список объектов во временной таблице MS SQL. Идентификаторы
объектов из списка ObjList сохраняются во временной таблице strTableName. Таблица имеет единственное поле  val char(9). Имя таблицы должно начинаться с символа «#».
Если strRefKinde идентификатор иерархического справочника, то таблица будет  содержать элементы иерархически принадлежащие группам переданным в списке.
(Подобно оператору «в» стандартного языка запросов 1С.)
Параметры:
- ObjList (СписокЗначений/АгрегатныйТип): список для сохранения или
элемент справочника, группа справочника, документ и т.п.;
5 VladZ
 
11.04.16
12:58
(2)  Вон оно чё!  Это хрень только с объектами работает. Для строк создавай свою табличку и укладывай туда руками.
6 Дык ё
 
11.04.16
13:04
Если кодов не очень много, можно ПолучитьСтрокуИзСЗ
7 Mikeware
 
11.04.16
13:17
(6) можно и руками строку сформировать
8 palpetrovich
 
11.04.16
13:27
понял, спасибо
9 ADirks
 
11.04.16
15:17
(6) кстати, "не очень много" - это лишь бы текст запроса в 80к влез (ну или сколько там...)
у меня например любые списки размером до 5000 в фильтр пихаются строкой. Т.е. практически все :)
10 Mikeware
 
11.04.16
15:21
(9) у всех свои понятия о "много". меня лет семь назад справшивали о "гигантской базе с огромным количесвом пользователей". база оказалась 6Г, пользователей-25 :-)
11 palpetrovich
 
26.04.16
17:56
подниму темку :)
если я правильно понял, можно как-то сделать запрос к строке?
...если да, можно пример кода?
12 Sserj
 
26.04.16
18:33
(11) Речь видимо велась о написании строки условия в цикле, типа
СтрУсловия = СтрУсловия + " OR $Спр.Код = " + ТвойКод;
13 Это_mike
 
26.04.16
19:01
(11) имелось ввиду значения в литералах.типа
Select *
From $справочник.рр
Where id in ('     1','     2   ','    3   ')
14 palpetrovich
 
26.04.16
20:29
(12) (13) печально, я думал можно, к примеру получить максимум из строки 1,45,3,6,76,...
15 mikecool
 
26.04.16
21:09
(14) временная табличка и максимум из нее
16 Это_mike
 
26.04.16
21:19
(14) а что мешаеет?
17 palpetrovich
 
26.04.16
21:35
(16) недостаток знаний
(15) типа
ДЕКЛАРЕ таб (колонка)
ИНСЕРТ
1,45,3,6,76 ИнТу Таб

СЕЛЕКТ
Мах(колонка) фром таб
?
зы сорьки за мой французский :)
ну и синтаксис навскидку не помню
18 mikecool
 
26.04.16
22:18
(17) типа того
только в скуле сначала проверка на наличие таблы, при наличии - удаление, а затем создание
19 mikecool
 
26.04.16
22:29
+18 как то так:
IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE id = object_id('tempdb..#Table')) DROP TABLE tempdb..#Table

CREATE TABLE tempdb..#Table (RUD char(15), VIN char(17), DeliveryDate char(8))
20 palpetrovich
 
26.04.16
22:42
(19) спасибо, только
(RUD char(15), VIN char(17), DeliveryDate char(8))
мне наверное надо заменит на, к примеру (MyVar int(10))
и потом добавить столько строк, сколько у меня этих чисел?
21 palpetrovich
 
26.04.16
22:44
+(20) блин, наверное таки  в  int-е размерность лишяя ...или нет?
22 Mikeware
 
27.04.16
07:14
(15)(17)(18) занахрена?

SELECT MAX(1,45,3,6,76)

И все..
23 ADirks
 
27.04.16
07:38
(22) не, так не работает, этож агрегатная функция
а то я уж прям испугался :)
24 Mikeware
 
27.04.16
07:46
(23) в ПЗ (1sqlite) - работает