|
выбор, когда и неверные параметры | ☑ | ||
---|---|---|---|---|
0
Wobland
19.03.13
✎
11:05
|
добываю из внешнего источника ID типа строка(9). хочу сразу преобразовать этот ИД в ссылки на справочник:
и натыкаюсь на ошибку "Неверные параметры". в консоли пробовал
всё отработало. со ссылкой на справочник работать не хочет. что я делаю не так? не связано ли это с группировкой по этому полю? |
|||
1
Wobland
19.03.13
✎
11:06
|
выбрать выбор когда "да"="да" тогда &ном конец
в консоли отработало хорошо (&ном - ссылка на справочник). уж не знаю, что и думать |
|||
2
Ёпрст
19.03.13
✎
11:07
|
а весь текст запроса какой ?
|
|||
3
MSII
19.03.13
✎
11:08
|
| ВЫБОР
| КОГДА ОтчётыККМ.ВидНоменклатуры="" 2Q2 "" ТОГДА &НоменклатураТовар | КОГДА ОтчётыККМ.ВидНоменклатуры="" 1X3 "" ТОГДА &НоменклатураУслуга | КОГДА ОтчётыККМ.ВидНоменклатуры="" 7YB "" ТОГДА &НоменклатураГП | ИНАЧЕ &НоменклатураПустаяСсылка | КОНЕЦ, Так пробовал? |
|||
4
Ёпрст
19.03.13
✎
11:09
|
если этот выбор в селекте - пихай его и в группировку или оберни во вложенный запрос
|
|||
5
Wobland
19.03.13
✎
11:09
|
(2) 4 пейдж-дауна.
"SELECT | Истина AS Пометка, | SUBSTRING(ОтчётыККМ.ДатаДок, 1, 8) AS Дата, | Кассы.Descr AS Касса, | Кассы.Code AS КодКассы, | ВЫБОР | КОГДА ОтчётыККМ.ВидНоменклатуры="" 2Q2 "" ТОГДА &НоменклатураТовар | КОГДА ОтчётыККМ.ВидНоменклатуры="" 1X3 "" ТОГДА &НоменклатураУслуга | КОГДА ОтчётыККМ.ВидНоменклатуры="" 7YB "" ТОГДА &НоменклатураГП | ИНАЧЕ ОтчётыККМ.ВидНоменклатуры | КОНЕЦ AS Номенклатура, | ВЫБОР | КОГДА ОтчётыККМ.СтавкаНДС="" I8 "" ТОГДА ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) | КОГДА ОтчётыККМ.СтавкаНДС="" 6CF "" ТОГДА ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) | ИНАЧЕ ОтчётыККМ.СтавкаНДС | КОНЕЦ AS СтавкаНДС, | SUM(ОтчётыККМ.Сумма) AS СуммаОтчётовККМ, | SUM(Возвраты.Сумма) AS СуммаВозвратов, | SUM(ПартииО.Сумма) AS СебестоимостьОтчётовККМ, | SUM(ПартииВ.Сумма) AS СебестоимостьВозвратов, | SUM(ОтчётыККМ.Сумма)-SUM(ISNULL(Возвраты.Сумма, 0)) AS ИтогПродаж, | SUM(ПартииО.Сумма)-SUM(ISNULL(ПартииВ.Сумма, 0)) AS ИтогСебестоимости |FROM | (SELECT | ЖурО.Date_Time_IDDoc AS ДатаДок, | ОтчётККМТЧ.IDDoc AS Ссылка, | ОтчётККМШ.SP3363 AS Касса, | ОтчётККМТЧ.SP3102 AS Номенклатура, | спрНоменклатура.SP2417 AS ВидНоменклатуры, | ОтчётККМТЧ.SP3108 AS СтавкаНДС, | SUM(ОтчётККМТЧ.SP3107) AS Сумма | FROM | ВнешнийИсточникДанных.ТиС.Таблица.dbo__1SJOURN AS ЖурО | INNER JOIN | ВнешнийИсточникДанных.ТиС.Таблица.dbo_DH3114 AS ОтчётККМШ | ON | ОтчётККМШ.IDDoc=ЖурО.IDDoc | INNER JOIN | ВнешнийИсточникДанных.ТиС.Таблица.dbo_DT3114 AS ОтчётККМТЧ | ON | ОтчётККМШ.IDDoc=ОтчётККМТЧ.IDDoc | INNER JOIN | ВнешнийИсточникДанных.ТиС.Таблица.dbo_SC84 AS спрНоменклатура | ON | ОтчётККМТЧ.SP3102=спрНоменклатура.ID | WHERE | ЖурО.Date_Time_IDDoc BETWEEN &ДатаНачала AND &ДатаОкончания | AND ((ЖурО.Closed=1) OR (ЖурО.Closed=3) OR (ЖурО.Closed=5) OR (ЖурО.Closed=7)) | AND (ЖурО.sp5365=&Организация OR &ПустаяОрганизация) | AND (ОтчётККМШ.SP3093=&Склад OR &ПустойСклад) | AND ОтчётККМШ.SP11859="" 0 "" | GROUP BY | ЖурО.Date_Time_IDDoc, | ОтчётККМТЧ.IDDoc, | ОтчётККМШ.SP3363, | ОтчётККМТЧ.SP3102, | спрНоменклатура.SP2417, | ОтчётККМТЧ.SP3108 | ) AS ОтчётыККМ | INNER JOIN | ВнешнийИсточникДанных.ТиС.Таблица.dbo_SC1809 AS Кассы | ON | Кассы.ID=ОтчётыККМ.Касса // ОтчётыККМ ////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// |LEFT JOIN | (SELECT | ЖурВ.Date_Time_IDDoc AS ДатаДок, | ВозвратТЧ.IDDoc AS Ссылка, | ВозвратШ.SP1633 AS ДокОснование, | ОтчётККМ.SP3363 AS Касса, | ВозвратТЧ.SP1644 AS Номенклатура, | SUM(ВозвратТЧ.SP1649) AS Сумма | FROM | ВнешнийИсточникДанных.ТиС.Таблица.dbo__1SJourn AS ЖурВ | INNER JOIN | ВнешнийИсточникДанных.ТиС.Таблица.dbo_DH1656 AS ВозвратШ | ON | ВозвратШ.IDDoc=ЖурВ.IDDoc | INNER JOIN | ВнешнийИсточникДанных.ТиС.Таблица.dbo_DT1656 AS ВозвратТЧ | ON | ВозвратШ.IDDoc=ВозвратТЧ.IDDoc | INNER JOIN | ВнешнийИсточникДанных.ТиС.Таблица.dbo_DH3114 AS ОтчётККМ | ON | SUBSTRING(ВозвратШ.SP1633, 5, 9)=ОтчётККМ.IDDoc | WHERE | ЖурВ.Date_Time_IDDoc BETWEEN &ДатаНачала AND &ДатаОкончания | AND ((ЖурВ.Closed=1) OR (ЖурВ.Closed=3) OR (ЖурВ.Closed=5) OR (ЖурВ.Closed=7)) | AND (ЖурВ.sp5365=&Организация OR &ПустаяОрганизация) | AND (ВозвратШ.SP1639=&Склад OR &ПустойСклад) | GROUP BY | ЖурВ.Date_Time_IDDoc, | ВозвратТЧ.IDDoc, | ВозвратШ.SP1633, | ОтчётККМ.SP3363, | ВозвратТЧ.SP1644 | ) AS Возвраты | ON | SUBSTRING(Возвраты.ДокОснование, 5, 9)=ОтчётыККМ.Ссылка | AND SUBSTRING(Возвраты.ДатаДок, 1, 8)=SUBSTRING(ОтчётыККМ.ДатаДок, 1, 8) | AND ОтчётыККМ.Касса=Возвраты.Касса | AND ОтчётыККМ.Номенклатура=Возвраты.Номенклатура // ВозвратОтПокупателя //////////////////////////////////////////// /////////////////////////////////////////////////////////////////// |LEFT JOIN | (SELECT | прт.IDDoc AS Ссылка, | прт.SP331 AS Номенклатура, | SUM(прт.SP344) AS Сумма | FROM | ВнешнийИсточникДанных.ТиС.Таблица.dbo_RA328 AS прт | GROUP BY | прт.IDDoc, | прт.SP331) AS ПартииО | ON | ОтчётыККМ.Ссылка=ПартииО.Ссылка | AND ОтчётыККМ.Номенклатура=ПартииО.Номенклатура |LEFT JOIN | (SELECT | прт.IDDoc AS Ссылка, | прт.SP331 AS Номенклатура, | SUM(прт.SP344) AS Сумма | FROM | ВнешнийИсточникДанных.ТиС.Таблица.dbo_RA328 AS прт | GROUP BY | прт.IDDoc, | прт.SP331) AS ПартииВ | ON | Возвраты.Ссылка=ПартииВ.Ссылка | AND Возвраты.Номенклатура=ПартииВ.Номенклатура // Партии ///////////////////////////////////////////////////////// /////////////////////////////////////////////////////////////////// |GROUP BY | SUBSTRING(ОтчётыККМ.ДатаДок, 1, 8), | Кассы.Descr, | Кассы.Code, | ВЫБОР | КОГДА ОтчётыККМ.ВидНоменклатуры="" 2Q2 "" ТОГДА &НоменклатураТовар | КОГДА ОтчётыККМ.ВидНоменклатуры="" 1X3 "" ТОГДА &НоменклатураУслуга | КОГДА ОтчётыККМ.ВидНоменклатуры="" 7YB "" ТОГДА &НоменклатураГП | ИНАЧЕ ОтчётыККМ.ВидНоменклатуры | КОНЕЦ, | ВЫБОР | КОГДА ОтчётыККМ.СтавкаНДС="" I8 "" ТОГДА ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) | КОГДА ОтчётыККМ.СтавкаНДС="" 6CF "" ТОГДА ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) | ИНАЧЕ ОтчётыККМ.СтавкаНДС | КОНЕЦ |ORDER BY | SUBSTRING(ОтчётыККМ.ДатаДок, 1, 8), | Кассы.Descr | |ИТОГИ | СУММА(СуммаОтчётовККМ), | СУММА(СуммаВозвратов), | СУММА(СебестоимостьОтчётовККМ), | СУММА(СебестоимостьВозвратов), | СУММА(ИтогПродаж), | СУММА(ИтогСебестоимости) |ПО | Дата, | Касса"; |
|||
6
Defender aka LINN
19.03.13
✎
11:10
|
ВидНоменклатуры, поди, строка неограниченной длины?
|
|||
7
Wobland
19.03.13
✎
11:10
|
(3) так ещё нет
(6) ID из семёрки. вроде ж нет |
|||
8
Defender aka LINN
19.03.13
✎
11:11
|
(7) А я таки думаю, что да. А строка неограниченной длины не может быть в составном типе.
|
|||
9
MSII
19.03.13
✎
11:12
|
(7) Попробуй. Зачем тебе строка в группировочном поле.
|
|||
10
Wobland
19.03.13
✎
11:12
|
(8) этот же запрос со вторым кейсом из (0) отрабатывает
|
|||
11
MSII
19.03.13
✎
11:13
|
(10) Там у тебя один тип выбирается - число. Поэтому отрабатывает.
|
|||
12
MSII
19.03.13
✎
11:14
|
Думаю, действительно не может сгруппировать ссылку и строку.
|
|||
13
Ёпрст
19.03.13
✎
11:15
|
(5) в гроуп бай не хватает поля..
|
|||
14
Ёпрст
19.03.13
✎
11:15
|
вот этого:
SELECT | Истина AS Пометка, |
|||
15
Wobland
19.03.13
✎
11:16
|
СГРУППИРОВАТЬ ПО
истина, ПОДСТРОКА(ОтчётыККМ.ДатаДок, 1, 8), ... ВЫБОР КОГДА ОтчётыККМ.ВидНоменклатуры = " 2Q2 " ТОГДА &НоменклатураТовар КОГДА ОтчётыККМ.ВидНоменклатуры = " 1X3 " ТОГДА &НоменклатураУслуга КОГДА ОтчётыККМ.ВидНоменклатуры = " 7YB " ТОГДА &НоменклатураГП ИНАЧЕ ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КОНЕЦ КАК Номенклатура, ВЫБОР КОГДА ОтчётыККМ.СтавкаНДС = " I8 " ТОГДА ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) КОГДА ОтчётыККМ.СтавкаНДС = " 6CF " ТОГДА ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС18) КОНЕЦ КАК СтавкаНДС, неверные параметры |
|||
16
Ёпрст
19.03.13
✎
11:17
|
(15) убери с гроуп бай
Как Номенклатура КАК СтавкаНДС |
|||
17
Wobland
19.03.13
✎
11:18
|
(16) это погрешности копи-паста. запрос сейчас делается конструктором и синтаксически верно
|
|||
18
Ёпрст
19.03.13
✎
11:20
|
(17) если закомментишь Выбор ... в селекте и в гроуп бай, запрос выполняется хоть ?
А так, всё должно работать |
|||
19
Wobland
19.03.13
✎
11:24
|
закомментил. результат пустой. но работает. но пустой...
|
|||
20
Wobland
19.03.13
✎
11:25
|
(18) параметры на числа заменял - работало
|
|||
21
НафНаф
19.03.13
✎
11:26
|
какие параметры то?
|
|||
22
Ёпрст
19.03.13
✎
11:26
|
Странно, с параметрами тоже должно работать
|
|||
23
Ёпрст
19.03.13
✎
11:26
|
ты их хоть устанавливаешь где ?
:) |
|||
24
Wobland
19.03.13
✎
11:26
|
не, вру. заменил в консоли на числа - неверные параметры
|
|||
25
Defender aka LINN
19.03.13
✎
11:27
|
(20) Врешь, у тебя в ИНАЧЕ не параметр был ни разу :)
|
|||
26
Wobland
19.03.13
✎
11:29
|
так. вариант 1: оставляю в тексте &НоменклатураТовар
вариант 2: пишу ТОГДА 0 (или 1 или 2) (25) был. просто ты этого не видел результаты опытов: вариант 1: неверные параметры вариант 2: работает, результат пустой |
|||
27
Wobland
19.03.13
✎
11:31
|
(26) пустота результата вызвана другими параметрами. вариант 2 даёт непустой результат
|
|||
28
Wobland
19.03.13
✎
11:31
|
где-то я вру. то ли в (0) то ли в (26)...
|
|||
29
Ёпрст
19.03.13
✎
11:33
|
и чего хоть за параметры устанавливаешь ?
|
|||
30
Defender aka LINN
19.03.13
✎
11:34
|
(28) Вот-вот...
|
|||
31
Wobland
19.03.13
✎
11:35
|
зафиксировал ошибку. текст запроса не трогаю
ВЫБОР КОГДА ОтчётыККМ.ВидНоменклатуры = " 2Q2 " ТОГДА &НоменклатураТовар ИНАЧЕ &НоменклатураТовар КОНЕЦ КАК Номенклатура, при &НоменклатураТовар=0 работает, при &НоменклатураТовар=ссылке на справочник неверные параметры. всё в консоли |
|||
32
Wobland
19.03.13
✎
11:35
|
ставка НДС курит в углу: ОтчётыККМ.СтавкаНДС КАК СтавкаНДС,
|
|||
33
Wobland
19.03.13
✎
11:45
|
облегчённый запрос с сохранением ситуации
ВЫБРАТЬ ВЫБОР КОГДА ОтчётыККМ.ВидНоменклатуры = " 2Q2 " ТОГДА &НоменклатураТовар ИНАЧЕ &НоменклатураТовар КОНЕЦ КАК Номенклатура ИЗ (ВЫБРАТЬ ЖурО.DATE_TIME_IDDOC КАК ДатаДок, ОтчётККМТЧ.IDDOC КАК Ссылка, ОтчётККМШ.SP3363 КАК Касса, ОтчётККМТЧ.SP3102 КАК Номенклатура, спрНоменклатура.SP2417 КАК ВидНоменклатуры, ОтчётККМТЧ.SP3108 КАК СтавкаНДС, СУММА(ОтчётККМТЧ.SP3107) КАК Сумма ИЗ ВнешнийИсточникДанных.ТиС.Таблица.dbo__1SJOURN КАК ЖурО ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.ТиС.Таблица.dbo_DH3114 КАК ОтчётККМШ ПО (ОтчётККМШ.IDDOC = ЖурО.IDDOC) ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.ТиС.Таблица.dbo_DT3114 КАК ОтчётККМТЧ ПО (ОтчётККМШ.IDDOC = ОтчётККМТЧ.IDDOC) ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВнешнийИсточникДанных.ТиС.Таблица.dbo_SC84 КАК спрНоменклатура ПО (ОтчётККМТЧ.SP3102 = спрНоменклатура.ID) ГДЕ ЖурО.DATE_TIME_IDDOC МЕЖДУ &ДатаНачала И &ДатаОкончания И (ЖурО.CLOSED = 1 ИЛИ ЖурО.CLOSED = 3 ИЛИ ЖурО.CLOSED = 5 ИЛИ ЖурО.CLOSED = 7) И (ЖурО.SP5365 = &Организация ИЛИ &ПустаяОрганизация) И (ОтчётККМШ.SP3093 = &Склад ИЛИ &ПустойСклад) И ОтчётККМШ.SP11859 = " 0 " СГРУППИРОВАТЬ ПО ЖурО.DATE_TIME_IDDOC, ОтчётККМТЧ.IDDOC, ОтчётККМШ.SP3363, ОтчётККМТЧ.SP3102, спрНоменклатура.SP2417, ОтчётККМТЧ.SP3108) КАК ОтчётыККМ СГРУППИРОВАТЬ ПО ВЫБОР КОГДА ОтчётыККМ.ВидНоменклатуры = " 2Q2 " ТОГДА &НоменклатураТовар ИНАЧЕ &НоменклатураТовар КОНЕЦ |
|||
34
zladenuw
19.03.13
✎
11:48
|
(31) должно работать.
все отрабатывает. в группировках не надо указывать имена полям ВЫБРАТЬ ВЫБОР КОГДА Авто.Наименование <> "" ТОГДА &п КОГДА Авто.Наименование <> "678" ТОГДА &ло //ИНАЧЕ &л КОНЕЦ КАК Поле1 ИЗ Справочник.Авто КАК Авто ГДЕ Авто.Ссылка = &Ссылка СГРУППИРОВАТЬ ПО ВЫБОР КОГДА Авто.Наименование <> "" ТОГДА &п КОГДА Авто.Наименование <> "678" ТОГДА &ло //ИНАЧЕ &л КОНЕЦ |
|||
35
Ёпрст
19.03.13
✎
11:48
|
а не в консоли работает ?
|
|||
36
Wobland
19.03.13
✎
11:50
|
(35) нет. в консоль перебрался специально для выявления
|
|||
37
Wobland
19.03.13
✎
11:54
|
ещё более облегчённый вариант ;)
ВЫБРАТЬ ВЫБОР КОГДА ОтчётыККМ.ВидНоменклатуры = " 2Q2 " ТОГДА &НоменклатураТовар ИНАЧЕ &НоменклатураТовар КОНЕЦ КАК Номенклатура ИЗ (ВЫБРАТЬ спрНоменклатура.SP2417 КАК ВидНоменклатуры ИЗ ВнешнийИсточникДанных.ТиС.Таблица.dbo_SC84 КАК спрНоменклатура СГРУППИРОВАТЬ ПО спрНоменклатура.SP2417) КАК ОтчётыККМ |
|||
38
zladenuw
19.03.13
✎
11:59
|
может так ВЫРАЗИТЬ(ОтчётыККМ.ВидНоменклатуры КАК Строка(3))=" 2Q2"
|
|||
39
Wobland
19.03.13
✎
12:02
|
(38) а разницы? в результате такого выбора будет выбран &НоменклатураТовар. а когда в там число, всё хорошо
проверил - неверные параметры при справочнике, всё работает при числе |
|||
40
Wobland
19.03.13
✎
12:02
|
и ведь показывает несколько строк..
ВЫБРАТЬ ОтчётыККМ.* ИЗ (ВЫБРАТЬ спрНоменклатура.SP2417 КАК ВидНоменклатуры ИЗ ВнешнийИсточникДанных.ТиС.Таблица.dbo_SC84 КАК спрНоменклатура СГРУППИРОВАТЬ ПО спрНоменклатура.SP2417) КАК ОтчётыККМ |
|||
41
Wobland
19.03.13
✎
12:12
|
сдаётся мне, тут какая-то магия внешних источников. со справочником запрос, аналогичный (37) работает
ВЫБРАТЬ ВЫБОР КОГДА ОтчётыККМ.ВидНоменклатуры = " 2Q2 " ТОГДА &НоменклатураТовар ИНАЧЕ &НоменклатураТовар КОНЕЦ КАК Номенклатура ИЗ (ВЫБРАТЬ спрНоменклатура.Код КАК ВидНоменклатуры ИЗ Справочник.Контрагенты КАК спрНоменклатура СГРУППИРОВАТЬ ПО спрНоменклатура.Код) КАК ОтчётыККМ |
|||
42
zladenuw
19.03.13
✎
12:14
|
может тогда получать результат с внешнего источника в тз и уже тогда делать запрос к нему ? хотя это платформа шалит :)
|
|||
43
Wobland
19.03.13
✎
12:23
|
(42) видимо, так и придётся ;)
|
|||
44
zladenuw
19.03.13
✎
12:27
|
(43) обидно. сделают цяцю которая не работает на 100%.
|
|||
45
Wobland
21.03.13
✎
13:29
|
кстати, когда пытался написать ПОМЕСТИТЬ, конструктор сказал, что при работе с внешними источниками использование ВТ недопустимо. в итоге имею
непонятная магия внешних источников... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |