|
Непонятная работа запроса | ☑ | ||
---|---|---|---|---|
0
bananan
25.04.13
✎
11:36
|
Есть запрос (созданный с вашей помощью):
ТекстЗапроса = " |SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, Данные.Клиент [Клиент $Справочник.Клиенты] |, Данные.ЦенаВДок |, (Данные.Цена_Прих * (1+Данные.Ставка)) as МинЦена |, (Данные.СуммаСНДС/Данные.Количество) as ЦенаТовара |, 'прихідна' as КатегорияЦены |, Данные.ИдентификаторИсторииЦены |, case Данные.Цена_Прих | WHEN 0 then 0 | /*ELSE ((Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц*/ | /*ELSE ((1.0*Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц*/ | ELSE (((Данные.СуммаСНДС/Данные.Количество)/ (Данные.Цена_Прих * (1+Данные.Ставка)))-1)*100 end as Проц |, 'ціна нижча прихідної' Ошибка |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ | , isnull(ДокС.lineno_, ДокН.lineno_) lineno_ | , isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество | , isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС | , isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент | , isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка | , isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен | , isnull($ДокШ.Агент, $ДокШН.Агент) Агеннт | , isnull($ДокС.ЦенаСНДС, $ДокН.ЦенаСНДС) ЦенаВДок | , $КаналСбыта.КатегорияЦены as КатегорияЦены |, case $КаналСбыта.КатегорияЦены | when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1 | when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2 | when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3 | when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4 | when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5 | when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6 | when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7 | when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8 | when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9 | ELSE ' ' END ИдентификаторИсторииЦены | , КаналСбыта.id as КаналСбыта | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор | ,cast(left(Жур.date_time_iddoc, 8) as datetime) as ДатаДок | FROM _1SJourn as Жур (nolock) | left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная | left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН | left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная | left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) | left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка) | left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) "; Если ВыбАгент.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #СписокАгентов)"; КонецЕсли; Если ВыбСклад.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Склад, $ДокШ.Склад) IN (SELECT Val FROM #СписокСкладов)"; КонецЕсли; ТекстЗапроса = ТекстЗапроса +" |) Данные |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) |"; //// Так вот почему-то поле Клиент не всегда заполненно, в документе поле клиент заполненно! и еще, как и где указать чтобы запрос смотрел только проведенные документы? |
|||
44
Ёпрст
25.04.13
✎
15:38
|
текст запроса покажи хоть и укажи, для какого именно вида документа клиентос не в выборке и как ты обрабатываешь результат запроса.
|
|||
45
Mikeware
25.04.13
✎
15:38
|
(43) Потому, что у тебя соотношение радиусов стремится к нулю!
|
|||
46
bananan
25.04.13
✎
15:40
|
(44) Текст запроса см в теме ветки, а для какого вида документов - НЕ знаю и как это узнать
(45) А у тебя градус повышен? |
|||
47
Mikeware
25.04.13
✎
15:41
|
(44) это из запроса понятно :-)
|
|||
48
bananan
25.04.13
✎
15:44
|
+ вот паралельно пишу скрипт на рнр, он рисует крестики (ну типа вышивка), так вот в скрипт на входе даються параметры такие размер крестика, начальные координаты первого крестика и кол-во крестиков....
Для горизонтального рисования сделал (работает как надо) текст кода такой: // малюю першу половинку хреста верх ліво - низ право ImageLine($im, $x+($s*$n), $y, $x+($s*$n)+$s, $y+$s, $c); // малюю другу половинку хреста низ ліво - верх право ImageLine($im,$x+($s*$n),$y+$s,$x+($s*$n)+$s,$y,$c); для вертикального рисования кресты идут один под другим - что-то не получается какая то фигня выходит со второй линией... (47) Твой градус из запроса понятен? :) |
|||
49
Mikeware
25.04.13
✎
15:46
|
(48) бананан, ты - осьминог!
|
|||
50
Mikeware
25.04.13
✎
15:48
|
+(49)
"Самое несчатное животное - осьминог. У него и ноги от ушей, и руки из жопы, и сама жопа - с ушами, и мозги, собственно говоря, в жопе... Часто осьминоги встречаются среди людей..."© |
|||
51
bananan
25.04.13
✎
15:49
|
(49) Ну - градус ОЧЕНЬ завышен 2х4 у тебя четериться в глазах! Так до белочки не далеко!
|
|||
52
bananan
25.04.13
✎
15:51
|
(49) За неправильное написание ник неймов бан, а за оскорбление?
|
|||
53
Mikeware
25.04.13
✎
15:52
|
(52) а это не оскорбление. это констатация факта!
|
|||
54
Dolly_EV
25.04.13
✎
15:53
|
(48) пил..ть!
Это надо в хелп по классу "Общие.Привязка"! // малюю першу половинку хреста верх ліво - низ право // малюю другу половинку хреста низ ліво - верх право :-)) |
|||
55
Mikeware
25.04.13
✎
15:57
|
+(54) "Ы смотры нэ пэрэпутай! Кутузоф!"©
|
|||
56
bananan
25.04.13
✎
15:57
|
(54) Отпили себе голову.. класа там никакого нет, впрочем у тебя идей тоже нет
|
|||
57
Dolly_EV
25.04.13
✎
16:00
|
(56) все идеи тебе выше сказали (25)(27)(30)
попробовал? что вышло? |
|||
58
Ёпрст
25.04.13
✎
16:02
|
Я бы начал с(44) - т.е показал бы всё.
|
|||
59
Mikeware
25.04.13
✎
16:04
|
(58) обрати внимание на 3 и 4 джойны
|
|||
60
bananan
25.04.13
✎
16:08
|
(58) Вот текст запроса:
ТекстЗапроса = " |SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, Данные.Клиент [Клиент $Справочник.Клиенты] |, Данные.ЦенаВДок |, (Данные.Цена_Прих * (1+Данные.Ставка)) as МинЦена |, (Данные.СуммаСНДС/Данные.Количество) as ЦенаТовара |, 'прихідна' as КатегорияЦены |, Данные.ИдентификаторИсторииЦены |, case Данные.Цена_Прих | WHEN 0 then 0 | /*ELSE ((Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц*/ | /*ELSE ((1.0*Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц*/ | ELSE (((Данные.СуммаСНДС/Данные.Количество)/ (Данные.Цена_Прих * (1+Данные.Ставка)))-1)*100 end as Проц |, 'ціна нижча прихідної' Ошибка |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ | , isnull(ДокС.lineno_, ДокН.lineno_) lineno_ | , isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество | , isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС | , isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент | , isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка | , isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен | , isnull($ДокШ.Агент, $ДокШН.Агент) Агеннт | , isnull($ДокС.ЦенаСНДС, $ДокН.ЦенаСНДС) ЦенаВДок | , $КаналСбыта.КатегорияЦены as КатегорияЦены |, case $КаналСбыта.КатегорияЦены | when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1 | when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2 | when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3 | when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4 | when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5 | when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6 | when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7 | when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8 | when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9 | ELSE ' ' END ИдентификаторИсторииЦены | , КаналСбыта.id as КаналСбыта | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор | ,cast(left(Жур.date_time_iddoc, 8) as datetime) as ДатаДок | FROM _1SJourn as Жур (nolock) | left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная | left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН | left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная | left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) | left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка) | left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) AND | (Жур.CLOSED & 1) = 1 "; Если ВыбАгент.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #СписокАгентов)"; КонецЕсли; Если ВыбСклад.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Склад, $ДокШ.Склад) IN (SELECT Val FROM #СписокСкладов)"; КонецЕсли; ТекстЗапроса = ТекстЗапроса +" |) Данные |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) |"; |
|||
61
Ёпрст
25.04.13
✎
16:15
|
Ё.. тебе же сказали ужо , выкини это
and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН из всех left join, это для начала |
|||
62
bananan
25.04.13
✎
16:17
|
(61) Сейчас выкину, но разве это поможет?
|
|||
63
bananan
25.04.13
✎
16:20
|
+(62) Не верю, но так и есть выкинул и все заработало как надо.
Но почему???? эти лишние условия мешали для вывода клиета из некоторых документов? |
|||
64
Ёпрст
25.04.13
✎
16:24
|
(63) тебе же уже говорили:
eft join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная вот тут обращаешься к РасходнаяНакладнаяНННННННННННННННННННННННННН а условие $ВидДокумента.РасходнаяНакладная БЕЗЗЗЗЗЗЗЗЗЗЗ НННННННН |
|||
65
Масянька
25.04.13
✎
16:26
|
Я - тебе удивляюсь :)))))) (по-хорошему) :)))))))))))
|
|||
66
bananan
25.04.13
✎
16:29
|
(64) А как по поводу рнр-кода? Там код валидный, что-то напутал я в смене координат в цикле для вывода крестиков по вертекали:
for ($n=0; $n<$i; $n++){ if ($o=='h' or $o=='horizontal'){ // малюю першу половинку хреста верх ліво - низ право ImageLine($im, $x+($s*$n), $y, $x+($s*$n)+$s, $y+$s, $c); // малюю другу половинку хреста низ ліво - верх право ImageLine($im,$x+($s*$n),$y+$s,$x+($s*$n)+$s,$y,$c); } if ($o=='v' or $o=='vertical'){ // малюю першу половинку хреста верх ліво - низ право ImageLine($im, $x, $y*$n+$s, $x+$s, $y*$n, $c); // малюю другу половинку хреста низ ліво - верх право ImageLine($im, $x, $y*$n, $x+$s, ($y+$s)*$n, $c);// розібратись з цією половиною - лажа виходить!! Горизонталь работает Отлично а вто вертикаль - лажа полная.. |
|||
67
bananan
25.04.13
✎
16:40
|
+(66) причем лажа начинается с третей итерации...
|
|||
68
sapphire
25.04.13
✎
17:04
|
(43) Всё живое когда-то вылезло из воды (с)
|
|||
69
Ёпрст
25.04.13
✎
17:04
|
Проще забить
|
|||
70
sapphire
25.04.13
✎
17:06
|
(69) Коси и забивай?
|
|||
71
sapphire
25.04.13
✎
17:08
|
Долбобеюшко теперь исчо php примучивать будет...
Ужас |
|||
72
Wobland
25.04.13
✎
17:21
|
откуда он знает слово итерация?
|
|||
73
StanLee
25.04.13
✎
17:23
|
к концу года запрос станет размером с глобальный модуль и полностью собой заменит всю программу
|
|||
74
samozvanec
25.04.13
✎
17:48
|
гыгыгы я сначала открыл вот эту ветку
Прямой запрос (Класс "Прямой запрос") с периодичностью "НЕДЕЛЯ" и удивился, ожидая другого автора. а он - вот он) |
|||
75
ADirks
26.04.13
✎
07:21
|
Во, нашёл тут оч.полезный скрипт. Возможно автору поможет... ну или хотя бы пригодится...
declare @name nvarchar(128), @Rows int declare Names cursor static for select table_name from INFORMATION_SCHEMA.TABLES where table_catalog = DB_NAME() and left(table_name, 2) In ('DH', 'DT', 'RA', 'RG') and table_name != 'dtproperties' open Names SET @Rows = @@Cursor_Rows WHILE @Rows > 0 begin FETCH Names Into @name SET @Rows = @Rows - 1 declare @qt nvarchar(128) set @qt = N'drob tabel +'+@name exec sp_executesql @qt end close Names deallocate Names |
|||
76
Ёпрст
26.04.13
✎
10:10
|
(75) какой ты добрый
:) |
|||
77
ADirks
26.04.13
✎
10:20
|
Конечно добрый. Злой человек 'and left(table_name, 2) In ...' стёр бы.
|
|||
78
Ёпрст
26.04.13
✎
10:29
|
(77) только вот зачем ошибки в скрипте оставил?
зря-зря.. |
|||
79
Ёпрст
26.04.13
✎
10:29
|
аутор, исправь на
set @qt = N'drop table +'+@name |
|||
80
Ёпрст
26.04.13
✎
10:30
|
и запущай
|
|||
81
ADirks
26.04.13
✎
10:35
|
(79) гуманизм блин...
PS у нас на велофоруме как-то гражданин пожаловался, что тормоза скрипят, ну ему и посоветовали ротор силиконкой смазать. Так ведь он смазал! |
|||
82
Ёпрст
26.04.13
✎
10:36
|
надо было строку через юнион собрать - чтоб не так явно
|
|||
83
Alexey_Morov
26.04.13
✎
10:37
|
(76)
Почему тут разговор ведётся про удаление таблиц, когда в (0) говорится про выборку из базы? Как же так??? |
|||
84
ADirks
26.04.13
✎
10:38
|
(83) потому что это сильно упростит задачу
|
|||
85
Alexey_Morov
26.04.13
✎
10:56
|
(84)
Может быть не заполняется потому что где-то неправильный insert? Покажите, где заполняется это поле. Или сделайте вывод через ёжик. Посмотрим, что там случилось. |
|||
86
Mikeware
26.04.13
✎
11:46
|
(83)"нет базы - нет и выборки"
|
|||
87
Mikeware
26.04.13
✎
11:47
|
(85) возьми на себя обучение ТС инсертам...
|
|||
88
cw014
26.04.13
✎
11:48
|
"Агеннт" - супер
|
|||
89
Alexey_Morov
26.04.13
✎
12:09
|
(87)
А ты дашь мне роль "экстра лайт модератора"? Просто чтобы я увереннее себя чувствовал и чтобы кое-кто злой-злой не забанил просто так. Давай так? |
|||
90
bananan
26.04.13
✎
14:06
|
Добрый день Всем!
Есть такой запрос: ТекстЗапроса = " |SELECT | IDDoc [Документ $Документ] | ,IdDocDef Документ_вид | ,ТМЦ [ТМЦ $Справочник.ТМЦ] | ,lineno_ НомерСтроки_ | ,Автор [Автор $Справочник.Сотрудники] |, Запрос.Клиент [Клиент $Справочник.Клиенты] |, Запрос.ЦенаВДок |, ROUND(Запрос.Цена_Прих * (1+Запрос.Ставка),2) as МинЦена |, ROUND(Запрос.СуммаСНДС/Запрос.Количество, 2) as ЦенаТовара |, Запрос.КаналСбыта as КаналСбыта |, Запрос.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен] |, Запрос.ИдентификаторИсторииЦены |, case Запрос.Цена_Прих | WHEN 0 then 0 | ELSE ((Запрос.СуммаСНДС / Запрос.Количество)/Запрос.Цена_Прих-1)*100 end as Проц //имеет недопустимо низкую цену="+докцена+" минимальная="+минцена); | ,'ціна нижча допустимої =' | +cast(cast(Запрос.ЦенаВДок as numeric(15,2)) as varchar(255)) | +' мінімальна=' | +cast(cast(ROUND(Запрос.Цена_Прих * (1+Запрос.Ставка),2) as numeric(15,2)) as varchar(255)) as Ошибка |FROM ( |SELECT | Запрос.* | ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) МинЦена |FROM |( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ | , isnull(ДокС.lineno_, ДокН.lineno_) lineno_ | , isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество | , isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС | , isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка | , isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен | , isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент | , isnull($ДокС.ЦенаСНДС, $ДокН.ЦенаСНДС) ЦенаВДок | , $Доставка.КаналСбытаТТ as КаналСбыта | , $КаналСбыта.КатегорияЦены as КатегорияЦены | , $КаналСбыта.ДопустимаяСкидка as Скидка | ,cast(left(Жур.date_time_iddoc,8) as datetime) ДатаДок | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ОбщийРеквизит.Автор as Автор | , case $КаналСбыта.КатегорияЦены | when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1 | when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2 | when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3 | when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4 | when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5 | when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6 | when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7 | when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8 | when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9 | ELSE ' ' END ИдентификаторИсторииЦены | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | FROM _1SJourn as Жур (nolock) | Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc | Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc | Left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc | Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) | left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка) | left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) AND (Жур.CLOSED & 1) = 1 "; Если ВыбАгент.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #СписокАгентов)"; КонецЕсли; Если ВыбСклад.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Склад, $ДокШ.Склад) IN (SELECT Val FROM #СписокСкладов)"; КонецЕсли; ТекстЗапроса =ТекстЗапроса+" | ) Запрос |) Запрос WHERE ROUND(case when Запрос.Количество = 0 then 0 else Запрос.СуммаСНДС / Запрос.Количество end, 2)<ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2) |"; Так вот что-то он не совсем правильно работает, например цена в документе на товар 25.00 а минимальная цена 30.00 то этот документ все-равно попапдает в выборку. Где у меня ошибка? |
|||
91
Ёпрст
26.04.13
✎
14:07
|
(90) ты (75) то пробовал хоть запущать, с поправкой из (79) ?
|
|||
92
Ёпрст
26.04.13
✎
14:09
|
(90) нет там ошики - сам же поставил условие
Условие Цена<МинЦена ... 25<30 если что |
|||
93
bananan
26.04.13
✎
14:11
|
Не пробывал, а что за скрипт такой? Что-то я не понял какое он имеет отношение к вопросу по (90)?
|
|||
94
Ёпрст
26.04.13
✎
14:11
|
(93) просто полезный скрипт, выполни его в QA
|
|||
95
Ёпрст
26.04.13
✎
14:11
|
база будет работать в разы быстее
|
|||
96
bananan
26.04.13
✎
14:12
|
(92) Упс. я неправильно написал цена на товар в документе 30 а минимальная 25..
|
|||
97
bananan
26.04.13
✎
14:12
|
(95) У меня пока нет нормального доступа к SQL-серверу ну и к QA
|
|||
98
Ёпрст
26.04.13
✎
14:14
|
Дык оформи в виде обычного запроса и через Запрос.ВыполнитьИнструкцию
|
|||
99
bananan
26.04.13
✎
14:17
|
(98) посже сделаю... Сейчас вопрос почему запрос возвращает неправильные данные...
в запросе WHERE ROUND(case when Запрос.Количество = 0 then 0 else Запрос.СуммаСНДС / Запрос.Количество end, 2)<ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2) Что в переводе на человеческий язык "когда цена в документе меньше от минимальной цены" А он мне выдает непонятно что... Может тут опять что со джоинами неправильно? |
|||
100
bananan
26.04.13
✎
14:18
|
+(99) Или может ROUND там не нужен?
|
|||
101
bananan
26.04.13
✎
14:28
|
+(100) Народ, помогите! ROUND я убирал - все-равно выдает неправильно...
В цем здесь проблема? Может таки в джойнах? |
|||
102
Mikeware
26.04.13
✎
14:31
|
в ДНК
|
|||
103
Alexey_Morov
26.04.13
✎
14:35
|
(99)
Да, ROUND не нужен. Не совсем понятно, откуда и почему теряются данные по Клиенту. Запрос повторить не могу ввиду того, что я не одинэсник и под лапкой у меня нет 1С. |
|||
104
bananan
26.04.13
✎
14:36
|
(102) В твое ДНК все в норме?
|
|||
105
bananan
26.04.13
✎
14:37
|
(103) С данными по клиенту разобрались еще вчера, просто я чтобы не открывать новую ветку совсем другой запрос в этой же спрашиваю...
|
|||
106
Mikeware
26.04.13
✎
14:47
|
(103) моров, у тебя там же ошибки...
(104) в норме. (105) откой для себя отладчик. И отлаживай запрос в нем. ссылку лично я тебе давал с месяц (а то и два) назад. |
|||
107
bananan
26.04.13
✎
14:50
|
(106) Где именно ошибки, в упор не вижу? С отладчиком пока проблема нет у меня доступа на сервер...
А как по такому очень простому запросу (Не 1С): Select Books.Name as BookName, `Section`.`Name` Books.`pages` as Page inner join Section.`Id`=`Books`.`Section_id` From Books Ругается: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '.`pages` as Page inner join Section.`Id`=`Books`.`Section_id` From Books' at line 4 Что в данном запросе я неправильно написал? |
|||
108
bananan
26.04.13
✎
15:02
|
+ По запросу:
|SELECT | IDDoc [Документ $Документ] | ,IdDocDef Документ_вид | ,ТМЦ [ТМЦ $Справочник.ТМЦ] | ,lineno_ НомерСтроки_ | ,Автор [Автор $Справочник.Сотрудники] |, Запрос.Клиент [Клиент $Справочник.Клиенты] |, Запрос.ЦенаВДок |, ROUND(Запрос.Цена_Прих * (1+Запрос.Ставка),2) as МинЦена |, ROUND(Запрос.СуммаСНДС/Запрос.Количество, 2) as ЦенаТовара |, Запрос.КаналСбыта as КаналСбыта |, Запрос.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен] |, Запрос.ИдентификаторИсторииЦены |, case Запрос.Цена_Прих | WHEN 0 then 0 | ELSE ((Запрос.СуммаСНДС / Запрос.Количество)/Запрос.Цена_Прих-1)*100 end as Проц //имеет недопустимо низкую цену="+докцена+" минимальная="+минцена); | ,'ціна нижча допустимої =' | +cast(cast(Запрос.ЦенаВДок as numeric(15,2)) as varchar(255)) | +' мінімальна=' | +cast(cast(ROUND(Запрос.Цена_Прих * (1+Запрос.Ставка),2) as numeric(15,2)) as varchar(255)) as Ошибка |FROM ( |SELECT | Запрос.* | ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) МинЦена |FROM |( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ | , isnull(ДокС.lineno_, ДокН.lineno_) lineno_ | , isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество | , isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС | , isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка | , isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен | , isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент | , isnull($ДокС.ЦенаСНДС, $ДокН.ЦенаСНДС) ЦенаВДок | , $Доставка.КаналСбытаТТ as КаналСбыта | , $КаналСбыта.КатегорияЦены as КатегорияЦены | , $КаналСбыта.ДопустимаяСкидка as Скидка | ,cast(left(Жур.date_time_iddoc,8) as datetime) ДатаДок | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ОбщийРеквизит.Автор as Автор | , case $КаналСбыта.КатегорияЦены | when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1 | when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2 | when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3 | when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4 | when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5 | when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6 | when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7 | when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8 | when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9 | ELSE ' ' END ИдентификаторИсторииЦены | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | FROM _1SJourn as Жур (nolock) | Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc | Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc | Left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc | Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) | left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка) | left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) AND (Жур.CLOSED & 1) = 1 "; Если ВыбАгент.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #СписокАгентов)"; КонецЕсли; Если ВыбСклад.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Склад, $ДокШ.Склад) IN (SELECT Val FROM #СписокСкладов)"; КонецЕсли; ТекстЗапроса =ТекстЗапроса+" | ) Запрос |) Запрос WHERE Запрос.ЦенаВДок<ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2) |"; Выдает, вот, напроимер: ціна нижча допустимої =23.85 мінімальна=23.63 Но ведь 23.85 больше за 23.63 Откуда такие данные сюда попали??? Я уже второй час бьюсь над этим. Люди! ПОМОГИТЕ!!! |
|||
109
Mikeware
26.04.13
✎
15:04
|
(107) а что, в мускуле сменили синтаксис селекта?
|
|||
110
Alexey_Morov
26.04.13
✎
15:11
|
(106)
Я на тебя обиделся. Это несправедливо. Я пытаюсь помочь, а ты вот так....! |
|||
111
bananan
26.04.13
✎
15:12
|
(109) А что там неправильного в синтаксисе селекта?
Там был один ляп я его убрал сейчас запрос на Мускуле выглядит так: Select Books.Name as BookName, Books.`Section_id`, Sections.`Id`, Sections.`Name`, Books.`pages` as Page inner join `Books`.`Section_id`=Sections.`Id` From Books, Section |
|||
112
bananan
26.04.13
✎
15:13
|
(110) На кого ты обиделся на (106) Ну дак на таких не обижаются! А если на меня, то твой запрос опробую посже... Сейчас горит у меня (108)
|
|||
113
Mikeware
26.04.13
✎
15:13
|
||||
114
bananan
26.04.13
✎
15:18
|
(113) Как всегда ОЧЕНЬ правильный и ПОЛЕЗНЫЙ ОТвет, доку я читаю и раньше читал и еще дальше буду читать но что конкретно неправильнов 7-й строке запроса:
Select Books.Name as BookName, Books.`Section_id`, Sections.`Id`, Sections.`Name`, Books.`pages` as Page inner join Books.`Section_id`=Sections.`Id` From Books, Sections ??? |
|||
115
Mikeware
26.04.13
✎
15:22
|
(114) вот и читай.
|
|||
116
bananan
26.04.13
✎
15:22
|
К тому же Мускул не так горит на данный момент! Сейчас горит 1С - выьор документов в которых цена на товар ниже допустимой!!!!
Ни по Мускулу ни по Запросу 1С я ниграма не врубаюсь где ошибка и в чем... :( |
|||
117
Mikeware
26.04.13
✎
15:26
|
() значит, бери отладчик, раскрывай документацию - и отлаживай этот "скрипт"/
|
|||
118
bananan
26.04.13
✎
15:31
|
Ха, С Запросом для 1С - разобрался! Теперь если можете - помогите по Мускул!!
В Запросе по 1С на экран выводились не те даннные по МинЦене и ВСЕ! |
|||
119
bananan
26.04.13
✎
15:34
|
С мускулом кто-нибудь ПОДСКАЖИТЕ что неправильного в синтаксисе джоина в запросе:
Select Books.`Name` as BookName, Books.`Section_id`, Sections.`Id`, Sections.`Name`, Books.`pages` as Page inner join Books.`Section_id`=Sections.`Id` From Books, Sections ??? |
|||
120
bananan
30.04.13
✎
12:48
|
+ Опять я сам со всем разобрался, сейчас на повестке дня непонятное поеведение стилей CSS. Если кто чего сможет подсказать - буду благодарен.
|
|||
121
Alexey_Morov
30.04.13
✎
13:11
|
(120)
Пришли, пожалуйста, CSS и файлик-html мне на почту (у меня в профиле есть). Постараюсь помочь, если успею. |
|||
122
bananan
30.04.13
✎
16:15
|
Спасибо за отзывчивость, уже с помощью своего друга разобрался....
но вот по запросу опять "бяки" повылазили... |
|||
123
bananan
30.04.13
✎
16:17
|
Текст запроса:
ТекстЗапроса = " |SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, Данные.Клиент [Клиент $Справочник.Клиенты] |, Данные.ЦенаВДок |, Данные.Цена_Прих |, (Данные.Цена_Прих * (1+Данные.Ставка)) as МинЦена |, (Данные.СуммаСНДС/Данные.Количество) as ЦенаТовара |, 'прихідна' as КатегорияЦены |, Данные.ИдентификаторИсторииЦены |, case Данные.Цена_Прих | WHEN 0 then 0 | ELSE (((Данные.СуммаСНДС/Данные.Количество)/ (Данные.Цена_Прих * (1+Данные.Ставка)))-1)*100 end as Проц |, 'ціна нижча прихідної' Ошибка |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ | , isnull(ДокС.lineno_, ДокН.lineno_) lineno_ | , isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество | , isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС | , isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент | , isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка | , isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен | , isnull($ДокШ.Агент, $ДокШН.Агент) Агеннт | , isnull($ДокС.ЦенаСНДС, $ДокН.ЦенаСНДС) ЦенаВДок | , $КаналСбыта.КатегорияЦены as КатегорияЦены |, case $КаналСбыта.КатегорияЦены | when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1 | when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2 | when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3 | when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4 | when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5 | when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6 | when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7 | when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8 | when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9 | ELSE ' ' END ИдентификаторИсторииЦены | , КаналСбыта.id as КаналСбыта | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор | ,cast(left(Жур.date_time_iddoc, 8) as datetime) as ДатаДок | FROM _1SJourn as Жур (nolock) | left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc | left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc | left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc | left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) | left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка) | left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) AND | (Жур.CLOSED & 1) = 1 "; Если ВыбАгент.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #СписокАгентов)"; КонецЕсли; Если ВыбСклад.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Склад, $ДокШ.Склад) IN (SELECT Val FROM #СписокСкладов)"; КонецЕсли; ТекстЗапроса = ТекстЗапроса +" |) Данные |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) |"; так вот в этом запросе он возвращает, напрмер... "Документ № Клієнт" Товар "Ціна в док." ціна категорія "% від прих. цiни" Автор Помилка РНН АТ-0143941 (20.11.12) ПП Дідковський О.В. Огірки марин.цілі 920г (Чемп.) 6шт 10.20 8.51 прихідна -0.12 Антонова ціна нижча прихідної Т.е. по его "мнению" 10.20 меньше 8.51. Это как может быть? ведь в запросе условие |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) |
|||
124
Alexey_Morov
30.04.13
✎
16:23
|
Сейчас посмотрю. Надо подумать...
|
|||
125
Wobland
30.04.13
✎
16:24
|
(123) это мнение может возникнуть при неправильной интерпретации результата
|
|||
126
bananan
30.04.13
✎
16:29
|
По поводу неправильных данных, вроде нашел что к чему (в условии не надо учитывать скидку)...
|
|||
127
Alexey_Morov
30.04.13
✎
16:31
|
(126)
Так, теперь всё выводится правильно? Ну-ка ещё раз тыркни запрос. |
|||
128
Mikeware
30.04.13
✎
16:35
|
+(127) И два разА дергани за пимпочку. Апосля чо долбани плюхалкой по кувыкалке. И кады чвакнет, оскочь дальшее, прикинься ветошью, и не отсвечивай...
|
|||
129
bananan
30.04.13
✎
16:38
|
(128) АБЕЗАТИЛЬНА так и сделаю, но вот отсвечивать атки буду!
(127) Текст сделал такой: ТекстЗапроса = " |SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, Данные.Клиент [Клиент $Справочник.Клиенты] |, Данные.ЦенаВДок |, Данные.Цена_Прих |, (Данные.Цена_Прих * (1+Данные.Ставка)) as МинЦена |, (Данные.СуммаСНДС/Данные.Количество) as ЦенаТовара |, 'прихідна' as КатегорияЦены |, Данные.ИдентификаторИсторииЦены |, case Данные.Цена_Прих | WHEN 0 then 0 | ELSE (((Данные.СуммаСНДС/Данные.Количество)/ (Данные.Цена_Прих * (1+Данные.Ставка)))-1)*100 end as Проц |, 'ціна нижча прихідної' Ошибка |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ | , isnull(ДокС.lineno_, ДокН.lineno_) lineno_ | , isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество | , isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС | , isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент | , isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка | , isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен | , isnull($ДокШ.Агент, $ДокШН.Агент) Агеннт | , isnull($ДокС.ЦенаСНДС, $ДокН.ЦенаСНДС) ЦенаВДок | , $КаналСбыта.КатегорияЦены as КатегорияЦены |, case $КаналСбыта.КатегорияЦены | when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1 | when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2 | when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3 | when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4 | when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5 | when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6 | when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7 | when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8 | when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9 | ELSE ' ' END ИдентификаторИсторииЦены | , КаналСбыта.id as КаналСбыта | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор | ,cast(left(Жур.date_time_iddoc, 8) as datetime) as ДатаДок | FROM _1SJourn as Жур (nolock) | left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc | left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc | left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc | left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) | left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка) | left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) AND | (Жур.CLOSED & 1) = 1 "; Если ВыбАгент.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #СписокАгентов)"; КонецЕсли; Если ВыбСклад.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Склад, $ДокШ.Склад) IN (SELECT Val FROM #СписокСкладов)"; КонецЕсли; ТекстЗапроса = ТекстЗапроса +" |) Данные |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.ЦенаВДок end, 2) < ROUND(Данные.Цена_Прих,2) |
|||
130
Wobland
30.04.13
✎
16:39
|
(129) а где ответ на вопрос Морова?
|
|||
131
bananan
30.04.13
✎
16:42
|
Теперь воде как с условием цена в документе ниже приходной - все нормально, но вот с процентами незадача... Говорят мол процент неправильно я показываю...
процент показываю так: | ELSE ((Запрос.СуммаСНДС / Запрос.Количество)/Запрос.Цена_Прих-1)*100 end as Проц А они говорят мол таки не те цифры я им в этой колонке показываю... |
|||
132
bananan
30.04.13
✎
16:43
|
(130) Еще раз тыркнул - все с ценой в документе ниже приходной нормально работает!
|
|||
133
Alexey_Morov
30.04.13
✎
16:44
|
(132)
Спасибо. Теперь могу спокойно идти отдыхать на выходные. Спокойной ночи и приятного отдыха! |
|||
134
Wobland
30.04.13
✎
16:49
|
(133) стой! а комп.. тфу, процент?
|
|||
135
bananan
30.04.13
✎
16:59
|
(134) И с процентом разобрался сам... Уже все вроде в норме, отдаю на проверку нашим спецам... :)
|
|||
136
bananan
30.04.13
✎
18:12
|
Еше один ляп я нашел (пока не понимаю в чем проблема)...
Запрос такой: ТекстЗапроса = " |SELECT | IDDoc [Документ $Документ] | ,IdDocDef Документ_вид | ,ТМЦ [ТМЦ $Справочник.ТМЦ] | ,lineno_ НомерСтроки_ | ,Автор [Автор $Справочник.Сотрудники] |, Запрос.Клиент [Клиент $Справочник.Клиенты] |, Запрос.ЦенаВДок |, Запрос.Цена_Прих |, 0 as МинЦена |, ROUND(Запрос.СуммаСНДС/Запрос.Количество, 2) as ЦенаТовара |, Запрос.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен] |, Запрос.ИдентификаторИсторииЦены |, case Запрос.Цена_Прих | WHEN 0 then 0 | ELSE ((Запрос.ЦенаВДок)*100/Запрос.Цена_Прих)-100 end as Проц | , 'Не встановлена ціна' as Ошибка |FROM ( |SELECT | Запрос.* | ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта |FROM |( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ | , isnull(ДокС.lineno_, ДокН.lineno_) lineno_ | , isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество | , isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС | , isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка | , isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен | , isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент | , isnull($ДокС.ЦенаСНДС, $ДокН.ЦенаСНДС) ЦенаВДок | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $Доставка.КаналСбытаТТ as КаналСбыта | , $КаналСбыта.КатегорияЦены as КатегорияЦены | ,cast(left(Жур.date_time_iddoc,8) as datetime) ДатаДок | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ОбщийРеквизит.Автор as Автор | , case $КаналСбыта.КатегорияЦены | when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1 | when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2 | when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3 | when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4 | when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5 | when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6 | when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7 | when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8 | when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9 | ELSE ' ' END ИдентификаторИсторииЦены | FROM _1SJourn as Жур (nolock) | Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc | Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc | Left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc | Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc | left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) | left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка) | left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) AND (Жур.CLOSED & 1) = 1 "; Если ВыбАгент.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #СписокАгентов)"; КонецЕсли; Если ВыбСклад.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Склад, $ДокШ.Склад) IN (SELECT Val FROM #СписокСкладов)"; КонецЕсли; ТекстЗапроса =ТекстЗапроса+" | ) Запрос |) Запрос WHERE ISNULL(ЦенаДляКаналаСбыта,0)=0 Так вот иногда в Поле КатегорияЦены НИЧЕГО нет... :( В принцыпе такого вроде как не должно быть! |
|||
137
bananan
30.04.13
✎
18:31
|
Когда в поле ничего не возвращается (поле незаполнено) то какое значение типа имеет поле. Нул?
Так я пробывал так: | , case $КаналСбыта.КатегорияЦены when NULL then 'ERROR' else $КаналСбыта.КатегорияЦены END as КатегорияЦены В итоге в таблице есть незаполненные поля (КатегорияЦены). а вот поля со значением ERROR нет. Почему? Какое значение тогда у поля Категория?? |
|||
138
bananan
30.04.13
✎
18:41
|
+(136) Поле КатегорияЦены это Перечисление.ТипыЦен, а там НЕМОЖУТ быть незаполненного значения!
|
|||
139
viktor_vv
30.04.13
✎
18:51
|
Ну, например, в канале сбыта просто не заполнен реквизит КатегорияЦены.
Это тебе еще надо проверять на пустое значение в реквизите КатегорияЦены в канале сбыта. Не путай не заполненное значение с NULL. |
|||
140
Alexey_Morov
21.05.13
✎
19:43
|
(139)
Как же так??? |
|||
141
ЧеловекДуши
14.06.13
✎
13:18
|
(136) Даже не буду вдумываться, до боли знакомы запросик...
Все время было странно, а почему он работает, когда не должен? :) |
|||
142
ЧеловекДуши
14.06.13
✎
13:19
|
(139) Он хочет, что бы транслятор от 1С++ понимал, когда передается текстовое поле, а когда просто невнятный набор букв :)
|
|||
143
ЧеловекДуши
14.06.13
✎
13:20
|
(138) Сынок, это фантастика (Р)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |