Имя: Пароль:
1C
Юмор
Непонятная работа запроса
,
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) Сынок, это фантастика (Р)