|
v7: SQL запрос. Чего не хватает? | ☑ | ||
---|---|---|---|---|
0
Последняя_
Надежда 15.12.11
✎
08:01
|
Есть следующий запрос.
Добавила одно условие (последнее - (Пров.KTSC0 = '"+Перечисление.ТипыНоменклатуры.Продукция+"')). Но не выводит никакие данные. Вероятно, нужно что-то добавить в секцию FROM, но не сильна в sql запросах 1с. Подскажите, что не так? ТекстЗапроса = " |SELECT | СпрЮрЛица.Code as КодЮрлица, | СпрЮрЛица.Descr as ИмяЮрлица, | СпрФирмы.Code as внКодФирмы, | СпрФирмы.Descr as внИмяФирмы, | СпрПодр.Code as внКодПодразделения, | СпрПодр.Descr as внИмяПодразделения, | внНомерДокумента = Жур.DocNo + CAST(Пров.Number as CHAR), | CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДок, | СчДеб.SchKod as СчетДебет, | СчКред.SchKod as СчетКредит, | СпрКонтр.Code as внКодКонтрагента, | СпрКонтр.Descr as внИмяКонтрагента, | Пров.SP7734 as СодержаниеПроводки , | Пров.SUM_ as Сумма, | Пров.KTSC0 as [ВидНоменклатуры $Перечисление.ТипыНоменклатуры] |FROM | _1Sentry as Пров |INNER JOIN _1SOper as Опер ON Опер.Date_Time_DocId = Пров.Date_Time_DocId |INNER JOIN _1SJourn as Жур ON Опер.Date_Time_DocId=Жур.Date_Time_IdDoc |INNER JOIN $Справочник.СвоиЮрЛица as СпрЮрЛица ON Пров.SP7736 = СпрЮрЛица.Id |INNER JOIN _1SACCS as СчДеб ON СчДеб.ID = Пров.ACCDTID |INNER JOIN _1SACCS as СчКред ON СчКред.ID = Пров.ACCKTID |LEFT JOIN $Справочник.Контрагенты as СпрКонтр ON СпрКонтр.Id = Пров.DTSC0 |LEFT JOIN $Справочник.Подразделения as СпрПодр ON СпрПодр.Id = Пров.KTSC1 |LEFT JOIN $Справочник.Фирмы as СпрФирмы ON СпрЮрЛица.Id = $СпрФирмы.ЮрЛицо |WHERE | Жур.Date_Time_IdDoc BETWEEN :НачДата AND :КонДата~ AND | (( СчДеб.SchKod = ' 50. 2. ' AND СчКред.SchKod=' 90. 1.2') OR | ( СчДеб.SchKod = ' 50. 2. ' AND СчКред.SchKod=' 79. 2. ')) |AND (Пров.KTSC0 = '"+Перечисление.ТипыНоменклатуры.Продукция+"') |ORDER BY DocNo |" ; |
|||
1
Кириллка
15.12.11
✎
08:06
|
так "Пров.KTSC0 = '"+Перечисление.ТипыНоменклатуры.Продукция+"'" не нужно делать.
|
|||
2
Гефест
15.12.11
✎
08:07
|
У тебя в том поле идентификатор перечисления, а ты сравниваешь его с наименованием
|
|||
3
Последняя_
Надежда 15.12.11
✎
08:08
|
мне нужна выборка операций, только с типом "продукция". остальные не нужны.
|
|||
4
Гефест
15.12.11
✎
08:09
|
AND (Пров.KTSC0 = :ПыщьПыщь)
Запрос.УстановитьПараметр("ПыщьПыщь", Перечисление.ТипыНоменклатуры.Продукция) Если память не изменила |
|||
5
Кириллка
15.12.11
✎
08:10
|
Пров.KTSC0 = $Перечисление.ТипыНоменклатуры.Продукция
|
|||
6
Последняя_
Надежда 15.12.11
✎
08:10
|
(4) "ПыщьПыщь" - настроение у вас точно хорошее)))
|
|||
7
SeraFim
15.12.11
✎
08:15
|
(4)память изменила. По моему, так:
AND (Пров.KTSC0 = :ПиуПиу) Запрос.УстановитьТекстовыйПараметр("ПиуПиу",Перечисление.ТипыНоменклатуры.Продукция) |
|||
8
Patrio_
O_Muerte 15.12.11
✎
08:21
|
Видать в организме чего-то не хватает (с)
|
|||
9
ЧеловекДуши
15.12.11
✎
08:28
|
>>> |AND (Пров.KTSC0 = '"+Перечисление.ТипыНоменклатуры.Продукция+"')
Это ДНК, бросай программировать, это не твое. ;) |
|||
10
AlexTim03
15.12.11
✎
09:03
|
(0) Перечисления в БД не хранятся, значение можно получить по ID.
Если на sql выполнить запрос без этого условия и посмотреть, что в колонке Пров.KTSC0, там будет что-то типа ' 4EE44F' - это 16-ричное представление. И если нужен отбор по значению перечисления, то надо делать именно отбор по ID. ID перечисления можно получить в 7 по ВСтрВнутр, но потом надо еще преобразовать. |
|||
11
Последняя_
Надежда 15.12.11
✎
09:11
|
(4) (5) (7) не сработало... Видимо (10) прав... попробую
|
|||
12
AlexTim03
15.12.11
✎
09:22
|
Вот нашел из старого, но здесь обратное преобразование - из ИД находят Перечисление в конфигурации, в вашем случае надо сделать наоборот:
Значение перечислений в базе данных не хранятся. Хранятся они в МД-шнике, т.о. значение можно получить по id ср-вами 1С, рассмотрим на примере справочника номенклатура SC33 реквизит «ТипТовара» - Перечисление.ТипыТоваров select Descr, SP5712 from sc33 where code='РБ245 ' вернет Descr SP5712 ----------------------------------------------------------------------------------- --------- Охладитель Gastro Cooler Big с замком 1509-052-000 4EE 4EE – это id Перечисление.ТипыТоваров ид=_StrToId( («4EE») = 5702 Для Перечисление.ТипыТоваров ОбъектВнутреннегоФормата = _StrToId(СокрЛП(ИД)); Пока СтрДлина(ОбъектВнутреннегоФормата) < 10 Цикл ОбъектВнутреннегоФормата = " " + ОбъектВнутреннегоФормата; КонецЦикла; Пока СтрДлина(ОбъектВнутреннегоФормата) < 13 Цикл ОбъектВнутреннегоФормата = ОбъектВнутреннегоФормата+" "; КонецЦикла; СтрВнутрПеречТипыТоваров="{""E"",""0"",""0"",""5701"",""0"",""0"","""+ОбъектВнутреннегоФормата+"""}"; Возврат ЗначениеИзСтрокиВнутр(СтрВнутрПеречТипыТоваров); Для перечислений других типов отличие только в ID вида, в нашем случае - 5701, можно создать ТЗ, СЗ соответствия и вперед. |
|||
13
Ёпрст
15.12.11
✎
09:23
|
(12) Это всё прошлый век при наличии метапарсера и УстановитьТекстовыйПараметр.
|
|||
14
Попытка1С
15.12.11
✎
09:56
|
NOLOCK поставь еще
|
|||
15
Последняя_
Надежда 15.12.11
✎
09:59
|
Выкрутилась меньшими усилиями:
|AND (Пров.KTSC0 = ' 5J4 ') вроде работает... по крайней мере выдал какие-то результаты. |
|||
16
Кириллка
15.12.11
✎
10:00
|
(15)а (5) как не сработало?
|
|||
17
ДенисЧ
15.12.11
✎
10:00
|
(15) Обоги... (5) чем не устроило?
|
|||
18
ДенисЧ
15.12.11
✎
10:00
|
КСМ :-))
|
|||
19
Последняя_
Надежда 15.12.11
✎
10:00
|
(16) не прошло. ругнулся на что-то
|
|||
20
ДенисЧ
15.12.11
✎
10:01
|
(19) На что?
|
|||
21
Попытка1С
15.12.11
✎
10:02
|
Может она это не через 1cpp делает.. Тогда $ не покатит.
|
|||
22
Последняя_
Надежда 15.12.11
✎
10:03
|
(21) может )))
(5) вот как ругнулся - "Ошибка запроса: Meta name parser error: неизвестное метаимя или алиас "$Перечисление"" |
|||
23
Кириллка
15.12.11
✎
10:04
|
(22)противоречие...
|
|||
24
Последняя_
Надежда 15.12.11
✎
10:04
|
(21) вот такая только присутствует при открытии - ЗагрузитьВнешнююКомпоненту(КаталогИБ()+"v7plus.dll");
|
|||
25
Кириллка
15.12.11
✎
10:04
|
+23 видать, версия старенькая
|
|||
26
Попытка1С
15.12.11
✎
10:05
|
(22) Ну метапарсер присутствует значит таки 1с++ загружена...
|
|||
27
Попытка1С
15.12.11
✎
10:05
|
(24) Это не то...
|
|||
28
Последняя_
Надежда 15.12.11
✎
10:05
|
(25) старовата... Комплексная 424 )))
|
|||
29
Кириллка
15.12.11
✎
10:07
|
(28)привет лунатикам
|
|||
30
Попытка1С
15.12.11
✎
10:07
|
(28) Он имел ввиду версию 1c++
|
|||
31
Последняя_
Надежда 15.12.11
✎
10:10
|
(30) 2.0.3.3
|
|||
32
Кириллка
15.12.11
✎
10:13
|
(15)а (7) как не сработало?
|
|||
33
Попытка1С
15.12.11
✎
10:15
|
(31) Покажи весь код с создатьобъект до выполнить.
|
|||
34
Последняя_
Надежда 15.12.11
✎
10:20
|
(33) там оооочень много.
|
|||
35
1Сергей
15.12.11
✎
10:22
|
(34) а ты подключаешься к этой базе или другой?
|
|||
36
Последняя_
Надежда 15.12.11
✎
10:25
|
(35) к другой. это перекачка документов в ТиС.
(32) Каюсь! (7) работает. маленько с переменной запроса намудрила! |
|||
37
Гефест
15.12.11
✎
10:26
|
(36) Не прошло и года, как нам сказали самое важное
|
|||
38
Последняя_
Надежда 15.12.11
✎
10:27
|
(37) Извиняюсь... дело-то в общем-то и не в этом. Запросец главное чтоб работал. Выборка же идет из самой базы. А контакт с внешней и так работает.
|
|||
39
Последняя_
Надежда 15.12.11
✎
10:28
|
(4)(7)(10) СПАСИБО! Помогли!
|
|||
40
1Сергей
15.12.11
✎
10:33
|
(38) метапарсер должен брать данные из другого МД
|
|||
41
Последняя_
Надежда 15.12.11
✎
10:48
|
(40) я таких слов не знаю ))) главное что работает
|
|||
42
1Сергей
15.12.11
✎
10:55
|
и эти люди пишут прямые запросы....
|
|||
43
Гефест
15.12.11
✎
10:56
|
ну хоть фото в купальнике мы заслужили?
|
|||
44
Попытка1С
15.12.11
✎
11:04
|
(36) Так там присоединить md должно быть.
|
|||
45
Последняя_
Надежда 15.12.11
✎
11:44
|
(44) имеется ПрисоединитьИБ ;)
(43) эх.. если бы оно было... я уже 2 года не отдыхала на водоемах в купальнике :( если что и найду, то только в личку ))) |
|||
46
Гефест
15.12.11
✎
11:47
|
(45) Тогда всем участникам в личку
|
|||
47
Гефест
15.12.11
✎
11:48
|
(46) Участникам ветки
|
|||
48
Последняя_
Надежда 15.12.11
✎
11:54
|
(47) а им всем оно надо? )))
|
|||
49
PZh
15.12.11
✎
15:16
|
(7) не сработало, т.к. KTSC0 - это не типизированное перечисление и соответственно нужно расширенный идентификатор из 13 символов, а не из 9-ти.
KTSC0 |C |13 |0 Поэтому нужно делать так (тупо добавить "~"):
|
|||
50
PZh
15.12.11
✎
15:16
|
(49)->(0) это и ответ топик стартеру заодно
|
|||
51
Последняя_
Надежда 16.12.11
✎
13:37
|
(49) а у меня кажется что именно из 9... потому что ПиуПиу или ПыщьПыщь сработало и без ~ Но все равно спасибо, думаю в будущем пригодится.
|
|||
52
Mikeware
16.12.11
✎
13:42
|
"Долго думали, чего же не хватает в организме котенка, если он жрет полиэтилен.
Поняли - мозгов!"© |
|||
53
Последняя_
Надежда 16.12.11
✎
14:51
|
(52) злые вы...
|
|||
54
PZh
16.12.11
✎
15:39
|
(51) Ну вообще-то должно быть из 13, как бэ...
Можно открыть файл DDS и глянуть. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |