|
Помогите домучить прямой запрос | ☑ | ||
---|---|---|---|---|
0
bananan
20.03.13
✎
12:57
|
На данный момент текст запроса такой:
ТекстЗапроса = " |SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, Данные.Цена1 as Цена1 |, Данные.Цена2 as Цена2 |, Данные.Цена3 as Цена3 |, Данные.Цена4 as Цена4 |, Данные.Цена5 as Цена5 |, Данные.Цена6 as Цена6 |, Данные.Цена7 as Цена7 |, Данные.Цена8 as Цена8 |, Данные.Цена9 as Цена9 |, Данные.Доставка as [ДоставкаКанал $Справочник.Доставка] |, Данные.КаналСбыта as [КаналТТ $Справочник.КаналыСбыта] |, Данные.КатегорияЦены as [КатегорияЦ $Перечисление.ТипыЦен] |, 'не встановлена ціна категорії' as Ошибка |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ | , isnull(ДокС.lineno_, ДокН.lineno_) lineno_ | , isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество | , isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС | , isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка | , isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен | , $Доставка.КаналСбытаТТ as КаналСбыта | , $КаналСбыта.КатегорияЦены as КатегорияЦены | , $ПоследнееЗначение.ТМЦ.Цена1(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена1 | , $ПоследнееЗначение.ТМЦ.Цена2(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена2 | , $ПоследнееЗначение.ТМЦ.Цена3(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена3 | , $ПоследнееЗначение.ТМЦ.Цена4(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена4 | , $ПоследнееЗначение.ТМЦ.Цена5(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена5 | , $ПоследнееЗначение.ТМЦ.Цена6(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена6 | , $ПоследнееЗначение.ТМЦ.Цена7(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена7 | , $ПоследнееЗначение.ТМЦ.Цена8(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена8 | , $ПоследнееЗначение.ТМЦ.Цена9(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена9 | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка | , $ОбщийРеквизит.Автор as Автор | ,(case $КаналСбыта.КатегорияЦены | when $Перечисление.ТипыЦен.Категория1 then Coalesce(ДокШ.ТипЦен, $ДокШН.ТипЦен ) | when $Перечисление.ТипыЦен.Категория2 then Coalesce(ДокШ.ТипЦен, $ДокШН.ТипЦен ) | when $Перечисление.ТипыЦен.Категория3 then Coalesce(ДокШ.ТипЦен, $ДокШН.ТипЦен ) | when $Перечисление.ТипыЦен.Категория4 then Coalesce(ДокШ.ТипЦен, $ДокШН.ТипЦен ) | when $Перечисление.ТипыЦен.Категория5 then Coalesce(ДокШ.ТипЦен, $ДокШН.ТипЦен ) | when $Перечисление.ТипыЦен.Категория6 then Coalesce(ДокШ.ТипЦен, $ДокШН.ТипЦен ) | when $Перечисление.ТипыЦен.Категория7 then Coalesce(ДокШ.ТипЦен, $ДокШН.ТипЦен ) | when $Перечисление.ТипыЦен.Категория8 then Coalesce(ДокШ.ТипЦен, $ДокШН.ТипЦен ) | ELSE Coalesce(ДокШ.ТипЦен, $ДокШН.ТипЦен) END) КатегорияЦены | 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 ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) |) Данные |WHERE Данные.Цена5=0 OR Данные.Цена7=0 |"; но это код, выдает: Invalid column name 'ТипЦен'. ТипЦен вроде через кейс выбирается... Чего опять у меня неправильно в тексте запроса? |
|||
321
bananan
21.03.13
✎
18:21
|
(319) Счастливого пути.
|
|||
322
bananan
21.03.13
✎
18:24
|
(320) Как я и думал - выдает ошибку ТбРазом.ТекущийДокумент()
В ТаблицеЗначений ТбРазом - есть поле Документ, а вот ТекущийДокумент() для нее не ведомо... :( |
|||
323
bananan
21.03.13
✎
18:27
|
+(322) И еще ко всему прочему для этих запросов НомерСтроки в документе ... короче выдает от 1 до числа количесва возвращенных строк, а не номер строки в документе где ошибка в цене...
|
|||
324
Mikeware
21.03.13
✎
18:40
|
(323) ога. "само выдает"....
|
|||
325
bananan
22.03.13
✎
11:40
|
Доброе утро, всем! что может быть что кусор и "апревращается" в лупу, а когда кликаешь на документе в колонках слышен бип, но документ не открывается...?
|
|||
326
Ёпрст
22.03.13
✎
11:46
|
Чего написано в ячейке ?
Тип ячейки какой хоть, Выражение ? |
|||
327
bananan
22.03.13
✎
11:49
|
В ячейке написал: ТбРазом.Документ
ТбРазом.Документ это поле из Таблицы значений, текст запроса такой: |SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, 'має ціну нижчу за прихідну' as Ошибка |from ( | SELECT | Жур.IDDoc as IDDoc | , Жур.IdDocDef as IdDocDef | , isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ | , isnull(ДокС.lineno_, ДокН.lineno_) lineno_ | , isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество | , isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС | , $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих | , $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, 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 $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ) | WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ | AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) |) Данные |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) |"; |
|||
328
Wobland
22.03.13
✎
11:50
|
и как тебе по-твоему платформа представляет расшифровку (вывод) ТЗ?
|
|||
329
Ёпрст
22.03.13
✎
11:51
|
(327) покажи вывод Талицы
|
|||
330
bananan
22.03.13
✎
11:51
|
+(327) Все, этот вопрос снят (у меня была неправильная расшифровка)...
|
|||
331
Ёпрст
22.03.13
✎
11:51
|
Таблицы
|
|||
332
Wobland
22.03.13
✎
11:52
|
(330) запомнил слово?
|
|||
333
bananan
22.03.13
✎
11:54
|
(332) Абизательна!
А вот здесь уж не пойму... В таблицу вывожу ТбРазом.НомерСтроки (расшифровка такая же) Когда смотрю таблицу значений там в поле НомерСтроки стоят правильные номера, а в экранную таблицу выводятся 1 2 3 .. и т.д. Здесь что может быть? |
|||
334
Wobland
22.03.13
✎
11:55
|
неправильное/неожиданное формирование экранной таблицы это может быть
|
|||
335
Ёпрст
22.03.13
✎
11:57
|
нам отсюда не виден код вывода ТЗ в макет
|
|||
336
Wobland
22.03.13
✎
11:57
|
+(335) так что на этом этапе ответ один
|
|||
337
bananan
22.03.13
✎
11:58
|
(334, 335) И этот вопрос снят... Опять сработала моя невнимательность, в запросе поле называется НомерСтроки_ а в ячейке я написал НомерСтроки, после исправления - все работает нормально...
|
|||
338
Wobland
22.03.13
✎
11:59
|
знаешь, почему я относительно редко ветки на мисте создаю? потому что предварительно ищу ответ сам
|
|||
339
bananan
22.03.13
✎
12:01
|
+Ну и все же буду БЛАГОДАРЕН если мне кто-то поможет с третьим запросом (он то работает), но показывает там он совсем не то что должен показывать...
Текст третьего запроса сейчас такой: |SELECT | IDDoc [Документ $Документ] | ,IdDocDef Документ_вид | ,ТМЦ [ТМЦ $Справочник.ТМЦ] | ,lineno_ НомерСтроки_ | ,Автор [Автор $Справочник.Сотрудники] | ,'має дуже малу ціну' 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($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен | , $Доставка.КаналСбытаТТ 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 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 ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) | ) Запрос |) Запрос WHERE ROUND(case when Запрос.Количество = 0 then 0 else Запрос.СуммаСНДС / Запрос.Количество end, 2)<Запрос.МинЦена |"; Запрос же должен выбирать документы у которых... вот код из оригинала: минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); минцена=Окр(минцена*(1-Конт.Доставка.КаналСбытаТТ.ДопустимаяСкидка/100),2); Если докцена<минцена Тогда ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); Сообщить(""+Конт.номерСтроки+"."+Конт.ТМЦ+" имеет недопустимо низкую цену="+докцена+" минимальная="+минцена); КонецЕсли; |
|||
340
Mikeware
22.03.13
✎
12:01
|
+(338) а порой при формулировании вопроса ответ получается почти автоматически. ибо "правильно сформулированный вопрос содержит половину правильного ответа"© :-)
|
|||
341
Wobland
22.03.13
✎
12:02
|
(340) неоднократно обрывал написание 0го поста по этой причине ;)
|
|||
342
Wobland
22.03.13
✎
12:04
|
а слово ЮНИОН уже говорили, не? что-то у него 3 ТЗ появилось..
|
|||
343
bananan
22.03.13
✎
12:07
|
(349) Знаю, я с этим не раз сталкивался... У меня часто бывало, напишу вопрос и сразу же ответ как бы сам по себе приходит в голову..
Мой вопрос некорректно сформирован? Лан Полный код "оригинального" скрипта: прихцена=Окр(Конт.ТМЦ.Цена_Прих.Получить(Конт.ДатаДок)*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)),2); докцена=Окр(?(Конт.Кво*Конт.Коэффициент=0,0,Конт.СуммаСНДС/(Конт.Кво*Конт.Коэффициент)),2); Если докцена<прихцена Тогда ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); Сообщить(""+Конт.номерСтроки+"."+Конт.ТМЦ+" имеет цену ниже приходной"); КонецЕсли; кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены; Если кат.Выбран()=1 Тогда минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда минцена=минцена.Получить(Конт.ДатаДок); КонецЕсли; минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок)); Если минцена=0 Тогда ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); Сообщить(""+Конт.номерСтроки+"."+Конт.ТМЦ+" не установлена цена категории "+кат); КонецЕсли; минцена=Окр(минцена*(1-Конт.Доставка.КаналСбытаТТ.ДопустимаяСкидка/100),2); Если докцена<минцена Тогда ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано); Сообщить(""+Конт.номерСтроки+"."+Конт.ТМЦ+" имеет недопустимо низкую цену="+докцена+" минимальная="+минцена); КонецЕсли; Надо написать (дописать) запрос на условие докцена<минцена |
|||
344
Mikeware
22.03.13
✎
12:09
|
(343) все достаточно подробно разобрано в прошлой ветке.
|
|||
345
bananan
22.03.13
✎
12:13
|
(344) Что-то не помню, но сейчас посмотрю прощлую ветку...
Насколько я понимаю сейчас в запросе у меня есть Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); да и минцена.Получить(Конт.ДатаДок); тоже вроде есть... Значит теперь надо выбрать Окр(минцена*(1-Конт.Доставка.КаналСбытаТТ.ДопустимаяСкидка/100),2); ? Так или нет? |
|||
346
bananan
22.03.13
✎
12:34
|
Mikeware, я правильно думаю?
|
|||
347
bananan
22.03.13
✎
12:51
|
Есть кто живой здесь?
|
|||
348
DrZombi
гуру
22.03.13
✎
12:51
|
(347) Ты еще на работе? Тебе до скольки дали времени?
|
|||
349
bananan
22.03.13
✎
12:52
|
(348) Как видишь, я еще на работе, до сдачи в работу еще час или полтора
|
|||
350
Wobland
22.03.13
✎
12:53
|
аа, сегодня же День Ч. болеем, переживаем
|
|||
351
bananan
22.03.13
✎
13:02
|
(350) Спасибо за поддержку, а может кроме как болеть чем нибудь более практичным поможете?
|
|||
352
Wobland
22.03.13
✎
13:04
|
лично я давно не стремлюсь понять всю затею целиком
|
|||
353
Privalov
22.03.13
✎
13:07
|
Мля, это еще продолжается... Санта-Бар..Бананан какой-то ))))
|
|||
354
Mikeware
22.03.13
✎
13:07
|
(352) да в принципе, там ничего особо сложного. немного по-идиотски построены данные. разобрали в прошлой или позапрошлой ветке...
|
|||
355
Mikeware
22.03.13
✎
13:09
|
(353)"эта музыка будет вечной, если я заменю батарейки..."©
|
|||
356
Privalov
22.03.13
✎
13:09
|
(355) :-))
|
|||
357
Wobland
22.03.13
✎
13:22
|
(355) скоро работодатель батарейку себе сменит ;)
|
|||
358
sapphire
22.03.13
✎
13:26
|
(342) Я вчера со страхом упоминал.
|
|||
359
sapphire
22.03.13
✎
13:26
|
(355) Даже интересно уже.
|
|||
360
Ёпрст
22.03.13
✎
13:43
|
ээх.. еще пару часов и бананан превратится в тыкву.
ЗЫ: Аутор - покажи работодателю все свои ветки на этом форуме - пустиь смотрит, как ты старался, мот того.. премию дадут! |
|||
361
Mikeware
22.03.13
✎
13:47
|
(360) "еще пару часов и бананан превратится ОБРАТНО в тыкву." :-)
|
|||
362
sapphire
22.03.13
✎
13:50
|
Автор, наверное уже на случке с руководством. Заслуживает. :)
|
|||
363
Wobland
22.03.13
✎
13:52
|
вазелином в деканате я рисую слово "хватит"
|
|||
364
bananan
22.03.13
✎
14:01
|
(363) Взелином обычно в другом месте рисуют, но раз у Вас такой деканат - рисуйте там.
Перечитал я прошлую и позапрошлую ветки, не нашел я там о минцена=Окр(минцена*(1-Конт.Доставка.КаналСбытаТТ.ДопустимаяСкидка/100),2); |
|||
365
sapphire
22.03.13
✎
14:12
|
(364) Ну не нашел и не нашел. Чё дальше-то?
Не знаешь как получить скидку для канала сбыта? |
|||
366
bananan
22.03.13
✎
14:33
|
(365) Уже знаю :
| , $КаналСбыта.ДопустимаяСкидка as Скидка |
|||
367
bananan
22.03.13
✎
14:34
|
+(366) Сейчас это надо засунуть куда надо и вроде как все..
|
|||
368
Wobland
22.03.13
✎
14:35
|
поручик, молчать!
|
|||
369
bananan
22.03.13
✎
14:43
|
(368) полный текст 3-го запроса:
SELECT | IDDoc [Документ $Документ] | ,IdDocDef Документ_вид | ,ТМЦ [ТМЦ $Справочник.ТМЦ] | ,lineno_ НомерСтроки_ | ,Автор [Автор $Справочник.Сотрудники] | ,'має дуже малу ціну' 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($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен | , $Доставка.КаналСбытаТТ 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 ИдентификаторИсторииЦены | 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 ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) | ) Запрос |) Запрос WHERE ROUND(case when Запрос.Количество = 0 then 0 else Запрос.СуммаСНДС / Запрос.Количество end, 2)<ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2) |"; Тут еще немного надо поправить "поле" ошибка и все! |
|||
370
sapphire
22.03.13
✎
14:46
|
(368) Ты не находишь несколько странным развитие событий?
|
|||
371
Wobland
22.03.13
✎
14:48
|
(370) не.. а что не так?
|
|||
372
sapphire
22.03.13
✎
14:48
|
(371) Дюже быстро он сообразил.
|
|||
373
Wobland
22.03.13
✎
14:50
|
из (364) в (367)? хм.. мож, его уже заменили?
|
|||
374
bananan
22.03.13
✎
14:50
|
(372) Упс... Поправил поле Ошибка:
| ,'має дуже малу ціну='+Запрос.СуммаСНДС / Запрос.Количество+' мінімальна='+ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2) as Ошибка Ругается: Error converting data type varchar to numeric. Чего он хочет? |
|||
375
Wobland
22.03.13
✎
14:50
|
(373) поправка: в (366)
|
|||
376
bananan
22.03.13
✎
14:50
|
(373) Ищо не заменили :)
|
|||
377
Wobland
22.03.13
✎
14:50
|
(374) он не хочет с разными типами в одном поле работать
|
|||
378
Wobland
22.03.13
✎
14:52
|
пинг
|
|||
379
Wobland
22.03.13
✎
14:52
|
по сути ты хочешь иметь в этом поле то, что нормальные люди делают после запроса
|
|||
380
sapphire
22.03.13
✎
14:53
|
(374) Error converting data type varchar to numeric.
Error Ошибка converting преобразования data type тип данных varchar строка переменной длины to к numeric число |
|||
381
bananan
22.03.13
✎
14:53
|
(377) и как его заставить работать с разными типаи? Приведение типов? Если привидление типов - то как это в SQL делается - я не знаю :(
|
|||
382
Wobland
22.03.13
✎
14:53
|
(381) никак. не нужно его насильничать
|
|||
383
bananan
22.03.13
✎
14:54
|
(380) А как это "обойти"?
|
|||
384
sapphire
22.03.13
✎
14:54
|
,'має дуже малу ціну='+cast(Запрос.СуммаСНДС / Запрос.Количество+' мінімальна='+ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2) as varchar(255)) Ошибка
|
|||
385
bananan
22.03.13
✎
14:54
|
(382) Да мне и не хочется его насильничать, но так поставлена задача...
|
|||
386
sapphire
22.03.13
✎
14:55
|
+(384) Выражение в cast взять в скобки
,'має дуже малу ціну='+cast((Запрос.СуммаСНДС / Запрос.Количество+' мінімальна='+ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2)) as varchar(255)) Ошибка |
|||
387
bananan
22.03.13
✎
14:56
|
(384) Написал как ты показал, но...
Error converting data type varchar to numeric. |
|||
388
Wobland
22.03.13
✎
14:56
|
(385) врёшь
|
|||
389
Wobland
22.03.13
✎
14:57
|
+(388) так интерпретирована задача
|
|||
390
bananan
22.03.13
✎
14:58
|
(386) написал так:
| ,'має дуже малу ціну='+cast((Запрос.СуммаСНДС / Запрос.Количество+' мінімальна='+ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2)) as varchar(255)) Ошибка а воз и ныне там: Error converting data type varchar to numeric. |
|||
391
sapphire
22.03.13
✎
14:59
|
тю, там он еще строку вставил.. от же пидлюка..
|
|||
392
bananan
22.03.13
✎
14:59
|
(389) Задачу я не интерпретировал в "ориганальном" коде:
Сообщить(""+Конт.номерСтроки+"."+Конт.ТМЦ+" имеет недопустимо низкую цену="+докцена+" минимальная="+минцена); |
|||
393
Wobland
22.03.13
✎
14:59
|
(391) при копипасте соринка попала ;)
|
|||
394
bananan
22.03.13
✎
14:59
|
(391) И чего делать??
|
|||
395
Wobland
22.03.13
✎
15:00
|
(392) дай оригинальную постановку задачи и не спорь с бородатыми
|
|||
396
trad
22.03.13
✎
15:00
|
(388) не, не врет
| ,'має дуже малу ціну='+cast(Запрос.СуммаСНДС / Запрос.Количество as varchar(255))+' мінімальна='+cast(ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2) as varchar(255)) as Ошибка |
|||
397
sapphire
22.03.13
✎
15:00
|
,'має дуже малу ціну='
+cast((Запрос.СуммаСНДС / Запрос.Количество) as varchar(255)) +' мінімальна=' +cast(ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2)) as varchar(255)) |
|||
398
sapphire
22.03.13
✎
15:00
|
(394) Долбобействовать дальше
|
|||
399
Ёпрст
22.03.13
✎
15:01
|
(397) не красиво, надо бы еще alltrim хотя бы
|
|||
400
sapphire
22.03.13
✎
15:01
|
скобок лишних убрал
,'має дуже малу ціну=' +cast((Запрос.СуммаСНДС / Запрос.Количество) as varchar(255)) +' мінімальна=' +cast(ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2) as varchar(255)) |
|||
401
sapphire
22.03.13
✎
15:02
|
(399) Зачем? там varchar
|
|||
402
bananan
22.03.13
✎
15:02
|
(397) Так:
| ,'має дуже малу ціну='+cast((Запрос.СуммаСНДС / Запрос.Количество) as varchar(255))+' мінімальна=' | +cast(ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2)) as varchar(255)) as Ошибка выдает: Incorrect syntax near 'cast', expected 'AS' |
|||
403
bananan
22.03.13
✎
15:05
|
+(402) Написал как ты и посоветовал... работает, но...
Как мне ему указать чтобы в цене он показывал только 2 цифры после запятой (в дробной части)? |
|||
404
Ёпрст
22.03.13
✎
15:06
|
(401)точна
|
|||
405
Ёпрст
22.03.13
✎
15:07
|
(42) тот же раунд воткнуть
|
|||
406
sapphire
22.03.13
✎
15:07
|
(403) Как округлить цену со скидкой так ты догадался...
Странно, вы как хотите, мне странно (с) |
|||
407
bananan
22.03.13
✎
15:09
|
(405) но там ведь уже есть раунд...
|
|||
408
bananan
22.03.13
✎
15:09
|
(406) он мне выдает:
має дуже малу ціну=23.8500000000000000000000 мінімальна=24.67000000 |
|||
409
trad
22.03.13
✎
15:10
|
(405) round не поможет, будет типа 12.340000
можно, например, типизировать через numeric(15,2) |
|||
410
trad
22.03.13
✎
15:11
|
+(409)
| ,'має дуже малу ціну='+cast(cast(Запрос.СуммаСНДС / Запрос.Количество as numeric(15,2)) as varchar(15))+' мінімальна='+cast(cast(ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2) as numeric(15,2)) as varchar(15)) as Ошибка |
|||
411
bananan
22.03.13
✎
15:11
|
(409) Ранд таки не помог а как типизировать? :(
|
|||
412
bananan
22.03.13
✎
15:12
|
(410) СПасибо
|
|||
413
bananan
22.03.13
✎
15:13
|
Всем ОГРОМНОЕ спасибо, все работает вроде как и надо :)
|
|||
414
sapphire
22.03.13
✎
15:14
|
,'має дуже малу ціну='+cast(cast((Запрос.СуммаСНДС / Запрос.Количество) as numeric(10,2)) as varchar(255))+' мінімальна='
| +cast(cast(ROUND(Запрос.МинЦена*(1-Запрос.Скидка/100),2)) as numeric(10,2)) as varchar(255)) as Ошибка |
|||
415
sapphire
22.03.13
✎
15:14
|
(410) :)
|
|||
416
bananan
22.03.13
✎
15:16
|
(414) А зачем раунд во второй части?
Написали без раунда - показывает как и хотелось.. |
|||
417
sapphire
22.03.13
✎
15:17
|
(416) round округляет, а cast тупо отбрасывает кусок мантиссы.
|
|||
418
bananan
22.03.13
✎
15:19
|
(417) Ясно, но все же раунд там не нужен, у цены и так два знака в дробной части...
|
|||
419
trad
22.03.13
✎
15:20
|
(416) можно и без round т.к. cast в данном случае округляет
|
|||
420
Ёпрст
11.04.13
✎
14:30
|
продолжаем..
>>>(990) А что такое t1? Это абстрактный пример для таблички с 2-мя полями - клиентосом и товаром и списком с товаром. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |