Имя: Пароль:
1C
Юмор
Помогите домучить прямой запрос
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 'ТипЦен'.
ТипЦен вроде через кейс выбирается...
Чего опять у меня неправильно в тексте запроса?
1 Ёпрст
 
20.03.13
12:57
ё..
2 ДенисЧ
 
20.03.13
12:58
опять цирк продолжается?
3 viktor_vv
 
20.03.13
12:59
Понеслась очередная серия :).
4 Ёпрст
 
20.03.13
13:00
Coalesce(ДокШ.ТипЦен, $ДокШН.ТипЦен )

СЮДА СМОТРИ
много думай
5 viktor_vv
 
20.03.13
13:02
Ты хотя бы вкратце напомни содержание предыдущих серий, а то цель запроса уже подзабылась.
И вроде ж в прошлых сказали, что смысла в этом Case нету
(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)   КатегорияЦены

Ты ж там в каждом условии одинаковые ставишь Coalesce(ДокШ.ТипЦен, $ДокШН.ТипЦен )
6 bananan
 
20.03.13
13:06
(4) Долго думал... ничего не придумал...
ТипЦен это реквезит шапки документа ДокШ и ДокШн это как раз шапки документов..
(5) А какие их там поставить?
7 Ёпрст
 
20.03.13
13:09
(6) смотри еще раз до полного просветления..

подсказка - пропущен ОДИН символ
8 Ёпрст
 
20.03.13
13:10
если че, в 9-ой позиции
9 bananan
 
20.03.13
13:15
(8) Долар был пропущен... Добавил... А воз и ныне там:
SQL Server]Invalid column name 'ТипЦен'.
10 Ёпрст
 
20.03.13
13:17
(9) и прям во всех строчках исправил ?
:)
11 sapphire
 
20.03.13
13:17
Долбебей таки не дочитал предыдущую ветку....
Пичалька
12 Ёпрст
 
20.03.13
13:18
и есть уверенность, что ТипЦен - это реквизит шапки у обоих документах ?
:)
13 Ёпрст
 
20.03.13
13:19
да и .. case там вообще нафик не впёрся, если че..
14 bananan
 
20.03.13
13:19
(12) Уверенность - 100%
(10) Сейчас еще раз перепроверю...
15 sapphire
 
20.03.13
13:19
(0) На те из предыдущей ветки.
Очепятки сам исправишь.

Долбобеюшка не поймёт зело сложно, но, как-то такъ:
+ Code
   |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 '    ' ИдентификаторИсторииЦены
   |   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 ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
   |   ) Запрос
16 bananan
 
20.03.13
13:21
+(14) Таки в одной строке не поставил. КОгда поставил в последней строке. Выжает уже такую ошибку:
The column 'КатегорияЦены' was specified multiple times for 'Данные'.
Чего теперь?
17 sapphire
 
20.03.13
13:27
(16)
The column = колонка
was specified multiple times = указано несколько раз
18 bananan
 
20.03.13
13:27
(15) Насколько я понял мне надо это:
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 '    ' ИдентификаторИсторииЦены
19 Ёпрст
 
20.03.13
13:27
(16) а нехер два поля в селекте обзывать одним псевдонимом КатегорияЦены в подзапросе
20 bananan
 
20.03.13
13:28
(17) конечно английский язык не мой родной язык, но смысл я понял, и что-то не вижу нескольких объявлений..
21 Ёпрст
 
20.03.13
13:29
(20) черничку кушай..

  ,    $КаналСбыта.КатегорияЦены as КатегорияЦены
.........
..........
   |  ELSE Coalesce(ДокШ.ТипЦен, $ДокШН.ТипЦен)  END)   КатегорияЦены
22 bananan
 
20.03.13
13:31
(19) Увидел и исправил... Заработал запрос... Вот только теперь уж и не помню что этот запрос выбирает ... Сча буду вспоминать :)
23 bananan
 
20.03.13
13:31
(21) Со зрением у меня все в норме, а черника у нас в лесах ее  море...
24 Ёпрст
 
20.03.13
13:32
дык ещь.. ешь её скорее
25 sapphire
 
20.03.13
13:35
(18) А зачем это надо ты понел?
26 Ёпрст
 
20.03.13
13:44
(25) главное, шоб хоть что-то работает, там не д понимания..
:)
27 sapphire
 
20.03.13
13:47
(26) Дык ён же не смогет из того работающего гумна вывести то, что надоть...
28 Ёпрст
 
20.03.13
13:49
(27) дык.. весна то большая, до лета успеет сделать
29 batman69
 
20.03.13
13:52
Новая серия!!!!!!
30 viktor_vv
 
20.03.13
13:58
(29) Соскучился :) ?
31 Wobland
 
20.03.13
14:01
Дама и господа! После непродолжительного перерыва звезда форума снова с нами. Поприветствуем нашего бананана и пожелаем ему творческих и профессиональных удач! Не переключайте ветку, участвуйте в диалоге
32 bananan
 
20.03.13
14:05
(29) Чтобы мы без тебя делали, дорогой
?
33 sapphire
 
20.03.13
14:09
(32) Ладно, чё там с запросом. Ну вот заработал запрос... Дальше-то что?
34 ЧеловекДуши
 
20.03.13
14:17
Жесть, автора еще не уволили :)
35 sapphire
 
20.03.13
14:17
(34) Нет, мож он там один такой на весь город...
36 ЧеловекДуши
 
20.03.13
14:20
(31) Мне это напоминает дом 2, как бы что-то кажут, но уже одно и тоже и ни о чем :)
37 ЧеловекДуши
 
20.03.13
14:20
(35) С какого конца? :)
38 bananan
 
20.03.13
14:21
(33) Пока не разбирался чего там еще надо, но то что это запрос не окончательный 100%, будет натхнення на работу посмотрю чего там еще надо в него добавить..
39 sapphire
 
20.03.13
14:22
Кто нить понел что у него там на работу будет?
40 batman69
 
20.03.13
14:47
(39) натхнення ))))
41 Wobland
 
20.03.13
14:47
(40) nathing?
42 bananan
 
20.03.13
16:16
по поводу моего запроса:
в "ориганальном" коде, написаным не мной,:
кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены;
Если кат.Выбран()=1 Тогда
   минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1)));
   минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок));
   Если минцена=0 Тогда
       ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано);
       Сообщить(""+Конт.номерСтроки+"."+Конт.ТМЦ+" не установлена цена категории "+кат);
   КонецЕсли;
Ну именно для данного случая и пишется запрос...
т.е. сейчас надо озапросить такой код:
инцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1)));
потом
минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок));
и если минцена=0 тогда и это есть те данные который необходимы..
Вроде как в текущем запросе почти все нужное выбрано...
Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))); - это будет насколько я понимаю Данные.Цена1..Данные.Цена9...
43 sapphire
 
20.03.13
16:24
(42) Долбобей. Ну получишь ты кучку цен, а какую именно выбрать надо для данного канала сбыта?
44 bananan
 
20.03.13
16:25
+(42)Но минцена юдет равна нулю только если 1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок) или
Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1))) равно нулю....
Данные.Цена1..Данные.Цена9...может быть равной нулю это можно в секции where указать но, вроде мне не надо одновременно все Цена1, ...Цена9... для указанной строки в документе надо знать равна ли нулю какая-то конкретно Цена1...Цена9..
Это выбирается КатегорияЦ в данном запросе и, значит надо выбрать Цена№ где № береться из КатегорияЦ (последний знак этого поля)... вроде так?
45 bananan
 
20.03.13
16:26
(43) см (44)
46 sapphire
 
20.03.13
16:28
(44) Тебе потому и написали запрос готовый с ценой для канала сбыта, нет опять вылез со своей телегой...
47 bananan
 
20.03.13
16:30
(46) Где мне написали такой запрос?
48 bananan
 
20.03.13
16:31
+(47) в (15)?
49 sapphire
 
20.03.13
16:32
(48) ты тот запрос всё одно не осилишь.
50 bananan
 
20.03.13
16:33
(4( Тот это какой? И почему ты уверен что я его не осилю?
51 bananan
 
20.03.13
16:35
(49) Тот запрос /ну и я его не осилю/ это (15)??
52 sapphire
 
20.03.13
16:36
(50) Потому что ты не понимаешь и не хочешь понимать как:
1) 1С хранит данные
2) Как их, эти данные получать средствами SQL...
53 bananan
 
20.03.13
16:38
(52) Не понимаю - согласен ан все 200%, не хочу понимать - не согласен на все 300%!
54 sapphire
 
20.03.13
16:52
(53) Ну и что ты пытался понять из (15)?
55 bananan
 
20.03.13
16:52
(54) Рлка не пытался. Сейчас буду смотерть...
56 bananan
 
20.03.13
16:59
(54) Взял твой код из (15) выдает:
Incorrect syntax near the keyword 'SELECT'
А теперь буду разбираться... :)
57 bananan
 
20.03.13
17:02
+(56) что ему не понравилось в Селекте - не понял, а в запросе ,cast(SELECT TOP 1 .История Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта это правильно ??
58 sapphire
 
20.03.13
17:11
(56) Разве в (15) про опечатки никакого упоминания нет?
59 bananan
 
20.03.13
17:16
(58) Есть... Но так сходу я их вроде не вижу...
Евгений на тебя по аське можно выйти?
60 Ёпрст
 
20.03.13
17:16
причем очепятки видны невооруженным взглядом
61 sapphire
 
20.03.13
17:17
(60) Старался же :)
62 bananan
 
20.03.13
17:17
(60) ну они может и видны неворуженным взглядом, но я их не вижу... :(
63 sapphire
 
20.03.13
17:19
(62) А ты по-внимательней посмотри.
64 bananan
 
20.03.13
17:20
Насколько я понял ошибка в даной строке:
| ,cast(SELECT TOP 1 .История Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта
Да?
65 bananan
 
20.03.13
17:24
+(64) конкретно в даной строке мне не нравится:
SELECT TOP 1 .История
66 bananan
 
20.03.13
17:25
+(65) Евгений и чего ты здесь "настарался"? Подскажи...
67 bananan
 
20.03.13
17:30
sapphire, Ты где пропал? Просвети меня чего ты там намудрил... Пожалуйста.
68 Ёпрст
 
20.03.13
17:31
подсказываю

.История Value
69 vinogradъ
 
20.03.13
17:33
изверги
70 bananan
 
20.03.13
17:35
(69) Да, они садисты!
(68) Классная подсказка... И чего в даной строке неправильно?
71 Ёпрст
 
20.03.13
17:37
(70) ты в шарады в детстве играл ?
72 vinogradъ
 
20.03.13
17:37
(70) а если бы в (0) в первой строке было .Данные IDDoc?
73 bananan
 
20.03.13
17:38
sapphire,  Ёпрст, будьте же людьми и НОРМАЛЬНО обьясните, ПОЭАЛУЙСТА!
74 Ёпрст
 
20.03.13
17:38
как тебе сказать.. один символ не на своём месте.
Если че - в этой строке он такой один, не повторяется - ищи.
75 bananan
 
20.03.13
17:39
(72) Не понял...
Но, на всякий случай прбывал так:
| ,cast(SELECT TOP 1 Запрос.История Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта
Все равно ему не нраувится Селект... :(
76 bananan
 
20.03.13
17:40
(74) Добрый ты...
77 Ёпрст
 
20.03.13
17:41
(76) подсказка №2
это первый символ в строке
78 bananan
 
20.03.13
17:41
(74) Символ "1"? И на каком же месте он должен стоять?
79 Ёпрст
 
20.03.13
17:41
если че - строка, это то, что в (68)
80 bananan
 
20.03.13
17:41
(77) ЗАПЯТАЯ?
81 Ёпрст
 
20.03.13
17:42
читай (68) пост, смотри на первый символ ..много думай :)
82 Ёпрст
 
20.03.13
17:42
.История Value
83 Ёпрст
 
20.03.13
17:43
смотри на первый символ - используй силу!
84 Ёпрст
 
20.03.13
17:43
передвинь его в нужное место!
85 bananan
 
20.03.13
17:43
(82) Ну точка! И где же она должна стоять в даной строке??
86 Ёпрст
 
20.03.13
17:43
используй стрелочки на клавиатуре плюс делете и бекспейс..
87 Ёпрст
 
20.03.13
17:44
(85) аллилуя!
Он нашел его!
88 Ёпрст
 
20.03.13
17:44
:)
89 bananan
 
20.03.13
17:44
+(85) Прбывал так:
История. Value
Пробывал так :
История.Value
Все равно ошибка!!!
90 Ёпрст
 
20.03.13
17:44
теперь передвинь его вправо
91 bananan
 
20.03.13
17:45
(88) Блин неужели это тебе приятно так издеваться?
92 Ёпрст
 
20.03.13
17:47
(91) дык , це же обучение, разве нет ?

Если допетришь сам - запомнишь, если напишут готовый ответ - не запомнишь никогда.
93 bananan
 
20.03.13
17:48
Блин, люди добрые!!!
Как правильно написать:
| ,cast(SELECT TOP 1 История Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта
Где там должна стоять эта чертова точка?!!!
94 Ёпрст
 
20.03.13
17:48
>>Пробывал так :

>>>История.Value

>>>Все равно ошибка!!!

какая ошибка то хоть ?
95 bananan
 
20.03.13
17:49
(92) СПАСИБО за обучение!!!
Где ту точку ставить???
96 bananan
 
20.03.13
17:50
(94) Все таже:
]Incorrect syntax near the keyword 'SELECT'.
97 vinogradъ
 
20.03.13
17:51
скобка
98 Ёпрст
 
20.03.13
17:51
(95)
ё..
ну це же должно быть очевидно, не ?

ты берешь поле value из таблички _1SCONST , табличку _1SCONST
ты обзываешь псевдонимом История, следовательно поле берешь у псевдонима История, т.е
История.value
ко всем остальным полям аналогично - в условии, в сортировке и т.д..
99 Ёпрст
 
20.03.13
17:51
(97) не допетрит :)
100 bananan
 
20.03.13
17:54
(99) код:
| ,cast(SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта
выдает:
Incorrect syntax near the keyword 'SELECT'.
Чего я должен допетрить???
101 Ёпрст
 
20.03.13
17:54
ладно, пробел еще перед скобкой с нолок воткни.
102 vinogradъ
 
20.03.13
17:55
и посчитай количество открывающих и закрывающих скобок
103 Ёпрст
 
20.03.13
17:57
ну да, или добавь одну (
или удали одну ) в нужном месте.
104 Ёпрст
 
20.03.13
18:00
| ,cast((SELECT TOP 1 История.Value FROM _1SCONST История (NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта

на вот, развлекайся
105 sapphire
 
20.03.13
18:04
(100){На правах подсказки}
Хотя бы скобки посчитай :)
106 bananan
 
20.03.13
18:08
Скобки сейчас подсчитаю, ачто за строка "пробел еще перед скобкой с нолок" Ёпрст??
107 bananan
 
20.03.13
18:10
+(106) Левых скобок три, правых - четыре какая из них лишняя и где именно?
108 Mikeware
 
20.03.13
18:11
:-)))
109 bananan
 
20.03.13
18:11
(104) Взыл твой код "для развлечения" выдает:
Incorrect syntax near 'ИдентификаторИсторииЦены'.
110 sapphire
 
20.03.13
18:12
(109) Долбобей.

,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта
111 bananan
 
20.03.13
18:14
(110) Может не я долбобей?
Взял твое (110) выдает:
Incorrect syntax near 'ИдентификаторИсторииЦены'.
112 sapphire
 
20.03.13
18:14
+(110) Можешь и дальше заниматься долбобеизмом...

   |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 ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
   |   ) Запрос
113 sapphire
 
20.03.13
18:15
(111) Там END в операторе CASE опущен.
Ищи еще.
114 sapphire
 
20.03.13
18:16
(111) Да с тобой не сравниться никому, Долбобеюшка...
115 bananan
 
20.03.13
18:18
(112) Взял - теперь работает...
И теперь там надо добавить условие ЦенаДляКаналаСбыта=0 и тогда он мне будет выбирать то что надо?
116 sapphire
 
20.03.13
18:20
(115) А теперь, думай, дарагой...
Я тебе ЦенаДляКаналаСбыта дал? Дал.
Сам думать умеешь или думалка не в том месте?
117 Mikeware
 
20.03.13
18:20
(115) за всей твоей клоунадой цель уже давно никто не помнит... :-)
118 sapphire
 
20.03.13
18:21
(117) Ну не надо так. Я покамест еще помню. Кеш сохранился :)
119 Mikeware
 
20.03.13
18:22
120 bananan
 
20.03.13
18:24
(116) Вы уже со своими шарадами совсем мне голову забили. А ЗАЧЕМ мне ЦенаДляКаналаСбыта??
121 bananan
 
20.03.13
18:39
(116) Все же яф пробывал так:
|   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
   |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) AND  ЦенаДляКаналаСбыта=0
выдает:
Invalid column name 'ЦенаДляКаналаСбыта'.
122 sapphire
 
20.03.13
19:20
(120) Долбобеюшка, а какую цену ты с рулем сравниваешь?
123 bananan
 
20.03.13
19:21
(122) А какую цену сравнивать и зачем мне 'ЦенаДляКаналаСбыта'?
124 Mikeware
 
20.03.13
19:21
(122) ухожоп, куле...
125 sapphire
 
20.03.13
19:21
(121) потому что ты не думая лепишь условие не туда, где оно должно быть.
126 bananan
 
20.03.13
19:25
(125) А КУДА его лепить?
127 sapphire
 
20.03.13
19:33
(126) Вестимо туда, где оно есть.
128 sapphire
 
20.03.13
19:35
(124) осьминог...
129 bananan
 
20.03.13
19:35
(127) А его кроме как в
|   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
   |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
больше нигде вроде и нет!
130 sapphire
 
20.03.13
19:36
(129) Кого его?!
131 bananan
 
20.03.13
19:40
(130) Условия
132 sapphire
 
20.03.13
19:48
(131) А ты считаешь, что условие может быть только там?
133 bananan
 
20.03.13
19:49
(132) Я так не считаю, просто ты написал (127)
134 sapphire
 
20.03.13
19:53
(133) Да уж. Я имел ввиду поле...
135 bananan
 
20.03.13
19:53
(132) В куда ты предлагаешь поставить это условие?
136 bananan
 
20.03.13
19:54
(134) Трудно понять что ты ИМЕЕЩЬ ввиду:
(121) потому что ты не думая лепишь условие не туда, где оно должно быть.
137 sapphire
 
20.03.13
20:00
(136) Мало того, условие на тождественное равенство нулю неприменимо
138 bananan
 
21.03.13
11:43
Вчера в конце рабочего дня шеф заявил что данный запрос нужен в уже в пятницу. Ребята, помогите!
139 ЧеловекДуши
 
21.03.13
11:46
(138) Ура... тебя в пятницу уволят? :)
140 ЧеловекДуши
 
21.03.13
11:47
(136) >>> потому что ты не думая лепишь условие не туда, где оно должно быть.

Жесть, ты теперь уже человеку сетуешь, что он в твоём запросе не думает :DDDDD
141 Mikeware
 
21.03.13
11:47
(139)+1 !
142 bananan
 
21.03.13
11:51
(139) Рад за тебя, и чего я человеку сетую??
(141)-100
143 bananan
 
21.03.13
12:08
Никто не поможет?
144 ЧеловекДуши
 
21.03.13
12:11
(143) Чудак человек, ты кусаешь пирог не по своему рту (уму), начни с крошек "Select 'Привет SQL я bananan!'" :)
145 bananan
 
21.03.13
12:12
(144) Я "кусаю" то, что мне сказали сделать..
А крошки никому ненужны!
146 Ёпрст
 
21.03.13
12:22
а чего еще то надо ?
а то ход мысли потерян
147 ЧеловекДуши
 
21.03.13
12:24
(145) Конечно ненужны, но ты крутишься на одном месте. А быстрее было написать 10-ть запросов и свести все в ТЗ, как надо :)
148 sapphire
 
21.03.13
12:24
|SELECT
|    IDDoc [Документ $Документ]
|   ,Автор -- тип тоже не знаю.
|   ,ДатаДок
|   ,Доставка [Доставка $Справочник.Доставка]
|   ,ТипЦен [ТипЦен $Справочник.ТипыЦен] -- не знаю тип. Не помню
|   ,КаналСбыта [КаналСбыта $Справочник.КаналыСбыта]
|   ,КатегорияЦены
|   ,lineno_ НомерСтрокиВДокументе
|   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
|   ,Количество
|   ,Цена_Прих
|   ,СуммаСНДС                        
|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 ISNULL(ЦенаДляКаналаСбыта,0)=0
149 bananan
 
21.03.13
12:29
(146) На данный момент есть два варианта запроса, но оба незакончены, а ход мысли я и сам потерял...
Изначально надо озапросить такой код:
   кат=Конт.Доставка.КаналСбытаТТ.КатегорияЦены;
   Если кат.Выбран()=1 Тогда
       минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1)));
       Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда
           минцена=минцена.Получить(Конт.ДатаДок);
       КонецЕсли;
       минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок));
       Если минцена=0 Тогда
           ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано);
           Сообщить(""+Конт.номерСтроки+"."+Конт.ТМЦ+" не установлена цена категории "+кат);
       КонецЕсли;
Первый вариант запроса:
   ТекстЗапроса = "
   |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 КатегорияЦены2
   |   ,    $ПоследнееЗначение.ТМЦ.Цена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
   |";      
Второй вариант:
ТекстЗапроса = "
   |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 ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
   |   ) Запрос
   |";                                                        
Оба варианта выдают не совсем то что надо, во втором варианте выбарается ЦенаКатегории, а что с ней делать с этой ценой - я что-то в штопор вошел...
150 bananan
 
21.03.13
12:30
(148) Это, если я правильно понял и есть окончательный вариант запроса?
151 sapphire
 
21.03.13
12:31
(149) Сказочный долбобей...
152 sapphire
 
21.03.13
12:31
(150) Да пошел ты нафиг.
153 bananan
 
21.03.13
12:32
(151) Спасибо за комплименты и за посыл, но код, что ты дал выдает:
Ошибка типизации поля ТипЦен $Справочник.ТипыЦен
154 ЧеловекДуши
 
21.03.13
12:34
(153) Серьёзно? Ты не переживай, пойди попей пивка, завтра все будет Хорошо :)
А в понедельник будешь осваивать новые просторы работодателей :)
155 sapphire
 
21.03.13
12:34
(153) Я еще за тебя типизацию твою долбанную должен знать?
У меня не рентгеновское зрение, я вообще в МСК и твою конфу в глаза не видел. Ты не охренел часом?
156 sapphire
 
21.03.13
12:34
(154) Давно ему пора туда...
157 bananan
 
21.03.13
12:35
+(153) Вообще у нас ТипЦен - это перечисление..
158 Wobland
 
21.03.13
12:35
(153) да перестань уже пытаться понять и пытаться думать. попроси готовый рабочий запрос. вот дайте мне, а то я сам не могу. вот моя база, вот техзадание, работайте..
159 Mikeware
 
21.03.13
12:35
(151) не "сказочный", а феерический!
160 sapphire
 
21.03.13
12:36
(153) Ну и убери типизацию, что сам не в состоянии пользоваться кнопками BackSpace & Delete ?
161 bananan
 
21.03.13
12:36
(155-156) Большое спасибо, с типизацеей думаю и сам разберусь, а по поводу пива и т.д. Алкоголь в последни1 раз употреблял 15 ноября прошлого года :)
162 Wobland
 
21.03.13
12:36
(160) стартовую позицию и количество нажатий скажи ещё
163 Mikeware
 
21.03.13
12:36
(158) ну так за это же денег захотят!
164 sapphire
 
21.03.13
12:37
(161) За тебя всю работу сделали, а ты еще и выпендриваешься.
165 Wobland
 
21.03.13
12:37
(163) это будет хотя бы честно ;)
166 Mikeware
 
21.03.13
12:37
(161) естественно. тебе алкоголь только для запаха. а дурь у тебя своя, врожденная...
167 Mikeware
 
21.03.13
12:38
(165)
вот и прикинь сам, где хохол, а где честно :-)
168 ЧеловекДуши
 
21.03.13
12:38
(164) Ты только сейчас это понял, что тебя развели? :)
169 sapphire
 
21.03.13
12:39
(165)(166) А если его не уволят? ... Еще заданий насыпят....
170 bananan
 
21.03.13
12:39
Блин типизацию ТипЦен сделал, дак он мне выдал:
Для типизации поля "Документ", не найдено дополнительное типизирующее поле.
171 sapphire
 
21.03.13
12:39
(168) Я честно стебался и мне не зги не обидна :)))))
172 ЧеловекДуши
 
21.03.13
12:39
(161) Нам не говори, думаю тут травкой попахивает (гонджубасом) :)
173 sapphire
 
21.03.13
12:40
(167) А вот про национальность не надо, я ведь тоже украинец, хоть родился и вырос в МО.
174 ЧеловекДуши
 
21.03.13
12:40
(170) Честно? Так и пишет. Брось, он не может так писать :)
Максимум кто сделает, это выведет в результирующей ТЗ строку с ИД перечисления :)
175 bananan
 
21.03.13
12:41
(169) По поводу увольнения - не знаю, а заданий и так хватает..
И я вот вам же показывал сколько за эти три месяца я скриптов сдал, а теперь посмотрите, по скольким из них я обращался к вам за помощью?
176 sapphire
 
21.03.13
12:41
(170) Разбирайся дальше сам. Там уже не очень смешно осталось.
177 bananan
 
21.03.13
12:42
(174) Чем в тебя бросить?
Какой резон мне  врать вам всем?
178 bananan
 
21.03.13
12:43
(176) постараюсь разобраться...
А что ща дополнительное типизирующее поле ему надо?
179 Mikeware
 
21.03.13
12:44
(168) ну почему же... сразу понятно было. я чуть не в первой бананановской ветке сказал, что бананан тупой напрочь, и его "помогите" означает "сделайте за меня".
у него было _три_ месяца на чтение документации, изучение, попытки написать чт-то самому..
180 bananan
 
21.03.13
12:46
(179) Я уже вам показывал, кажется 24 скрипта. И много из этих скриптов было написано не мною??? И сделано Вами?????
181 Ёпрст
 
21.03.13
12:46
ээхх.. 24 скрипта, какая головокружительная карьера!
Нам бы так!
:)
182 ЧеловекДуши
 
21.03.13
12:47
(177) Не знаю :)
183 ЧеловекДуши
 
21.03.13
12:48
(180) Жесть, а ты вообще что там делал, если 24 не тобою :)
184 bananan
 
21.03.13
12:49
Вот с той типизацеей вожусь, текст запроса такой:
|SELECT
|    IDDoc [Документ $Документ]
|    ,   $ОбщийРеквизит.Автор as Автор
|    ,ДатаДок
|   ,Доставка [Доставка $Справочник.Доставка]
|   ,ТипЦен [ТипЦен $Перечисление.ТипыЦен]
|   ,КаналСбыта [КаналСбыта $Справочник.КаналыСбыта]
|   ,КатегорияЦены
|   ,lineno_ НомерСтрокиВДокументе
|   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
|   ,Количество
|   ,Цена_Прих
|   ,СуммаСНДС                        
|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 ISNULL(ЦенаДляКаналаСбыта,0)=0
   |";                                                                          
Выдает:
Invalid column name 'sp226'.
Что это за sp226?
185 bananan
 
21.03.13
12:50
(183) Читал твои шибко умные реплики...
186 Wobland
 
21.03.13
12:51
(184) это неверное имя колонки
187 bananan
 
21.03.13
12:53
(186) Да понимаю что неверное имя колонки и что здесь альяс вроде как но какой именно?  В запросе нет поля 'sp226'
188 Wobland
 
21.03.13
12:53
(187) значит, оно разыменовалось во что-то. или ты врёшь
189 sapphire
 
21.03.13
12:54
(184) Долбобей, из первого запроса часть данных типизировать не судьба? Там ведь даже имена совпадают.
190 ЧеловекДуши
 
21.03.13
12:55
(185) Брось, для тебя их надо Писать и записывать, а далее переписывать и наизусть заучивать :)
191 trad
 
21.03.13
12:58
(178)
SELECT
   IDDoc [Документ $Документ]
   ,IdDocDef Документ_вид
192 Mikeware
 
21.03.13
12:59
(191) "не поможет"©
193 bananan
 
21.03.13
13:02
(191) Добавил я
   ,IdDocDef Документ_вид
а он мне выдает все то же:
Invalid column name 'sp226'.
194 bananan
 
21.03.13
13:02
(192) А что поможет?
195 bananan
 
21.03.13
13:03
И где в запросе 'sp226???
196 Mikeware
 
21.03.13
13:05
(195) .отладка(1)
197 ЧеловекДуши
 
21.03.13
13:06
(194) Отпуск, простой отпуск :)

Я вместо IdDocDef - обычно пользуюсь пот такой функцией.

//sp_tohex - Погугли сам
//val - 10-ное число, len1 - количество символов
ТекстЗапроса="
|if   Object_ID('"+ФункПР+"') is null
|Begin
|Exec('
|create FUNCTION  "+ФункПР+"( val int, @len1 int) RETURNS varchar(9)
|AS
|begin
|declare @v int;
|declare @tval varchar(9);
|set @v = val;
|set @tval = '''';
|
|while (@v > 0)
|begin
|   set @tval = SUBSTRING(''0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'',1+@v%36,1)+@tval;
|   set @v = @v/36;
|end;
|
|if @tval='''' set @tval=''0'';
|
|while (len(@tval) < @len1)
|begin
|set @tval = '' ''+@tval;
|end;
|RETURN(@tval);
|end
|')
|
|select 2 as Err
|end else
|select 1 as Err
|";
198 bananan
 
21.03.13
13:08
(197) Отпуск будет где-то в конце лета или начале осени...
По поводу функции - возьму на заметку
199 Mikeware
 
21.03.13
13:08
(197) тут только расстрел поможет..
200 Ёпрст
 
21.03.13
13:09
(195)
 ,   $ОбщийРеквизит.Автор as Автор
201 ЧеловекДуши
 
21.03.13
13:09
(198) Функция переводит 10-чное число в 16-тиричное :)
202 ЧеловекДуши
 
21.03.13
13:09
+(201) Т.е. в 36-тиричное :)
203 trad
 
21.03.13
13:10
(193)
вместо
SELECT
   IDDoc [Документ $Документ]
   ,$ОбщийРеквизит.Автор as Автор
напиши
SELECT
   IDDoc [Документ $Документ]
   ,IdDocDef Документ_вид
   ,Автор
204 bananan
 
21.03.13
13:10
А по запросу... В конце-концов - он ДОЛЖЕН РАБОТАТЬ!
В тексте:
|SELECT
|    IDDoc [Документ $Документ]
|    ,   $ОбщийРеквизит.Автор as Автор
|    ,ДатаДок
|   ,Доставка [Доставка $Справочник.Доставка]
|   ,ТипЦен [ТипЦен $Перечисление.ТипыЦен]
|   ,КаналСбыта [КаналСбыта $Справочник.КаналыСбыта]
|   ,КатегорияЦены
|   ,lineno_ НомерСтрокиВДокументе
|   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
|   ,Количество
|   ,Цена_Прих
|   ,СуммаСНДС                        
|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 ISNULL(ЦенаДляКаналаСбыта,0)=0
   |";                                                                                            
   
Мне непонятно такое:
|    ,ДатаДок
...
|   ,Количество
|   ,Цена_Прих
|   ,СуммаСНДС  
Откуда эти поля беруться? Вернее, где указано откуда из брать7
205 trad
 
21.03.13
13:12
(204) из вложенного запроса
206 ЧеловекДуши
 
21.03.13
13:12
(204)  ДАтаДок из самого первого Запроса.
У тебя же 3-ёх уровневый запрос получился, пользователи тебя еще долго будут помнить после такого запроса :)

|   ,cast(left(Жур.date_time_iddoc,8) as datetime)  ДатаДок
207 bananan
 
21.03.13
13:12
(203) Спасибо, написал как ты сказал и он ЗАРАБОТАЛ!!!
208 ЧеловекДуши
 
21.03.13
13:13
+(206) Не добрым словом... конечно...
209 Ёпрст
 
21.03.13
13:14
(203) добрый ты. с тобой автор до бентли не накопит
210 sapphire
 
21.03.13
13:14
- пью кофе -
211 sapphire
 
21.03.13
13:15
(207)
Теперь вместо
SELECT
   IDDoc [Документ $Документ]
  ,IdDocDef Документ_вид
  ,Автор
напиши
SELECT
    IDDoc [Документ $Документ]
   ,IdDocDef Документ_вид
   ,Автор [Автор $Справочник.Сотрудники] -- взято из (0)
212 Mikeware
 
21.03.13
13:16
посмотрел на знаменитые "24 скрипта". эпично...
213 trad
 
21.03.13
13:16
(206) а что не так с этим выражением?
214 sapphire
 
21.03.13
13:16
(212) Мишь, где?! Я тож поржать хочу.
215 bananan
 
21.03.13
13:16
:) Это еще совсем не ВСЕ!!
Теперь надо озапросить код:
   минцена=Окр(минцена*(1-Конт.Доставка.КаналСбытаТТ.ДопустимаяСкидка/100),2);
       Если докцена<минцена Тогда
           ВсеВыбрано = ?((ДоступАдмина+ДоступБуха)=2,0,ВсеВыбрано);
           Сообщить(""+Конт.номерСтроки+"."+Конт.ТМЦ+" имеет недопустимо низкую цену="+докцена+" минимальная="+минцена);
       КонецЕсли
216 ЧеловекДуши
 
21.03.13
13:16
(213) Он спросил, "Откуда", я в качестве примера, ему нашёл :)
217 bananan
 
21.03.13
13:17
(207) Это я уже сделал еще до того как ты мне посоветовал..
218 ЧеловекДуши
 
21.03.13
13:17
(215) Не знаю, Код не читабельный, даже смотреть не буду :)
219 sapphire
 
21.03.13
13:18
(206) Это я ему такое попрося подсунул.. Хотя конструкция с кучей левых join-ов - авторство Димы aka trad из Кирова.
Так что сей мопед мой чисто риторически :)
220 AleksAnt
 
21.03.13
13:18
(215) а зачем этот код превращать в запрос?
221 sapphire
 
21.03.13
13:19
(215) Там озапрашивать нечего. Всё вполне очевидно
222 trad
 
21.03.13
13:19
(216) Я понимаю что ты нашёл, но почему пользователи из-за этого выражения будут поминать его не добрым словом?
Что плохого в этом выражении на твой взгляд?
223 bananan
 
21.03.13
13:21
(220) Когда все это я написал (без вашей помощи) без прямого запроса, то "запрос2 на период месяц - работает около получаса.
Потому и возникла надобность в прмомо запросе
224 Mikeware
 
21.03.13
13:22
(214) где-то в прошлой ветке было. отмылил
225 ЧеловекДуши
 
21.03.13
13:22
(222) Медленный запрос, чем больше вложений, тем больше место есть SQL сервер, больше есть меньше ресурса на другие запросы.
И от этого медленно работает сам сервер, в итоге все висят и недоумевают в чем проблема и почему 1С работает периодически медленно :)
226 ЧеловекДуши
 
21.03.13
13:23
(223) А этот будет быстрее? :)
227 trad
 
21.03.13
13:25
(225) Извини, понял я. Это ты к вложенности написал, а не к cast.
228 ЧеловекДуши
 
21.03.13
13:26
(227) Угу :)
229 trad
 
21.03.13
13:28
(228) но тут надо смотреть, может быть без вложенности оптимальнее не написать.
230 StanLee
 
21.03.13
13:28
прям сериал :)) долбобаобаб ищет секса на стороне, ему никто не дает, но все объясняют как и что куда сувать, но у него не суется, даже со смазкой.. он уже натер мозоли на всем что можно натереть, но секас не входит и не выходит. напрашивается вопрос, может нужно выбрать более доступный объект для любви, не прямой кактус++, а кривые стандартные запросы 1С :)
231 ЧеловекДуши
 
21.03.13
13:29
(229) Тоже верно. Просто в своё время я до оптимизировался :)
В итоге не заметив почти положил сервер, в плане производительности. А делов то, в Базу добавилось всего лишних 10-ть пользователей :)
232 ЧеловекДуши
 
21.03.13
13:31
(230) Ну, он уже в прогрессу, сумел все же запустить запрос, и фигня, что там результат не результативен, и еще нужно писать Табличную часть к отчету :)
233 bananan
 
21.03.13
13:31
(230) может твое - написание порнороманов??
234 AleksAnt
 
21.03.13
13:31
(230) интересно, когда ТС начнет изучать 8-ку:)
235 Wobland
 
21.03.13
13:32
(230) он от этих психоделических запросов как раз уйти в 1С++ пытается. так-то вроде есть и работает
236 bananan
 
21.03.13
13:32
(232) Табличная часть есть, она еще была написана для скрипта с НЕпрямым запросом...
237 ЧеловекДуши
 
21.03.13
13:32
(234) Его ждет много чудных откровений :)
238 StanLee
 
21.03.13
13:33
(233) а надо попробовать! сенькс за идею, с меня пива :)
239 ЧеловекДуши
 
21.03.13
13:33
(236) Везет тебе... Может быть :)
240 Wobland
 
21.03.13
13:38
(238) я начну
select girls.id, maximum(girls.beauty) from girls where girls.input_hole between &customer_dick-0.1 and &customer_dick+0.1
241 Wobland
 
21.03.13
13:38
(240) having maximum(girls.beauty)
242 sapphire
 
21.03.13
13:39
(240) SELECT @@ROWCOUNT ?
243 sapphire
 
21.03.13
13:40
(241) GROUP BY по какому полю?
244 Wobland
 
21.03.13
13:41
что-то я перегрелся...
select top 20 order by girls.beauty desc
245 Wobland
 
21.03.13
13:45
бррр... а как выбрать всех, имеющих максимальное значение красоты? where girls.beauty=(select maximum(girls.beauty) from girls) ?
246 StanLee
 
21.03.13
13:48
а может банально order by girls.tits desc ? :)
247 Wobland
 
21.03.13
13:48
(246) хочу всех с пятым (максимальный имеющийся в базе)
248 bananan
 
21.03.13
14:14
Что-то я опять запутался... В только сделанном вами запросе:
|SELECT
|    IDDoc [Документ $Документ]
|    ,IdDocDef Документ_вид
|    ,Автор [Автор $Справочник.Сотрудники]
|    ,ДатаДок
|   ,Доставка [Доставка $Справочник.Доставка]
|   ,ТипЦен [ТипЦен $Перечисление.ТипыЦен]
|   ,КаналСбыта [КаналСбыта $Справочник.КаналыСбыта]
|   ,КатегорияЦены
|   ,lineno_ НомерСтрокиВДокументе
|   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
|   ,Количество
|   ,Цена_Прих
|   ,СуммаСНДС                        
|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 ISNULL(ЦенаДляКаналаСбыта,0)=0
   |";                                            
где вібирается Минимальная цена?
в непрямом запросе минимальная цена определяется так:
   минцена=Конт.ТМЦ.ПолучитьАтрибут("Цена"+Число(Прав(кат.Идентификатор(),1)));
       Если Метаданные.Справочник("ТМЦ").Реквизит("Цена"+Число(Прав(кат.Идентификатор(),1))).Периодический=1 Тогда
           минцена=минцена.Получить(Конт.ДатаДок);
       КонецЕсли;
       минцена=минцена*(1+Конт.ТМЦ.СтавкаНДС.Ставка.Получить(Конт.ДатаДок));
249 bananan
 
21.03.13
14:23
+(248) | ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта
Это определяется минимальная цена?
250 Wobland
 
21.03.13
14:26
SELECT TOP 1 ORDER BY История.DATE DESC
что-то самое позднее
251 sapphire
 
21.03.13
14:27
(249) минцена=минцена.Получить(Конт.ДатаДок);
252 sapphire
 
21.03.13
14:27
(250) История.DATE<=Запрос.ДатаДок
253 bananan
 
21.03.13
14:29
(251) И как это выбрать в прымом запросе?
254 Wobland
 
21.03.13
14:30
(252) крайнее значение константы на дату?
255 sapphire
 
21.03.13
14:30
cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2))=минцена.Получить(Конт.ДатаДок)
256 Wobland
 
21.03.13
14:31
(255) короче, не доходит до меня это. не общался с константами. да и ладно ;)
257 sapphire
 
21.03.13
14:31
(254) Нет, это значение периодического реквизита ЦенаX справочника ТМЦ на дату документа для канала сбыта.
258 sapphire
 
21.03.13
14:32
(256) В _1SCONST хранятся значения периодических реквизитов справочников.
260 bananan
 
21.03.13
14:50
Что-то я не понял, что значит (255) к чему там использоваине =?
261 sapphire
 
21.03.13
14:50
(260) Долбобей потому что и понималка у тебю совсем не варит.
262 Ёпрст
 
21.03.13
14:51
(260) ))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
263 sapphire
 
21.03.13
14:52
(262) Тсс... спугнешь тушканчика....
264 Ёпрст
 
21.03.13
14:52
надо было заместо знака равенства написать ему посимвольно:

левое выражение Э К В И В А Л Е Н Т Н О правому..
))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))))
265 DrZombi
 
гуру
21.03.13
14:53
Вот оно как, я думал "Сериал" закончен, а тут еще продолжение :)
266 DrZombi
 
гуру
21.03.13
14:54
(260) Это и есть получение значения периодического реквизита :)
267 sapphire
 
21.03.13
14:54
(264) Он читает как-то странно. Я еще не понял алгоритм его чтения :)
268 Wobland
 
21.03.13
14:55
а как вы тут заставили запрос исполнять 1Сный код?
269 Ёпрст
 
21.03.13
14:55
(267) мот он арапка ? и справа налево.. или китайчик и ищет знакомые символы и иероглифы ?
))
270 sapphire
 
21.03.13
14:56
(269) Фих знает, может просто упал когда-то неудачно...
271 sapphire
 
21.03.13
14:56
(268) Чаво?
272 Wobland
 
21.03.13
14:57
(271) ну.. сравнить с минЦена.Получить() ;)
273 sapphire
 
21.03.13
14:58
(272) А... Ну мы могем :)
274 Ёпрст
 
21.03.13
15:11
ну всё, а уутора творческий перерыв - пишет свой 25-ый скрипт
275 Mikeware
 
21.03.13
15:11
(274) может, просто потанцевать пошел?
276 Ёпрст
 
21.03.13
15:13
(275) рано, бубен еще надо заслужить
277 Mikeware
 
21.03.13
15:27
(276) "сара, эта сволочь еще и поет!"©
в том смысле, что оно - хореограф по профессии...танцевалло там в каких-то театрах куевских...
278 Mikeware
 
21.03.13
15:27
в киевских...
279 bananan
 
21.03.13
16:15
Ну из вас и прет...!
Ребята а если я создал в скрипте три разніх таблиці значений, как мне узнать какие имена колонок у всех из этих таблиззначений?
280 Ёпрст
 
21.03.13
16:18
25 скрипт ужо продавать надо!
Патентуй его скорее..

ЗЫ:

Для к = 1 По ТЗ.КоличествоКолонок() Цикл
  Сообщить("Имя колонки, биомать, будет такое у меня: "+ТЗ.ПолучитьПараметрыКолонки(к));
КонецЦикла;
281 bananan
 
21.03.13
16:22
(280) Спасибо!
282 bananan
 
21.03.13
16:35
Странно код:
ТбРазом = СоздатьОбъект("ТаблицаЗначений");
   ТбРазом.КоличествоСтрок(ТбЗн.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+ТбЗн3.КоличествоСтрок());
   ТбРазом.Заполнить(ТбЗн, 1, ТбЗн.КоличествоСтрок(),);
   ТбРазом.Заполнить(ТбЗн2, ТбЗн.КоличествоСтрок()+1, );
   ТбРазом.Заполнить(ТбЗн3, ТбЗн.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+1, );
   ТбРазом.ВыбратьСтроку();
   Для к = 1 По ТбРазом.КоличествоКолонок() Цикл
         Сообщить("Имя колонки, биомать, будет такое у меня: "+ТбРазом.ПолучитьПараметрыКолонки(к));
   КонецЦикла;            
   Сообщить("Строк в итоге: "+ТбРазом.КоличествоСтрок()+" в 1-й: "+ТбЗн.КоличествоСтрок()+" в 2-й: "+ТбЗн2.КоличествоСтрок()+" в 3-й: "+ТбЗн3.КоличествоСтрок());
   Возврат;
Сообщает:
Строк в итоге: 65 в 1-й: 18 в 2-й: 25 в 3-й: 22
И все а где же имена колонок ТбРазом?
283 bananan
 
21.03.13
16:38
+(282) Когда Добавил коод который выводит количесвто колонок в итоговой таблице ...
Так вот в итоговой таблице колисество колонок - 0,
Я чего-то напутал с именами колонок в таблицах?
284 sapphire
 
21.03.13
16:41
(280) Мне уже страшно....
285 Ёпрст
 
21.03.13
16:41
Ё....
286 sapphire
 
21.03.13
16:42
(279) Ты ж сам создавал поди и че, не знаешь что насоздавал?
287 sapphire
 
21.03.13
16:43
(285) Представляешь, такой код приснится ночью....
288 bananan
 
21.03.13
16:45
(284) Ну создавал не сам, а с вами, мнре уже самому страшно..
Для 1-й ТЗ код в запросе такой:
|SELECT
   |    Данные.IDDoc as [Документ $Документ]
   |,   Данные.IdDocDef as Документ_вид
   |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
   |,   Данные.lineno_ as НомерСтроки_
   |,   Данные.Автор as [Автор $Справочник.Сотрудники]
   |,   'має ціну нижчу за прихідну' as Ошибка
2-й:
   |SELECT
   |    IDDoc [Документ $Документ]
   |    ,IdDocDef Документ_вид
   |   ,lineno_ НомерСтроки_
   |   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
   |    ,Автор [Автор $Справочник.Сотрудники]
   |    ,ДатаДок
   |   ,Доставка [Доставка $Справочник.Доставка]
   |   ,ТипЦен [ТипЦен $Перечисление.ТипыЦен]
   |   ,КаналСбыта [КаналСбыта $Справочник.КаналыСбыта]
   |   ,КатегорияЦены
   |   ,Количество
   |   ,Цена_Прих
   |   ,СуммаСНДС                  
   |    , 'Ошибка 2' as Ошибка
3-й:
     |SELECT
   |    IDDoc [Документ $Документ]
   |    ,IdDocDef Документ_вид      
   |   ,lineno_ НомерСтроки_
   |   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
   |    ,Автор [Автор $Справочник.Сотрудники]
   |    ,ДатаДок
   |   ,Доставка [Доставка $Справочник.Доставка]
   |   ,ТипЦен [ТипЦен $Перечисление.ТипыЦен]
   |   ,КаналСбыта [КаналСбыта $Справочник.КаналыСбыта]
   |   ,КатегорияЦены
   |   ,lineno_ НомерСтрокиВДокументе
   |   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
   |   ,Количество
   |   ,Цена_Прих
   |   ,СуммаСНДС  
   |   ,'має дуже малу ціну' as Ошибка
289 Ёпрст
 
21.03.13
16:45
ТбЗн.Выгрузить(ТбРазом);
   ТбРазом.КоличествоСтрок(ТбРазом.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+ТбЗн3.КоличествоСтрок());
   ТбРазом.Заполнить(ТбЗн2, ТбРазомм.КоличествоСтрок()+1);
   ТбРазом.Заполнить(ТбЗн3, ТбРазом.КоличествоСтрок()+1);
290 Ёпрст
 
21.03.13
16:47
чорт, беру свой код обратно..
у него разная структура ТЗ во всех трех..
:))))))))))))))))))))))))))))))))))))))))))))))))))))))))
291 bananan
 
21.03.13
16:50
Странно, вроде в коде запросов поисправлял:
1:
   |    Данные.IDDoc as [Документ $Документ]
   |,   Данные.IdDocDef as Документ_вид
   |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
   |,   Данные.lineno_ as НомерСтроки_
   |,   Данные.Автор as [Автор $Справочник.Сотрудники]
   |,   'має ціну нижчу за прихідну' as Ошибка

2:
   |SELECT
   |    IDDoc [Документ $Документ]
   |    ,IdDocDef Документ_вид
   |   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
   |   ,lineno_ НомерСтроки_
   |    ,Автор [Автор $Справочник.Сотрудники]
   |    , 'Ошибка 2' as Ошибка

3:
     |SELECT
   |    IDDoc [Документ $Документ]
   |    ,IdDocDef Документ_вид      
   |   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
   |   ,lineno_ НомерСтроки_
   |    ,Автор [Автор $Справочник.Сотрудники]
   |   ,'має дуже малу ціну' as Ошибка

А все-равно НЕ работает!
292 bananan
 
21.03.13
16:50
(290) Посмотри, плиз (291) теперь структура одинаковая?
293 sapphire
 
21.03.13
16:52
Хорошо хоть мы ему слово UNION не сказали :)
294 Ёпрст
 
21.03.13
16:53
и ? бери код с (289).. пробуй.
295 Ёпрст
 
21.03.13
16:53
(293) :)
мот ему оно и не надо..
296 sapphire
 
21.03.13
16:53
(295) Это точно...
297 bananan
 
21.03.13
16:55
(294) Не совсем понял, а куда вставлять код (289)
после этих :
ТбРазом = СоздатьОбъект("ТаблицаЗначений");
   ТбРазом.КоличествоСтрок(ТбЗн.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+ТбЗн3.КоличествоСтрок());
   ТбРазом.Заполнить(ТбЗн, 1, ТбЗн.КоличествоСтрок(),);
   ТбРазом.Заполнить(ТбЗн2, ТбЗн.КоличествоСтрок()+1, );
   ТбРазом.Заполнить(ТбЗн3, ТбЗн.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+1, );
или где?
298 Ёпрст
 
21.03.13
16:56
(297) вместо
299 Ёпрст
 
21.03.13
16:56
этого кода
300 bananan
 
21.03.13
16:58
Всавил я в код чтобы смотреть параметры колонок для каждой из Таблиц значений. Так вот что получаю:
Имя колонки 1, биомать, будет такое у меня: Документ
Имя колонки 1, биомать, будет такое у меня: Документ_вид
Имя колонки 1, биомать, будет такое у меня: ТМЦ
Имя колонки 1, биомать, будет такое у меня: НомерСтроки_
Имя колонки 1, биомать, будет такое у меня: Автор
Имя колонки 1, биомать, будет такое у меня: Ошибка
------
Имя колонки2, биомать, будет такое у меня: Документ
Имя колонки2, биомать, будет такое у меня: Документ_вид
Имя колонки2, биомать, будет такое у меня: ТМЦ
Имя колонки2, биомать, будет такое у меня: НомерСтроки_
Имя колонки2, биомать, будет такое у меня: Автор
Имя колонки2, биомать, будет такое у меня: Ошибка
------
Имя колонки3, биомать, будет такое у меня: Документ
Имя колонки3, биомать, будет такое у меня: Документ_вид
Имя колонки3, биомать, будет такое у меня: ТМЦ
Имя колонки3, биомать, будет такое у меня: НомерСтроки_
Имя колонки3, биомать, будет такое у меня: Автор
Имя колонки3, биомать, будет такое у меня: Ошибка
Колонок: 0
Строк в итоге: 65 в 1-й: 18 в 2-й: 25 в 3-й: 22
301 sapphire
 
21.03.13
16:59
(299) Одинаковая структура, но колонки могут быть типизированы.
302 StanLee
 
21.03.13
16:59
биомать )))))))))))))))))))
паццталом ё
303 sapphire
 
21.03.13
17:02
(302) Ну он же копипастит :)
304 bananan
 
21.03.13
17:02
(301) И в итоге надо чтобы соответствующие колонки в каждой из Тз имели одинаковый тип?
305 Ёпрст
 
21.03.13
17:04
(304) желательно, а чего, ща не работает разве что-то ?
:)
306 bananan
 
21.03.13
17:10
(305) Когда закомментировал немного:
ТбРазом = СоздатьОбъект("ТаблицаЗначений");
   ТбЗн.Выгрузить(ТбРазом);
   //ТбРазом.КоличествоСтрок(ТбРазом.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+ТбЗн3.КоличествоСтрок());
   //ТбРазом.Заполнить(ТбЗн2, ТбРазомм.КоличествоСтрок()+1);
   //ТбРазом.Заполнить(ТбЗн3, ТбРазом.КоличествоСтрок()+1);
Заработало, но ведь в
ТбРазом только данные из ТБЗн. Да?
307 bananan
 
21.03.13
17:13
А сейчас я те строки раскомментировал, выдает6
{\\SERVER12\VPKTEST$\EXTFORMS\ЦІНАПОКАТЕГОРІЇ001.ERT(168)}: Номер за пределами значения!
308 Ёпрст
 
21.03.13
17:13
(306) сейчас - да, а зачем комментил 7
309 vinogradъ
 
21.03.13
17:16
ТбЗн.Выгрузить(ТбРазом);
кс1 = ТбРазом.КоличествоСтрок();
кс2 = ТбЗн2.КоличествоСтрок();
кс3 = ТбЗн3.КоличествоСтрок();
ТбРазом.КоличествоСтрок(кс1+кс2+кс3);
ТбРазом.Заполнить(ТбЗн2, кс1+1);
ТбРазом.Заполнить(ТбЗн3, кс1+кс2+1);
310 bananan
 
21.03.13
17:18
Всем - большое СПАСИБО.
код в итоге (объединени таблиц) написал такой:
   ТбРазом = СоздатьОбъект("ТаблицаЗначений");
   ТбЗн.Выгрузить(ТбРазом);
   
   ТбРазом.КоличествоСтрок(ТбРазом.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+ТбЗн3.КоличествоСтрок());
   ТбРазом.Заполнить(ТбЗн2, ТбЗн.КоличествоСтрок()+1);
   ТбРазом.Заполнить(ТбЗн3, ТбЗн.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+1);

и теперь все работает
311 Ёпрст
 
21.03.13
17:18
(309) да есть такое.. синдром бананана..затупил я сам ужо мальца :)
312 bananan
 
21.03.13
17:44
(311) Не переживай "синдром банананан" имеет два конца, так что раступишся :)!
313 batman69
 
21.03.13
18:03
(312) Этот синдром не излечим ))))
314 bananan
 
21.03.13
18:04
(313) а ты откуда знаешь, кажанчик69?
315 bananan
 
21.03.13
18:12
ну и, блин, открытие документов при нажатии мышки...
Так вот, когда на экране появляется итоговая таблица и я подвожу курсор мыши к документу, он (кусор ) становиться лупой, но... документ НЕ открывается. Что здесь может быть не так??
316 Ёпрст
 
21.03.13
18:16
(315)
ТекущийДокумент()
317 bananan
 
21.03.13
18:18
(316) Не понял...
318 sapphire
 
21.03.13
18:19
(316) Поехал я домой...
319 sapphire
 
21.03.13
18:19
(317) Долбобей патамушта
320 Ёпрст
 
21.03.13
18:21
(317) в ячейке допиши
Вася.ТекущийДокумент() ... заместо Вася
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-мя полями - клиентосом и товаром и списком с товаром.
Независимо от того, куда вы едете — это в гору и против ветра!