Имя: Пароль:
1C
Юмор
Опять прямой запрос :(
Ø (длинная ветка 11.04.2013 14:14)
0 bananan
 
26.03.13
19:19
Дело в том, что к запросам, которые вы мне помогали написать (или, скорее вы их написали) есть некоторые замечания клиента (шефа моего).
Так вот в запросе №2
|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)) ЦенаДляКаналаСбыта
ЦенаДляКаналаСбыта мне нужна в саомом внешнем запросе (т.е. после первого оператора селект, пробывал и так и сяк - никак не получается.
Подскажите, ребята, пожалуйста!
1 bananan
 
26.03.13
19:59
Как нри странно с єтой проблемой разобрался сам, но возникла вторая проблема если сам не разбирусь, то завтра буду к вам обрахаться...
2 Mikeware
 
26.03.13
20:02
тебя еще не уволили? :-(
3 viktor_vv
 
26.03.13
20:06
(1) Действительно странно :)). Неужели прогресс.
4 фобка
 
26.03.13
20:29
(0) сам, всё сам!
5 MishaD
 
26.03.13
21:32
Еще несколько тем, и будет гуру прямых запросов.
6 1Сергей
 
27.03.13
07:04
(1) трудно понять в каком месте слова "обрахаться" опечатка
7 Wobland
 
27.03.13
07:08
завтра пришло! ждём обраха
8 Wobland
 
27.03.13
07:13
кстати, Ицик говорил, что звёзды в запросе некошерны. и очень даже аргументировал
9 ЧеловекДуши
 
27.03.13
07:40
(0) Тебя еще не уволили? Жесть...
10 ЧеловекДуши
 
27.03.13
07:41
(5) Не... не будет :)
Человек не способен запомнить что от куда и куда, где больше 2-ух вложений :)
11 ЧеловекДуши
 
27.03.13
07:42
(8) Интересно, он тебя послушает? :)
12 ЧеловекДуши
 
27.03.13
07:44
>>> есть некоторые замечания клиента

Вот ты чудик, ты сейчас нам тут еще предьявы кидать собрался? :)
Даже если запрос удали твою БД, то вся вина на тебе :)
13 Wobland
 
27.03.13
07:46
(12) дык не собрался, а посетовал
(11) неа. это к теории и пониманию парадигмы в целом относится. такие материи человеку недоступны
14 ЧеловекДуши
 
27.03.13
07:50
(13) >>>  дык не собрался, а посетовал

Все ровно не приятно, написал, что дескать его шеф нам указ и что-то значит :)
И сейчас мы тут все ему поправим :)
15 Wobland
 
27.03.13
07:51
(14) ну не наю, у меня такого восприятия не возникло..
16 Wobland
 
27.03.13
07:52
нет, но каков красавец! 40 минут на решение и без единой подсказки ;)
17 oslokot
 
27.03.13
09:23
(6) )))
18 bananan
 
27.03.13
11:38
Таки сам пока не смоги вникнуть. Значит во-первых в таблицу значений попадают те поля, который перечислены во внешнем селекте? Я, по-крайней мере, исхожу из этого, во 2-м запросе мне надо выудить в таблицу значений КаналСбыта и КатегориюЦЕны,
2-й запрос выглядит так:
   |SELECT
   |    IDDoc [Документ $Документ]
   |    ,IdDocDef Документ_вид
   |   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
   |   ,lineno_ НомерСтроки_
   |    ,Автор [Автор $Справочник.Сотрудники]                
   |    ,Клиент [ Клиент $Справочник.Клиенты]        
   |    ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
   |    , 'Не встановлена ціна катгорії' as Ошибка
   |FROM (                        
   |SELECT
   |  Запрос.*
   | ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта
   |FROM  
   |(
   |   SELECT
   |       Жур.IDDoc as IDDoc
   |   ,   Жур.IdDocDef as IdDocDef
   |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
   |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
   |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
   |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС                        
   |   ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
   |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
   |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент
   |   ,   $Доставка.КаналСбытаТТ 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
   |";                  
Подскажите пожалйуста!
19 Wobland
 
27.03.13
11:40
$КаналСбыта.КатегорияЦены не можешь наверх вытянуть?
20 bananan
 
27.03.13
11:50
(19) Елси бі все біло так просто... Чтобы достучаться до $КаналСбыта.КатегорияЦены надо еще много чего наверх вытянуть. Таже Доставка и т.д. Или я ошибаюсь?
21 Wobland
 
27.03.13
11:54
(20) вон оно у тебя тупо в селекте
22 viktor_vv
 
27.03.13
11:56
Просто снаружи пиши в селекте Запрос.КатегорияЦены.
И ты бы алиасы для вложенных запросов как-то разнообразил.
23 bananan
 
27.03.13
12:08
(22) Спасибо, попробую так
24 bananan
 
27.03.13
12:11
+(23) Как я и думал, так не проходит:
|SELECT
   |    IDDoc [Документ $Документ]
   |    ,IdDocDef Документ_вид
   |   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
   |   ,lineno_ НомерСтроки_
   |    ,Автор [Автор $Справочник.Сотрудники]                
   |    ,Клиент [ Клиент $Справочник.Клиенты]            
   |   ,   Запрос.КаналСбыта
   |   ,   Запрос.КатегорияЦены /*треба винести у зовнышный запрос*/
   |    ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
   |    , 'Не встановлена ціна катгорії' as Ошибка
   |FROM (                        
   |SELECT
   |  Запрос.*
   | ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта
   |FROM  
   |(
   |   SELECT
   |       Жур.IDDoc as IDDoc
   |   ,   Жур.IdDocDef as IdDocDef
   |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
   |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
   |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
   |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС                        
   |   ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
   |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
   |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент
   |   ,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 'КаналСбыта'.
25 Wobland
 
27.03.13
12:11
(22) не взлетит у него.

выбрать из (выбрать из (выбрать $КаналСбыта.КатегорияЦены) как Запрос) как Запрос)

в Запросе нет такого поля
26 Wobland
 
27.03.13
12:13
(24) я тебе даже сказал, в какой таблице его нет. намекаю: а не добавить ли это поле туда?
27 bananan
 
27.03.13
12:13
(26) В таблице Запрос?
28 Wobland
 
27.03.13
12:14
(27) ай, молодца!
29 bananan
 
27.03.13
12:20
(28) И что делать?
30 bananan
 
27.03.13
12:21
+(29) пардон, пропустил пост (26). Сейчас попробую добавить єто поле в таблицу Запрос... ну и сначала видимо с альясами разберусь чтобі они более нормально віглядели..
31 Ёпрст
 
27.03.13
12:21
Дарю:

........
,КаналСбыта as [КаналСбыта $Справочник.КаналыСбыта]

..........

,КаналСбыта.id as КаналСбыта
32 Ёпрст
 
27.03.13
12:22
вставить в нужное место в тексте запроса- наслаждаться
33 bananan
 
27.03.13
12:23
+(30) Что-то я опять запутался. Текст запроса:
   |SELECT
   |    IDDoc [Документ $Документ]
   |    ,IdDocDef Документ_вид
   |   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
   |   ,lineno_ НомерСтроки_
   |    ,Автор [Автор $Справочник.Сотрудники]                
   |    ,Клиент [ Клиент $Справочник.Клиенты]        
   |    ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
   |    , 'Не встановлена ціна катгорії' as Ошибка
   |FROM (                        
   |SELECT
   |  Запрос.*
   | ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта
   |FROM  
   |(
   |   SELECT
   |       Жур.IDDoc as IDDoc
   |   ,   Жур.IdDocDef as IdDocDef
   |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
   |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
   |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
   |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС                        
   |   ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
   |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
   |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент
   |   ,   $Доставка.КаналСбытаТТ 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
   |";                  
и КаналСбыта и КатегорияЦены вроде как в таблице Запрос?
34 bananan
 
27.03.13
12:25
(32) попробую и так, надо джоин добавить к внешнему запросу? И куда этот джоин втавлять? уже я так пробывал, но вот не пойму куда вставить джоин... :(
35 Wobland
 
27.03.13
12:25
(33) да
36 Ёпрст
 
27.03.13
12:26
(34) где в (31) ты увидел джоин ?
37 Wobland
 
27.03.13
12:26
/*чавкая поп-корном*/
когда ж он наконец сообразит, что у него 2 таблицы Запрос?..
38 bananan
 
27.03.13
12:28
(35-37) Сейчас попробую все вкучу слепить...
39 Wobland
 
27.03.13
12:29
+(38) хорошенько перемешать и посолить
40 bananan
 
27.03.13
12:33
(39) Не то слово.. Ребята помогите!
пробывал так (альясы нормально задать чтобы не было две Запрос):
|   ) Запрос
   |) Запрос2 WHERE ISNULL(ЦенаДляКаналаСбыта,0)=0
   |";      
Дак не пропускает:
The column prefix 'Запрос' does not match with a table name or alias
41 Wobland
 
27.03.13
12:35
(40) хочешь, я за тебя это на русский переведу?
42 Ёпрст
 
27.03.13
12:35
(40) читай (31) до полного просветления.
Тебе уже 2 строчки кода впадлу вставить в нужное место ?
43 Wobland
 
27.03.13
12:36
(42) в какое-какое?
44 bananan
 
27.03.13
12:37
+(40 Дак и так не проходит:
|   ) Запрос2
   |) Запрос WHERE ISNULL(ЦенаДляКаналаСбыта,0)=0
   |";      
выдает все тот же:
The column prefix 'Запрос' does not match with a table name or alias
45 bananan
 
27.03.13
12:39
(42) Читаю и НЕ понимаю...
,КаналСбыта as [КаналСбыта $Справочник.КаналыСбыта]

..........

,КаналСбыта.id as КаналСбыта
это правильно??
46 bananan
 
27.03.13
12:42
+(45) Входит что КаналСбыта и КаналСбыта.id имеют одинаковый альяыс КаналСбыта...
47 bananan
 
27.03.13
12:44
Добавил во внещний запрос |    ,КаналСбыта as [КаналСбыта $Справочник.КаналыСбыта] - работает...
Но мне надо КаналСбыта.КатегорияЦены!
48 bananan
 
27.03.13
12:46
+(47) так:
|    ,КаналСбыта as [КаналСбыта $Справочник.КаналыСбыта]
   |    ,$КаналСбыта.КатегорияЦены as [КатЦены $Перечисление.ТипыЦен]
не проходит:
The column prefix 'КаналСбыта' does not match with a table name or alias name used in the query.
49 Mikeware
 
27.03.13
12:52
феерично
50 Ёпрст
 
27.03.13
12:52
Ё..
51 Mikeware
 
27.03.13
12:52
(50) ...твоЁ
52 Ёпрст
 
27.03.13
12:55
(48)
//   |    ,$КаналСбыта.КатегорияЦены as [КатЦены $Перечисление.ТипыЦен]
| КатегорияЦены as [КатЦены $Перечисление.ТипыЦен]
53 bananan
 
27.03.13
13:05
(52) ТАк просто? слабо верится, но сейчас проверю...
Блин, точно РАБОТАЕТ!! Вот за ето я 1С с одной стороны мякго говоря не люблю, а сдругой стороны - уважаю
54 Ёпрст
 
27.03.13
13:14
1с тут не причем
55 bananan
 
27.03.13
14:30
РЕбята, я что-то опять начудил... Значит так вывожу значения в Таблицу (на экран) и он не видит ТбРазом.Клиент и ТбРазом.Ошибка расшифровки для каждого из полей поставленны сообтветствующие к тому же еще и ошибку выдает:
Поле агрегатного объекта не обнаружено (Клиент)
что я где наглючил?
56 Ёпрст
 
27.03.13
14:31
в коде
57 Ёпрст
 
27.03.13
14:31
хотя, ошибка там же где и всегда
58 bananan
 
27.03.13
14:32
(57) это где?
59 Wobland
 
27.03.13
14:37
(58) в кислоте
60 bananan
 
27.03.13
14:39
(59) НЕ смешно ...
во всех трех запросах у меня во внешнем селкте есть Клиент [ Клиент $Справочник.Клиенты] и Ошибка тоже есть...!
61 Ёпрст
 
27.03.13
14:41
(60) не удивительно, она же на генном уровне
62 Wobland
 
27.03.13
14:42
(60) что, думаешь врёт про поле агрегатного объекта?
63 bananan
 
27.03.13
14:45
(62) Да не думаю а так.. А почему если я вывожу в ТаблицуЗначений то там оба поля нормально показаны...
64 Wobland
 
27.03.13
14:47
так показаны или не обнаружено?
65 bananan
 
27.03.13
14:50
(64) В ТаблицеЗначений поля нормально показаны, а вот в Тыблице (та что типа печатная форма) "необнарудено" для Клиент а вот Ошибка в ячейк ТбРазом.Ошибка, а не значение ТбРазом.Ошибка!
66 Wobland
 
27.03.13
14:52
>а вот Ошибка в ячейк ТбРазом.Ошибка, а не значение ТбРазом.Ошибка!
ща, подожди, я придумаю хоть сколько-нибудь рациональную трактовку этого
67 Wobland
 
27.03.13
14:52
а ЛСД - это кислота?
68 bananan
 
27.03.13
14:55
(66) Я иногда бівает и даже часто туплю, но здесь я что неправильно написал? В даной ячейке я вывожу выражение ТбРазом.Ошибка. т.е. там должно вывестить значение ТбРазом.Ошибка. Или не так?
69 Ёпрст
 
27.03.13
14:55
Эээхх.. гуманоид бананан так и не научился нормально разговаривать с землянами - никто его не понимает с первого раза.

ЗЫ: код вывода то хоть покажи, как в свою Таблицу выводишь и что выводишь
70 Wobland
 
27.03.13
14:55
а вот в ячейке, а не значение... что бы это могло быть? какой-то ответ на неведомую нам загадку?
71 Wobland
 
27.03.13
14:58
а семёрочный отладчик умеет ТЗ показывать а-ля восьмёрочный? насколько помню, у него проблемы с этим
72 bananan
 
27.03.13
14:58
(69) Обыяно вывожу:
ТбРазом = СоздатьОбъект("ТаблицаЗначений");
   ТбЗн.Выгрузить(ТбРазом);
   
   ТбРазом.КоличествоСтрок(ТбРазом.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+ТбЗн3.КоличествоСтрок());
   ТбРазом.Заполнить(ТбЗн2, ТбЗн.КоличествоСтрок()+1);
   ТбРазом.Заполнить(ТбЗн3, ТбЗн.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+1);
   
   ТбРазом.ВыбратьСтроку();
   ТбРазом.ВыбратьСтроки();
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица1");
   Таб.ВывестиСекцию("Шапка");
   Таб.Опции(0,0,Таб.ВысотаТаблицы());
   Предыдущий = СоздатьОбъект("Документ");
   Пока(ТбРазом.ПолучитьСтроку()=1) Цикл
       Если ТбРазом.Документ<>Предыдущий тогда
           Предыдущий = ТбРазом.Документ;
           Таб.ВывестиСекцию("Документ");
       Конецесли;
       Если Подр=1 тогда
           Таб.ВывестиСекцию("Ошибка");
       КонецЕсли;                
       Таб.ВывестиСекцию("Ошибочка");
   КонецЦикла;
   Таб.ТолькоПросмотр(1);
   //Таб.Защита(0);        ;
   //Таб.ОбластьПечати(2);    
   Таб.Показать("Журнал-документов: ("+ПериодСтр(ДатаС, ДатаПо)+")", );
73 sapphire
 
27.03.13
15:01
(71) Умеет, еще как умеет :)
ВыбратьСтроку называется :)
74 Wobland
 
27.03.13
15:01
(73) от изврат-то...
75 Ёпрст
 
27.03.13
15:02
так..

ТбЗн откуда взялась ?

В ячейке Таблицы в поле Текст что написано ? Тип ячейки какой ?
76 SherifSP
 
27.03.13
15:02
Ай молодець!
77 sapphire
 
27.03.13
15:04
Не хотят дядьки его UNION учить :)
78 Wobland
 
27.03.13
15:07
а давайте всю эту тряхомудию на выборках и циклах перепишем. циклы проще для понимания
79 Ёпрст
 
27.03.13
15:10
(77) рано еще, пусть сперва с простыми конструкциями языка поосвоится - циклы, условия, процедуры/функции..
80 bananan
 
27.03.13
15:12
(75) Показываю полный код скрипта:
//*******************************************

Процедура Сформировать()
   Запрос=СоздатьОбъект("ODBCRecordset");    
   ТекстЗапроса = "
   |SELECT
   |    Данные.IDDoc as [Документ $Документ]
   |,   Данные.IdDocDef as Документ_вид
   |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
   |,   Данные.lineno_ as НомерСтроки_
   |,   Данные.Автор as [Автор $Справочник.Сотрудники]
   |,   Данные.Клиент [ Клиент $Справочник.Клиенты]        
   |,   Данные.Цена_Прих
   |,   '' as МинКат
   |,   '' as ЦенаДляКаналаСбытаВ
   |,     '' as КатегорияЦены                              
   |,     '' as МинЦена
   |,   'має ціну нижчу за прихідну' as Ошибка            
   |from (
   |   SELECT
   |       Жур.IDDoc as IDDoc
   |   ,   Жур.IdDocDef as IdDocDef
   |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
   |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
   |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
   |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
   |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент
   |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.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($ДокС.ТМЦ, $ДокН.ТМЦ)
   |   Left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная        
   |   Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН
   |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
   |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
   |) Данные
   |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2)
   |";                        
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
//    ТбЗн.ВыбратьСтроки();
//    ТбЗн.ВыбратьСтроку();
   ТекстЗапроса = "
   |SELECT
   |    IDDoc [Документ $Документ]
   |    ,IdDocDef Документ_вид
   |   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
   |   ,lineno_ НомерСтроки_
   |    ,Автор [Автор $Справочник.Сотрудники]                
   |    ,Клиент [ Клиент $Справочник.Клиенты]        
   |    ,'' as ЦенаПрих
   |    ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
   |    ,КатегорияЦены as [КатЦены $Перечисление.ТипыЦен]
   |    ,    '' as МинЦена
   |    , 'Не встановлена ціна катгорії' as Ошибка
   |FROM (                        
   |SELECT
   |  Запрос.*
   | ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбыта
   |FROM  
   |(
   |   SELECT
   |       Жур.IDDoc as IDDoc
   |   ,   Жур.IdDocDef as IdDocDef
   |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
   |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
   |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
   |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС                        
   |   ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
   |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
   |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент
   |   ,   $Доставка.КаналСбытаТТ 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
   |";      
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   ТбЗн2 = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
   
   //ТбЗн2.ВыбратьСтроки();
   //ТбЗн2.ВыбратьСтроку();
   ///    минцена=Окр(минцена*(1-Конт.Доставка.КаналСбытаТТ.ДопустимаяСкидка/100),2);
   ТекстЗапроса = "
     |SELECT
   |    IDDoc [Документ $Документ]
   |    ,IdDocDef Документ_вид      
   |   ,ТМЦ   [ТМЦ $Справочник.ТМЦ]
   |   ,lineno_ НомерСтроки_
   |    ,Автор [Автор $Справочник.Сотрудники]
   |    ,Клиент [ Клиент $Справочник.Клиенты]        
   |    ,'' as ЦенаПрих
   |    ,'' as МинКат
   |    ,'' as ЦенаДляаналаСбытаВ
   |    ,'' as КатегорияЦены
   |    ,    Запрос.МинЦена*(1-Запрос.Скидка/100) as МинЦена
   |    ,'має дуже малу ціну='
   |    +cast(cast(Запрос.СуммаСНДС / Запрос.Количество as numeric(15,2)) as varchar(255))
   |    +' мінімальна='
   |    +cast(cast(Запрос.МинЦена*(1-Запрос.Скидка/100) as numeric(15,2)) as varchar(255))
   |    ,Запрос.Клиент [ Клиент $Справочник.Клиенты]        
   |FROM (
   |SELECT
   |  Запрос.*
   |  ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Запрос.ТМЦ AND История.ID=Запрос.ИдентификаторИсторииЦены AND История.DATE<=Запрос.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) МинЦена
   |FROM  
   |(
   |   SELECT
   |       Жур.IDDoc as IDDoc
   |   ,   Жур.IdDocDef as IdDocDef
   |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
   |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
   |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
   |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС                        
   |   ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
   |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен  
   |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент
   |   ,   $Доставка.КаналСбытаТТ 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)
   |";                        
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);                        
   ТбЗн3 = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
   //ТбЗн3.ВыбратьСтроку();
   //Первая1 =
   ТбРазом = СоздатьОбъект("ТаблицаЗначений");
   ТбЗн.Выгрузить(ТбРазом);
   
   ТбРазом.КоличествоСтрок(ТбРазом.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+ТбЗн3.КоличествоСтрок());
   ТбРазом.Заполнить(ТбЗн2, ТбЗн.КоличествоСтрок()+1);
   ТбРазом.Заполнить(ТбЗн3, ТбЗн.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+1);
   
   ТбРазом.ВыбратьСтроку();
   ТбРазом.ВыбратьСтроки();
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица1");
   Таб.ВывестиСекцию("Шапка");
   Таб.Опции(0,0,Таб.ВысотаТаблицы());
   Предыдущий = СоздатьОбъект("Документ");
   Пока(ТбРазом.ПолучитьСтроку()=1) Цикл
       Если ТбРазом.Документ<>Предыдущий тогда
           Предыдущий = ТбРазом.Документ;
           Таб.ВывестиСекцию("Документ");
       Конецесли;
       Если Подр=1 тогда
           Таб.ВывестиСекцию("Ошибка");
       КонецЕсли;                
       Таб.ВывестиСекцию("Ошибочка");
   КонецЦикла;
   Таб.ТолькоПросмотр(1);
   //Таб.Защита(0);        ;
   //Таб.ОбластьПечати(2);    
   Таб.Показать("Журнал-документов: ("+ПериодСтр(ДатаС, ДатаПо)+")", );
81 Ёпрст
 
27.03.13
15:18
А нафига 3 запроса ?
:))
Кто там про юнион то говрил ?
82 Ёпрст
 
27.03.13
15:18
Что написано в ячейке Таблицы ?
83 bananan
 
27.03.13
15:19
(82) ТбРазом.Клиент тип - выражение
ТбРазом.Ошибка тип - выражение
84 bananan
 
27.03.13
15:21
(82) а вот как объеденить эти три запроса в один я НЕ знаю :(
85 Privalov
 
27.03.13
15:26
Мля, ну сколько можно.... )))))))
86 bananan
 
27.03.13
15:29
(85) А кроме Мля ты ничего сказать не можешь?
87 Анна_84
 
27.03.13
15:35
(85) попкорн кончился? )))
88 ЧеловекДуши
 
27.03.13
15:39
Интересно, может банан Бот? Просто все вопросы св точности совпадают с прошлыми ветками, а Ёпрст так же отвечает теми же ответами :)
89 bananan
 
27.03.13
15:40
(88) Пример приведи и не патякай!
90 ЧеловекДуши
 
27.03.13
15:43
Интеллектуальный бот, он со мной говорит О_о :)
+(89) Пример чего? все что тут тебе подсказывают, уже было много раз... запрос я посмотрю тот же, только ты не изошёлся до вывода какой-то таблицы... иже там не в состоянии чего-то вывести, ты вообще 1С читал, лили так, решил с наскока все осилить :)
91 bananan
 
27.03.13
15:46
(90) ДушаБота патякает пример "Просто все вопросы св точности совпадают с прошлыми ветками, а Ёпрст так же отвечает теми же ответами ", а не лей свою желч...
92 Ёпрст
 
27.03.13
15:52
(84) ну, если не в даваться в подробности и оптимизацию запроса - то тупо union all воткнуть между ними всеми.
93 Ёпрст
 
27.03.13
15:52
ну и типизацию с последних двух убрать.
94 bananan
 
27.03.13
15:55
(92) Елси не трудно покажи как это делается? Я такого никогда раньше не делал..
95 Ёпрст
 
27.03.13
16:01
(94)

select
b,a
from table1
union all
select
n,an
from table2
....
select
aa,nn
from tableN
96 bananan
 
27.03.13
16:08
(95) Да и это в данный момент не так важно с обэдинением запросов можно подождать,  вот почему в таблицу у меня поля не выводятся?
97 Ёпрст
 
27.03.13
16:11
[ Клиент тут пробел убери
98 Ёпрст
 
27.03.13
16:13
а чего не выводится ? а чего пишет при выводе ?
Поменяй на тип ячейки Шаблон сохрани - смени на выражение, или скопируй "работающую" ячейку и поменяй в ней текст на нужный.
99 bananan
 
27.03.13
16:14
(97) с клиетном сработало, а что делать с Ошибка?
100 Ёпрст
 
27.03.13
16:19
(99) а что с ней не так ?
101 bananan
 
27.03.13
16:23
в таблице (та что на печать и т.д.) выводит в той ячейке:
ТбРазом.Ошибка (в данной ячейке у меня стоит выражение....
Упс, опять пардон там я не выраждение выводил а просто текст.. Так что все вроде бы нормально. Спасибо!!
102 bananan
 
27.03.13
16:37
+ Оказывается это еще не все... Короче мне надо еще показывать %, он вычисляется так ЦенаВДокуменет/приходнуюцену*100, но иногда приходная цена равна =0 ну и это глючит, как выбрать с цсловием (where если я не ошибаюсь), кто может покажите пожалуйста..
103 bananan
 
27.03.13
16:38
+(102) не вера, а касе ... :(
104 bananan
 
27.03.13
16:46
+(103) пробывал так:
|SELECT
   |    Данные.IDDoc as [Документ $Документ]
   |,   Данные.IdDocDef as Документ_вид
   |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
   |,   Данные.lineno_ as НомерСтроки_
   |,   Данные.Автор as [Автор $Справочник.Сотрудники]
   |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
   |,   Данные.Цена_Прих
   |,   '' as МинКат
   |,   '' as ЦенаДляКаналаСбытаВ
   |,     '' as КатегорияЦены                              
   |,     '' as МинЦена
   |,     Данные.СуммаСНДС / Данные.Количество as ЦенаТовара
   |,   case Данные.Цена_Прих
   |    WHEN  Данные.Цена_Прих=0 then 0
   |    WHEN  Данные.Цена_Прих<>0 then (ЦенаТовара/Данные.Цена_Прих-1)*100 end as Проц
   |,   'має ціну нижчу за прихідну' as Ошибка            
   |from (
выдает:
Incorrect syntax near '='.
105 Ёпрст
 
27.03.13
16:52
в какой строке то хоть?
тут ошибок нема
106 Ёпрст
 
27.03.13
16:53
а ёпт, увидел ошибку..
107 Ёпрст
 
27.03.13
16:53
:))
108 Ёпрст
 
27.03.13
16:53
Если че, ЦенаТовара - нет такого поля.
109 bananan
 
27.03.13
16:55
(108_) аэто что:    |,     Данные.СуммаСНДС / Данные.Количество as ЦенаТовара
110 Ёпрст
 
27.03.13
16:56
:)))
111 Ёпрст
 
27.03.13
16:57
Ну как тебе сказать то попроще ?
У тебя в этом селекте есть только
Данные.СуммаСНДС / Данные.Количество
ЦенаТовара появится на выходе - так скуль назовёт эту колонку
По этому имени ты сможешь только во внешнем запросе обратится, к примеру.
112 Дык ё
 
27.03.13
17:03
(111) не только. можно в order by, например. а ошибка у него между case и when
113 bananan
 
27.03.13
17:04
(111) А как это правильно написать?
114 Дык ё
 
27.03.13
17:04
+(112) два варианта синтаксиса смешаны, короче
115 Ёпрст
 
27.03.13
17:05
(112) не во всех языках можно алияс в ордер бай кидать - где-то не прокатывало.
116 Ёпрст
 
27.03.13
17:07
|,   case Данные.Цена_Прих
   |    WHEN  0 then 0
   |    Else  ((Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц
117 bananan
 
27.03.13
17:07
Ребята, ну очень надо |SELECT
   |    Данные.IDDoc as [Документ $Документ]
   |,   Данные.IdDocDef as Документ_вид
   |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
   |,   Данные.lineno_ as НомерСтроки_
   |,   Данные.Автор as [Автор $Справочник.Сотрудники]
   |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
   |,   Данные.Цена_Прих
   |,   '' as МинКат
   |,   '' as ЦенаДляКаналаСбытаВ
   |,     '' as КатегорияЦены                              
   |,     '' as МинЦена
   |,     Данные.СуммаСНДС / Данные.Количество as ЦенаТовара
   |,   case Данные.Цена_Прих
   |    WHEN  Данные.Цена_Прих=0 then 0
   |    WHEN  Данные.Цена_Прих<>0 then (ЦенаТовара/Данные.Цена_Прих-1)*100 end as Проц
   |,   'має ціну нижчу за прихідну' as Ошибка            
   |from (
   |   SELECT
   |       Жур.IDDoc as IDDoc
   |   ,   Жур.IdDocDef as IdDocDef
   |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
   |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
   |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
   |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
   |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент
   |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.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($ДокС.ТМЦ, $ДокН.ТМЦ)
   |   Left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная        
   |   Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН
   |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
   |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
   |) Данные
   |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2)
   |";                        
   
вот это правильно написать... ПОМОГИТЕ....
118 bananan
 
27.03.13
17:11
(116) Спасибо!
119 bananan
 
27.03.13
17:21
Извините, а как на выходе округлить значение? На выходе - в таблице, той что показываю на экране....
120 Анна_84
 
27.03.13
17:37
(119)
ТвоеЗначение#Ч5.2
Окр(ТвоеЗначение,2,0)
Формат(ТвоеЗначение,"Ч5.2")
121 Ёпрст
 
27.03.13
17:37
(120) новый фанат в клубе бананана ?
:)
122 Анна_84
 
27.03.13
17:40
(121) я давно наблюдаю )))
123 bananan
 
27.03.13
18:00
+(119) С округлением уже сам вспомнил...
124 bananan
 
27.03.13
18:00
+(123) Анна, спасибо
125 Mikeware
 
27.03.13
18:01
(123) ну, через 23 минуты после подсказки довольно легко вспомнить...
126 Ёпрст
 
27.03.13
18:05
Видать слишком большой зрительный нерв..или тупо мозги зависли - пришлось рестартовать.
127 Ёпрст
 
27.03.13
18:05
+время на разогрев, промывку..вот 23 минуты и пришло оно - озарение
128 bananan
 
27.03.13
18:09
(125) Вспомнил я раньше, просто сюда написал через 23 минуты...
129 Ёпрст
 
27.03.13
18:10
Т.е через 23 минуты вспомнил, что сюда написать надо ?
Силён!
130 bananan
 
27.03.13
18:28
(129) Уж извините. но я не всегда помню о форуме...
131 batman69
 
27.03.13
18:29
Ну,  в натуре, сколько можно уже ?
132 sapphire
 
27.03.13
19:26
Таки Флавий интересней пишет:)
133 Mikeware
 
27.03.13
19:41
(132) запросы пишет? :-)
134 bananan
 
28.03.13
11:36
Доброе утро всем! Объяните мне, пожалйста, кто может...
На данный момент текст запроса у меня такой:
|SELECT
       |    Данные.IDDoc as [Документ $Документ]
       |,   Данные.IdDocDef as Документ_вид
       |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
       |,   Данные.lineno_ as НомерСтроки_
       |,   Данные.Автор as [Автор $Справочник.Сотрудники]
       |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
       |,   Данные.Цена_Прих        
       |,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
       |,   'має ціну нижчу за прихідну' as Ошибка
       |from (
       |   SELECT
       |       Жур.IDDoc as IDDoc
       |   ,   Жур.IdDocDef as IdDocDef
       |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
       |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
       |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
       |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
       |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
       |    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |    ,   $Доставка.КаналСбытаТТ as КаналСбыта
       |    ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
       |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.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 $Документ.РасходнаяНакладная 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)
       |";  
Всего 37 строк. ТАк вот выдает:
ERT(45)}: Meta name parser error: неизвестное метаимя или алиас "$Доставка"
Где в моем запросе 45-я строка?
135 Mikeware
 
28.03.13
11:38
Отладка(1)
136 Ёпрст
 
28.03.13
11:39
(134)
от тута
$Доставка.КаналСбытаТТ as КаналСбыта
137 bananan
 
28.03.13
11:42
(136) Вопрос, почему парсер сообщает что ошибка в 45-й строке..., второй вопрос:
|    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |    ,   $Доставка.КаналСбытаТТ as КаналСбыта
       
т.е. Доставку я сначала поределяю, а уже после этого обращаюсь к ней... Что неправильно?
138 F00FC7C88
 
28.03.13
11:42
Опять прямой запрос! Опять Юмор! Ну просто мальчик Банана )
139 Ёпрст
 
28.03.13
11:47
(137) подумай, что есть $Доставка у тебя
140 Ёпрст
 
28.03.13
11:48
если че, таблички Доставка во from и в соединениях у тебя нема.
141 bananan
 
28.03.13
11:51
(138) Что бы мы без твоих умных и главное уместнх замечаний делали...
142 ЧеловекДуши
 
28.03.13
11:53
(141) Скоро пятница, ты там уже место занял :)
143 Mikeware
 
28.03.13
11:53
(140) ...и мы возвращаемся на 3 месяца назад :-)))
144 viktor_vv
 
28.03.13
11:54
(135) Если он увидит, что выдаст отладка(1), это может взорвать ему мозг.
145 ЧеловекДуши
 
28.03.13
11:54
(144) Мозх, а он есть О_о...
146 viktor_vv
 
28.03.13
11:55
(145) Ну я не подумавши ляпнул :).
147 ЧеловекДуши
 
28.03.13
11:57
(140) Эхх... широкой души ты :)
Он как бы уже с прошлых двух веток должен был понять, что такое псевдонимы для 1С++ в виде "$Доставка"...
Но судя по вопросам, он так и осилил :(
148 ЧеловекДуши
 
28.03.13
11:57
(147) осилил -> НЕ осилил
149 bananan
 
28.03.13
12:44
Что-то я совсем запутался.. :(
Текст запроса на данный момент такой:
ТекстЗапроса = "            
       |SELECT
       |    Данные.IDDoc as [Документ $Документ]
       |,   Данные.IdDocDef as Документ_вид
       |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
       |,   Данные.lineno_ as НомерСтроки_
       |,   Данные.Автор as [Автор $Справочник.Сотрудники]
       |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
       |,   Данные.Цена_Прих                                                                              
       |,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
       |,     ROUND(Данные.СуммаСНДС/Данные.Количество, 2) as ЦенаТовара
       |,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |,   $Доставка.КаналСбытаТТ as КаналСбыта
       |,   case $КаналСбыта.КатегорияЦены  
       |          when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
       |          when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
       |          when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
       |       when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
       |       when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
       |       when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
       |       when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
       |       when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
       |       when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
       |       ELSE '    ' END ИдентификаторИсторииЦены
       |    ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
       |,   'має ціну нижчу за прихідну' as Ошибка                                                        
       |from (
       |   SELECT
       |       Жур.IDDoc as IDDoc
       |   ,   Жур.IdDocDef as IdDocDef
       |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
       |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
       |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
       |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
       |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
       |    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |    ,   $Доставка.КаналСбытаТТ as КаналСбыта
       |    ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
       |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.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 $Документ.РасходнаяНакладная 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+Данные.Ставка),2)
       |";                        
   
РУгается он:
The column prefix 'ДокШН' does not match with a table name or alias name used in the query.
150 Ёпрст
 
28.03.13
12:46
(149)
// |,   $Доставка.КаналСбытаТТ as КаналСбыта

это для начала
151 Ёпрст
 
28.03.13
12:47
причем, в 2-х местах
152 bananan
 
28.03.13
12:49
(151) Заремарил в двух местах : //|    ,   $Доставка.КаналСбытаТТ as КаналСбыта все-равно выдает:
The column prefix 'ДокШН' does not match with a table name or alias name used in the query.
153 bananan
 
28.03.13
12:53
+(152) Но ведь ДокШН у меня определяется:
|   Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
154 vinogradъ
 
28.03.13
12:54
(152) нет у тебя в первом select'e ни таблицы $ДокШН, ни $ДокШ, $Доставка, ни $КаналСбыта. Есть только Данные.
155 bananan
 
28.03.13
12:56
(154) Что-то я сегодня уж совем торможу, т.е . надо $ДокШН писать как $Доставка.ДокШН ну и все остальные так же?
156 viktor_vv
 
28.03.13
12:58
(155) Не надо так писать.
Вместо

       |,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |,   $Доставка.КаналСбытаТТ as КаналСбыта

в верхнем селекте

напиши одну строку

       |,   Данные.КаналСбыта as КаналСбыта
157 viktor_vv
 
28.03.13
12:59
Ну и вместо

|,   case $КаналСбыта.КатегорияЦены  

пиши

|,   case Данные.КатегорияЦены
158 viktor_vv
 
28.03.13
13:00
А то аж больно смотреть на твои мучения.
159 Mikeware
 
28.03.13
13:09
(158) это не мучения....
это издевательство....
160 bananan
 
28.03.13
13:44
(156, 157) Написал так:
|SELECT
       |    Данные.IDDoc as [Документ $Документ]
       |,   Данные.IdDocDef as Документ_вид
       |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
       |,   Данные.lineno_ as НомерСтроки_
       |,   Данные.Автор as [Автор $Справочник.Сотрудники]
       |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
       |,   Данные.Цена_Прих                                                                              
       |,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
       |,     ROUND(Данные.СуммаСНДС/Данные.Количество, 2) as ЦенаТовара
         |,   Данные.КаналСбыта as КаналСбыта    
       |,   case Данные.КатегорияЦены  
       |          when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
       |          when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
       |          when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
       |       when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
       |       when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
       |       when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
       |       when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
       |       when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
       |       when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
       |       ELSE '    ' END ИдентификаторИсторииЦены
       |    ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
       |,   'має ціну нижчу за прихідну' as Ошибка                                                        
       |from (
       |   SELECT
       |       Жур.IDDoc as IDDoc
       |   ,   Жур.IdDocDef as IdDocDef
       |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
       |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
       |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
       |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
       |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
       |    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |    ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
       |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.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 $Документ.РасходнаяНакладная 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+Данные.Ставка),2)
       |";                        
Выдает:
Invalid column name 'КаналСбыта'.
161 Ёпрст
 
28.03.13
13:49
Шо опять ?!

Ну воткни ты строчку
|    ,   $КаналСбыта.id as КаналСбыта

наконец.. даже по пробелам не сложно догадаться куда именно
162 bananan
 
28.03.13
13:52
(161) По пробелам да и так просто недогадываюсь куда именно ее втыкать, сейчас буду пробывать...
163 Ёпрст
 
28.03.13
13:52
Используй метод научного тыка!
164 bananan
 
28.03.13
13:54
+(162) Блин - не понимаю, втыкнул во втрой селект, выдает:
Meta name parser error: поле таблицы не найдено "$КаналСбыта.id"
165 bananan
 
28.03.13
13:55
+(164) А кроме как во втройм селекте это вроде и некуда втыкать... :(
166 Ёпрст
 
28.03.13
13:55
(164)
ага, $ убери
167 bananan
 
28.03.13
13:58
(166) Уши вытянул - хвост завяз... теперь выскакивает:Invalid column name 'ИдентификаторИсторииЦены'.
168 Ёпрст
 
28.03.13
14:00
(167) ИдентификаторИсторииЦены,
169 bananan
 
28.03.13
14:00
(168) Не понял
170 Ёпрст
 
28.03.13
14:01
(169) нам отсюда не видно - куда ты новую строчку воткнул - до или после.. вот зпт где-то потерялась
171 bananan
 
28.03.13
14:02
(170) Опять показываю полный текст:
  |SELECT
       |    Данные.IDDoc as [Документ $Документ]
       |,   Данные.IdDocDef as Документ_вид
       |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
       |,   Данные.lineno_ as НомерСтроки_
       |,   Данные.Автор as [Автор $Справочник.Сотрудники]
       |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
       |,   Данные.Цена_Прих                                                                              
       |,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
       |,     ROUND(Данные.СуммаСНДС/Данные.Количество, 2) as ЦенаТовара
         |,   Данные.КаналСбыта as КаналСбыта    
       |,   case Данные.КатегорияЦены  
       |          when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
       |          when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
       |          when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
       |       when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
       |       when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
       |       when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
       |       when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
       |       when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
       |       when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
       |       ELSE '    ' END ИдентификаторИсторииЦены
       |    ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
       |,   'має ціну нижчу за прихідну' as Ошибка                                                        
       |from (
       |   SELECT
       |       Жур.IDDoc as IDDoc
       |   ,   Жур.IdDocDef as IdDocDef
       |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
       |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
       |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
       |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
       |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
       |    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |    ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
       |   ,   КаналСбыта.id as КаналСбыта
       |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.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 $Документ.РасходнаяНакладная 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+Данные.Ставка),2)
       |";                        
Вроде там запятая не нужн... :(
172 Ёпрст
 
28.03.13
14:05
(171) вот тут махер:

cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY
173 Ёпрст
 
28.03.13
14:07
а ну да, так и есть.. из вложенного запроса ты это поле накой-то вырезал
174 Ёпрст
 
28.03.13
14:08
если че, вот этого не хватат
   |   ,   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 ИдентификаторИсторииЦены
175 bananan
 
28.03.13
14:14
(173) Из вложеного я его вырезал потому что теперь это поле наужно в резудтирующей таблице...
(174) Так это же у меня есть :
       |,   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 ИдентификаторИсторииЦены

Раньше было как ты сейчас пишеш, но исправил на то что есть сейчас вроде тоже по твоему совету...
176 Ёпрст
 
28.03.13
14:15
да уж.
177 Ёпрст
 
28.03.13
14:15
я такое не советовал как бэ.
178 bananan
 
28.03.13
14:19
(177) А , извини советовал не ты, а viktor_vv
179 bananan
 
28.03.13
14:19
(177) Так что исправить назад, т.е. на то ка ты написал в (174)?
180 Ёпрст
 
28.03.13
14:21
желательно
181 bananan
 
28.03.13
14:24
(180) Сегодня - не морй день, написал как ты и посоветовал, выдает:
The column prefix 'КаналСбыта' does not match with a table name or alias name used in the query.
182 Ёпрст
 
28.03.13
14:30
нам отсюда текста запроса не видно
183 bananan
 
28.03.13
14:32
(182) Полній тест запроса:

       |SELECT
       |    Данные.IDDoc as [Документ $Документ]
       |,   Данные.IdDocDef as Документ_вид
       |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
       |,   Данные.lineno_ as НомерСтроки_
       |,   Данные.Автор as [Автор $Справочник.Сотрудники]
       |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
       |,   Данные.Цена_Прих                                                                              
       |,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
       |,     ROUND(Данные.СуммаСНДС/Данные.Количество, 2) as ЦенаТовара
         |,   Данные.КаналСбыта as КаналСбыта    
       |,   case $КаналСбыта.КатегорияЦены  
       |          when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
       |          when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
       |          when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
       |       when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
       |       when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
       |       when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
       |       when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
       |       when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
       |       when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
       |       ELSE '    ' END ИдентификаторИсторииЦены
       |    ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
       |,   'має ціну нижчу за прихідну' as Ошибка                                                        
       |from (
       |   SELECT
       |       Жур.IDDoc as IDDoc
       |   ,   Жур.IdDocDef as IdDocDef
       |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
       |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
       |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
       |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
       |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
       |    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |    ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
       |   ,   КаналСбыта.id as КаналСбыта
       |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.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 $Документ.РасходнаяНакладная 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+Данные.Ставка),2)
       |";
184 Ёпрст
 
28.03.13
14:38
вот это верни взад где и было - во вложенном селекте

   |,   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 ИдентификаторИсторииЦены
185 bananan
 
28.03.13
14:41
Веорнул:
|SELECT
       |    Данные.IDDoc as [Документ $Документ]
       |,   Данные.IdDocDef as Документ_вид
       |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
       |,   Данные.lineno_ as НомерСтроки_
       |,   Данные.Автор as [Автор $Справочник.Сотрудники]
       |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
       |,   Данные.Цена_Прих                                                                              
       |,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
       |,     ROUND(Данные.СуммаСНДС/Данные.Количество, 2) as ЦенаТовара
         |,   Данные.КаналСбыта as КаналСбыта    
       |,   case $КаналСбыта.КатегорияЦены  
       |          when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
       |          when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
       |          when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
       |       when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
       |       when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
       |       when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
       |       when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
       |       when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
       |       when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
       |       ELSE '    ' END ИдентификаторИсторииЦены
       |    ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
       |,   'має ціну нижчу за прихідну' as Ошибка                                                        
       |from (
       |   SELECT
       |       Жур.IDDoc as IDDoc
       |   ,   Жур.IdDocDef as IdDocDef
       |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
       |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
       |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
       |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
       |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
       |    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |    ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
        |,   case $КаналСбыта.КатегорияЦены  
       |          when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
       |          when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
       |          when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
       |       when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
       |       when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
       |       when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
       |       when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
       |       when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
       |       when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
       |       ELSE '    ' END ИдентификаторИсторииЦены
       |   ,   КаналСбыта.id as КаналСбыта
       |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих
       |   ,   $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка
       |   ,   $ОбщийРеквизит.Автор as Автор
       |   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+Данные.Ставка),2)
       |";                        
Кака была така есть:
The column prefix 'КаналСбыта' does not match with a table name or alias name used in the query
186 Mikeware
 
28.03.13
14:44
(181) "Сегодня - не морй день"...
Эх, если бы только это...
я б обобщил: "сейчас - не твоя жизнь"
187 vinogradъ
 
28.03.13
14:44
(185) а из внешнего убери
188 vinogradъ
 
28.03.13
14:45
+(187) точнее замени на Данные.ИдентификаторИсторииЦены
189 bananan
 
28.03.13
14:46
(187) ИдентификаторИсторииЦены мне нужен во внешнем зпросе, или там к нему можно будет обрптиться так: Данные.ИдентификаторИсторииЦены?
190 bananan
 
28.03.13
14:48
+(189) Я сошла с ума, убрал и заменил, выдает:
Invalid column name 'ДатаДок'.
191 vinogradъ
 
28.03.13
14:49
(189) да, ИдентификаторИсторииЦены ты получил во вложенном запросе, который обозвал Данные и теперь можешь обратится к нему как Данные.ИдентификаторИсторииЦены
192 vinogradъ
 
28.03.13
14:49
(190) текст
193 bananan
 
28.03.13
14:51
(192)
|SELECT
       |    Данные.IDDoc as [Документ $Документ]
       |,   Данные.IdDocDef as Документ_вид
       |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
       |,   Данные.lineno_ as НомерСтроки_
       |,   Данные.Автор as [Автор $Справочник.Сотрудники]
       |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
       |,   Данные.Цена_Прих                                                                              
       |,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
       |,     ROUND(Данные.СуммаСНДС/Данные.Количество, 2) as ЦенаТовара
         |,   Данные.КаналСбыта as КаналСбыта    
       |,   Данные.ИдентификаторИсторииЦены
       |    ,cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
       |,   'має ціну нижчу за прихідну' as Ошибка                                                        
       |from (
       |   SELECT
       |       Жур.IDDoc as IDDoc
       |   ,   Жур.IdDocDef as IdDocDef
       |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
       |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
       |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
       |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
       |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
       |    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |    ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
       |,   case $КаналСбыта.КатегорияЦены  
       |          when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
       |          when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
       |          when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
       |       when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
       |       when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
       |       when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
       |       when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
       |       when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
       |       when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
       |       ELSE '    ' END ИдентификаторИсторииЦены
       |   ,   КаналСбыта.id as КаналСбыта
       |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих
       |   ,   $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка
       |   ,   $ОбщийРеквизит.Автор as Автор
       |   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+Данные.Ставка),2)
       |";
194 vinogradъ
 
28.03.13
14:54
во вложенном запросе добавь
,cast(left(Жур.date_time_iddoc, 8) as datetime) as ДатаДок
195 bananan
 
28.03.13
14:59
(194) Спасибо, теперь работает, буду дальше это запрос домучивать, (там теперь надо мног полей из внутренних запросов выташить во внещние, потому что эти поля нужны на вывод...), а запросов всего три, первый пока готов где-то на половину...
196 bananan
 
28.03.13
15:27
Блин, самому слабо вериться, но первый запрос (с вашей помощью уже готов на все 100%), приступаю уо второму запросу, если что - буду опять у вас помощи просить...
197 bananan
 
28.03.13
15:44
+(196) Опять же, слабо верится, но уже и второй, и третий запрос - готовы, покурю и собью все вместе :). Еще раз - ВСЕМ Огромное СПАСИБО!!!
198 viktor_vv
 
28.03.13
15:56
(197) Ну нихрена себе, тебя поперло :).
Ты че там куришь, что так прет.
201 bananan
 
28.03.13
17:35
(198) Опят же таки, можете не верить но все в кучу уже объеденил и оно работает, тут еще нарисовалось что надо добавить возможность выбора агента и возможность выбора склада. Визуальные компоненты на форму уже поставил, обработал различные нажатия (добавил соответствующие процедуры), теперь надо это озапросить.. Опять же - попробую сам, снова таки после перекура, не получиться, буду у вас просить помощи. //За ранее благодарен!
202 Ёпрст
 
28.03.13
17:50
(201) заодно откроешь для себя метод УложитьСписокОбъектов
203 bananan
 
28.03.13
18:00
(202) Что-то такое помню...
Так вот по поводу выбора агента и склада, ну есть они у меня (выбрал я их на форме) и... куда эти условия вставлять
в запросы?
204 bananan
 
28.03.13
18:03
+(203) оба поля и агент и склад находстся в шапке документа...
205 Ёпрст
 
28.03.13
18:03
(203)

в where вестимо
206 viktor_vv
 
28.03.13
18:03
(203) Можно конечно тактично промолчать, насчет куда вставлять :), но ты бы показал итоговый запрос.
207 Ёпрст
 
28.03.13
18:04
+ смотреть на вид соединения. возможно, для фильтра, придётся поменять left на inner
208 bananan
 
28.03.13
18:10
ко всему прочему если я выбираю Агент и Склад в запросе так:
|   ,   isnull($ДокШН.Агент, $ДокШ.Агент) as Агент
       |   ,   isnull($ДокШН.Склад, $ДокШ.Склад) as Склад
то в результате на мониторе в этих полях цифры (id наверное) а м вера надо id или текстовое значение соответствующей записи из справочника?
209 bananan
 
28.03.13
18:16
+ когда сделал типизацию в Таблицу значений вместо цифры идет название склада, ну и название клиента, так может подскажете что именно надо в where вставалять? Не подскажите... - чтож сам проверю что именно (айди или имя) :)
210 viktor_vv
 
28.03.13
18:20
|   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
       |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
and isnull($ДокШН.Агент, $ДокШ.Агент) = :Агент
211 viktor_vv
 
28.03.13
18:21
(210) Ну и там для не выбранного условия по простому можно так

|   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
       |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
and (isnull($ДокШН.Агент, $ДокШ.Агент) = :Агент or :Агент = $ПустойИД)
212 viktor_vv
 
28.03.13
18:22
(211)+ Если там в Агент предполагается и группы выбирать, то тут уже смотри в (202).
213 bananan
 
28.03.13
18:26
+(209) Начал сам пробывать, и сразу же наткнулся на непонятку... нашел запрос с похожи, но вот по агенту да и по клиенту там...:
Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");  
   
   Запрос.УложитьСписокОбъектов(ВыбКлиент, "#tmpKlient");  
   Запрос.УложитьСписокОбъектов(ВыбКлиент, "#tmpKlient2","Клиенты");  
Зачем (ВыбАгент, "#tmpAgent") а потом (ВыбАгент, "#tmpAgent2","Агент")?
214 bananan
 
28.03.13
18:28
(211) Дак я проде как и буду использовать УстановитьСписокОбъектов - группы там вроде тоже будут выбираться..
215 viktor_vv
 
28.03.13
18:28
(213) Волт это (ВыбАгент, "#tmpAgent") уложит только элементы списка, явно заданные, а вот это (ВыбАгент, "#tmpAgent2","Агент") с иерархией, если в списке будет группа.
216 viktor_vv
 
28.03.13
18:30
Для примера, у тебя выбрана группа, тогда

в таблице #tmpAgent будет одна запись с выбранной группой, а в таблице #tmpAgent2 столько записей, сколько элементов в группе, кажись сами группы не выгружает.
217 bananan
 
28.03.13
18:31
(215) Ну вроде вник, твое пояснение + есть подобный запрос, думаю сам справлюсь, но, опять же - не получится - надеюсь на вашу помощь!...
218 bananan
 
28.03.13
18:33
+Забыл, как мне вывести текст запроса? (что-то ему вое вера не нравиться...
219 viktor_vv
 
28.03.13
18:35
Ну в том варианте надо вообще-то
УстановитьТекстовыйПараметр() как ты даты задаешь.
220 Mikeware
 
28.03.13
18:35
(218) "у тебя память - как один килобайт. вроде и есть, и хрен чо запомнишь"©
221 viktor_vv
 
28.03.13
18:35
(219) Плюс ты его не туда таки вставил, скорее всего.
222 viktor_vv
 
28.03.13
18:36
(218) Ты ж этим методом постоянно и работаешь, copy-paste, как ты мог его забыть :).
223 Mikeware
 
28.03.13
18:37
(221) "не туда и  не тогда"
224 bananan
 
28.03.13
19:05
Mikeware и к чему твои "реплики"?
(219) Сейчас попробую УстановитьТекстовыйПараметр(), я пробывал УложитьСписокОбъектов...
(221) За одно и проверю туда ли я вставил условие.... я вставлял уловие сюда:
|   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
       |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
225 viktor_vv
 
28.03.13
19:08
(224) Ну да, во вложенный запрос.
226 bananan
 
28.03.13
19:09
+(224) Вроде все правильно сделал, но ругается он:
Incorrect syntax near ')'.
Ругается на этих строках:
|   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
       |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
       | AND "+ ?(ВыбАгент.РазмерСписка()>0," ((Агент IN (SELECT Val FROM #tmpAgent)) or (Агент IN (SELECT Val FROM #tmpAgent2)))","")+"    
... мне и самому с самого начала не понравилось как я добавил проверку на агента... Вот теперь мне ОЧЕНЬ нужна ваша помощь...
227 Mikeware
 
28.03.13
19:11
(226) в чем помощь? операнды посчитать?
228 Mikeware
 
28.03.13
19:12
феерический тупица.
у меня даже сил ржать больше нету...
229 viktor_vv
 
28.03.13
19:13
(226) Ну в твоем случае достаточно одного

(Агент IN (SELECT Val FROM #tmpAgent2)
вряд ли у тебя в реквизите документа группу выбирают.

А скобки, таки да, сам считай.
230 viktor_vv
 
28.03.13
19:13
(229)+ Это если (ВыбАгент, "#tmpAgent2","Агент").
231 bananan
 
28.03.13
19:21
... Снова таки, может я в коде 1с неправильно что пишу... В данном случае я пробую (Агент) на Первом из трех запросов:
код у меня получился такой:
AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
       |       AND ((:Агент IN (SELECT Val FROM #tmpAgent)) or (:Агент IN (SELECT Val FROM #tmpAgent2)))
       |) Данные
       |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2)
       |";            
       ////| "+ ?(ВыбАгент.РазмерСписка()>0," WHERE ((Агент IN (SELECT Val FROM #tmpAgent)) or (Агент IN (SELECT Val FROM #tmpAgent2)))","")+"    
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);  
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);
   КонецЕсли;
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  
   КонецЕсли;
232 bananan
 
28.03.13
19:33
В результате... Запрос вроде и работает, но выдате он явно не то что надо...
233 bananan
 
29.03.13
11:27
Сегодня перепроверил - вроде выдает то что надо. Пожалйста посмотритк (231) - так правильно писать?
234 bananan
 
29.03.13
11:27
+ну и текст запроса - там тоже код немного изменен...
235 sapphire
 
29.03.13
11:30
О... ему уже времянки подсунули... Куда катится мир...
236 bananan
 
29.03.13
11:31
(235) Ты о чем? Никто ничего мне не подсовывал...
237 bananan
 
29.03.13
11:46
И как (я забыл) посмотреть какой текст запроса после парсера попадает на сервер?
238 bananan
 
29.03.13
11:50
+И корректно ли Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);
   КонецЕсли;
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  
       Запрос.УложитьСписокОбъектов(ВыбСклад, "#tmpAgent2","Агент");  
   КонецЕсли;
239 sapphire
 
29.03.13
11:50
ОбрМетаСКЛ
240 bananan
 
29.03.13
11:56
(239_ А что такое "ОбрМетаСКЛ"?
241 vinogradъ
 
29.03.13
11:58
(237) Запрос.Отладка(1)
242 bananan
 
29.03.13
11:58
(241) Спасибо!
243 vinogradъ
 
29.03.13
11:59
(238) нет
244 bananan
 
29.03.13
12:01
(243) А как правильно? Я уже и понял что это неправильно, скорее всего, потому что запрос возвращает не то что должен возвращать...
245 viktor_vv
 
29.03.13
12:03
(244) Ну и чего ж ты в одну и ту же временную таблицу разные данные суешь, оно ж перезаписывается.
Для разных реквизитов условий, разные имена временных таблиц не судьба придумать ?
246 bananan
 
29.03.13
12:04
Ты о (238)?
247 viktor_vv
 
29.03.13
12:04
(245)+ Ну и ты опять нихрена доку не читаешь, тупо из примера скопипастил и вперед.
248 viktor_vv
 
29.03.13
12:05
(246) Да.
Ну и в (231)  зачем одно и тоже укладывать несколько раз, для надежности что-ли ?
249 bananan
 
29.03.13
12:06
(247) Да скопипастил, в данном случае - некогда доку читать... В том примере я не понял почему:
Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  
Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
Т.е. неясно что происходит в первой строчке, а что во второй....
250 viktor_vv
 
29.03.13
12:06
(246) Скопируй сюда описание для УложитьСписокОбъектов(), может хоть так читать будешь.
251 bananan
 
29.03.13
12:07
(248) Что там повтор дубль и т.д. я уже и сам заметил, его без проблем уберу..
252 viktor_vv
 
29.03.13
12:08
(249) То есть у тебя времени доку читать нет, а у нас исправлять тупые ошибки, возникающие от нежелания читать доку, значит есть.
Нормальный ход.
253 vinogradъ
 
29.03.13
12:09
бггг, пусть хоть здесь почитает

ODBCRecordSet :: УложитьСписокОбъектов / PutObjectList

Синтаксис: УложитьСписокОбъектов(Список, ИмяТаблицы, [ВидЭлементов])

Параметры:

Список - тип: СписокЗначений, Справочник, Счет. Объект, содержание которого будет отправляться на сервер. Если передан список значений, во врем. таблицу попадает содержимое списка. Допустимо также передавать группу справочника, элемент справочника, группу счетов, счет - в этом случае во временную таблицу поступает переданное значение, однако если указан ВидЭлементов (вид справочника, или план счетов), то будет попытка включить в таблицу все подчененные элементы.
ИмяТаблицы - тип: Строка. Имя временной таблицы.
ВидЭлементов - тип: Строка. Вид справочника для иерархического включения элементов или вид плана счетов для иерархического включения счетов. Если параметр не указан, иерархического включения не происходит.
Описание: сохраняет список внутренних идентификаторов объектов во временной таблице MS SQL. Идентификаторы объектов из списка сохраняются во временной таблице в поле val char(9). Имя таблицы должно начинаться с символа "#".

Если указан вид ВидЭлементов - идентификатор иерархического справочника, то таблица будет содержать элементы, иерархически принадлежащие группам переданным в списке. (Подобно оператору "в" стандартного языка запросов 1С.)

Замечание: метод допустимо применять только для источника данных Microsoft SQL Server.
254 bananan
 
29.03.13
12:11
(252) Да не так, не перевораяивай с ног на голову... Если не хотите - не исправляйте...
В данный момент код на первый запрос у меня такой:
ТекстЗапроса = "
       |SELECT
       |    Данные.IDDoc as [Документ $Документ]
       |,   Данные.IdDocDef as Документ_вид
       |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
       |,   Данные.lineno_ as НомерСтроки_
       |,   Данные.Автор as [Автор $Справочник.Сотрудники]
       |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
       |,   Данные.Цена_Прих                                                                              
       |,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
       |,     ROUND(Данные.СуммаСНДС/Данные.Количество, 2) as ЦенаТовара
         |,   Данные.КаналСбыта as КаналСбыта
         |,     Данные.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен]
       |,   Данные.ИдентификаторИсторииЦены
       //|,   Данные.Агеннт [Агент $Справочник.Агент]
       |,     cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
       |,   case Данные.Цена_Прих
       |        WHEN  0 then 0
       |    ELSE ((Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц
       |,   'має ціну нижчу за прихідну' as Ошибка                                                        
       |from (
       |   SELECT
       |       Жур.IDDoc as IDDoc
       |   ,   Жур.IdDocDef as IdDocDef
       |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
       |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
       |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
       |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
       |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
       |    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агеннт        
       |    ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
       |,   case $КаналСбыта.КатегорияЦены  
       |          when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
       |          when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
       |          when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
       |       when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
       |       when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
       |       when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
       |       when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
       |       when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
       |       when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
       |       ELSE '    ' END ИдентификаторИсторииЦены
       |   ,   КаналСбыта.id as КаналСбыта
       |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих
       |   ,   $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка
       |   ,   $ОбщийРеквизит.Автор as Автор
       |    ,cast(left(Жур.date_time_iddoc, 8) as datetime) as ДатаДок
       |   FROM _1SJourn as Жур (nolock)
       |   Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН
       |   Left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
       |   left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка)
       |   left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ
       |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
       |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
       Если ВыбАгент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" AND ((:Агент IN (SELECT Val FROM #tmpAgent)) or (:Агент IN (SELECT Val FROM #tmpAgent2)))";
       КонецЕсли;
       ТекстЗапроса = ТекстЗапроса +"
       |) Данные
       |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2)
       |";            
       ////    
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);  
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);
   КонецЕсли;
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
   КонецЕсли;
   ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
   Запрос.Отладка();
Но он явно возвращает не то что должен бы возвращать, к примеру, я выбрал Агента "Бобер", а в результирующий набор входят документы в которых разные агенты...
255 vinogradъ
 
29.03.13
12:13
Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);  
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);
   КонецЕсли;
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  

       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");

   КонецЕсли;


читай (253)
256 bananan
 
29.03.13
12:13
(253) Прочитал, спасибо, но мне, в конце концов проще разбираться на конкретном примере, чем читать теорию..
257 viktor_vv
 
29.03.13
12:14
(254) Че это я переврал, вот втои слова.
"Да скопипастил, в данном случае - некогда доку читать... В том примере я не понял почему:"
258 bananan
 
29.03.13
12:14
(255) вот код с моего скрипта:
Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);  
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);
   КонецЕсли;
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
   КонецЕсли;
Вроде так же как и у тебя...
259 viktor_vv
 
29.03.13
12:15
(254) Пля, ну ведь выше давал нормально, ну откуда в товем больнном воображении взялось вот это

ТекстЗапроса = ТекстЗапроса +" AND ((:Агент IN (SELECT Val FROM #tmpAgent)) or (:Агент IN (SELECT Val FROM #tmpAgent2)))";
260 vinogradъ
 
29.03.13
12:15
(258) это я твой скопировал), чтобы смотрел на него, читая доку
261 bananan
 
29.03.13
12:16
(257) Я и не говорил что ты что-то переврал, просто быстрее услышать дельный совет или подсказку по конкретному вопросу, чем искать ответ на этот вопрос в доке...
262 viktor_vv
 
29.03.13
12:17
(259) Вот для параметра

|   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
       |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)
and isnull($ДокШН.Агент, $ДокШ.Агент) = :Агент

для списка надо было =:Агент  заменить на in Select
263 bananan
 
29.03.13
12:17
(259) А как иначе в текст запроса вставить условие на выборку если оно нужно?
264 bananan
 
29.03.13
12:18
(262) т.е. заменить: ТекстЗапроса +" AND ((:Агент IN (SELECT Val FROM #tmpAgent)) or (:Агент IN (SELECT Val FROM #tmpAgent2)))"; на
(262)?
А как занть список или не список?
265 viktor_vv
 
29.03.13
12:19
(261) Неправильно, когда ты ответ найдешь в доке, то есть вероятность, что ты поймешь причинно-следственную связь между твоими действиями и полученным результатом, а так ты тупо подбором подходящих по начертанию символов пытаешься состряпать запрос.
266 bananan
 
29.03.13
12:21
(265) Я бы не сказал, что тупо пытаюсь по начертанию символов состряпать запрос...
267 viktor_vv
 
29.03.13
12:21
(264) Читай (253) и попытайся понять.
"А как занть список или не список?" че там знать, если ты сам это определяешь применением либо УстановитьТекстовыйПараметр или УложитьСписокОбъектов.
268 bananan
 
29.03.13
12:24
(267) Читал (253) - но слабо понял. а по поводу список или нет как мне знать что именно вствалять в условие выборки в тексте запроса isnull($ДокШН.Агент, $ДокШ.Агент) = :Агент

или  in Select?
269 bananan
 
29.03.13
12:26
(267) Вот код из моего скрипта:
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);
   КонецЕсли;
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
   КонецЕсли;
т.е. сначала устанавливается текстовый параметр а потому УложитьСписок... Вот я и спрашивал и спрашиваю этот кусок кода правильно написан:
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);  
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);
   КонецЕсли;
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  
       Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
   КонецЕсли;
   ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
и если неправильно (а, видно так оно и есть) то как это правильно написать?
270 vinogradъ
 
29.03.13
12:29
ВыбАгент - это что?
271 bananan
 
29.03.13
12:31
ВыбАгент... - ну не знаю как это правильно пишеться или называется ВыбАгент - это идентификатор для окна в котором выбирается Агент..
272 vinogradъ
 
29.03.13
12:32
реквизит на форме с типом Справочник....?
273 bananan
 
29.03.13
12:33
(272) Да
274 vinogradъ
 
29.03.13
12:33
с каким типом?
275 bananan
 
29.03.13
12:35
(274) Оп, а где тип устанавливается и где его можно посмотреть (в свойствах о типе ничего нет)?
276 vinogradъ
 
29.03.13
12:35
Если ВыбАгент.ЭтоГруппа() = 1 Тогда
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent","ТипСправочникаВыбАгент");
Иначе
   Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);
КонецЕсли;
277 vinogradъ
 
29.03.13
12:37
+(276) соответственно и условие в запросе нужно менять в зависимости от ЭтоГруппа()
278 bananan
 
29.03.13
12:38
(276) Вот за этот куоск кода - ОГРОМНОЕ спасибо!!!
Если я не ошибаюсь - теперь после данного изменения - запрос должен правильно заработать...
279 bananan
 
29.03.13
12:39
(277) Еще раз - СПАСИБО!
Упс, мне надо срочно домой смотаться (соседей топлю) выйду на вас позже. Еще раз - СПАСИБО!!!
280 vinogradъ
 
29.03.13
12:41
(279) разносторонняя личность
281 Mikeware
 
29.03.13
12:44
(280) "средоточие геморроя..."
282 viktor_vv
 
29.03.13
13:07
(279) :).
(276) ты только забыл еще ему написать как это Если Иначе в запросе отработать. Он жеж после потопа спросит, че у него там ошибки вываливаются.
283 vinogradъ
 
29.03.13
13:15
(282) а вдруг сам поймет и сделает)
284 Mikeware
 
29.03.13
13:22
(283) вероятность того, что все молекулы воды в стакане начнут двгаться в одну сторону, и вода вылетит из стакана - гораздо больше.
285 viktor_vv
 
29.03.13
13:23
(283) Наивный :).
(284) :).
286 vinogradъ
 
29.03.13
13:29
(284) вот так, наверное, bananan и топит соседей
287 Анна_84
 
29.03.13
13:36
завидую я таким людям... хоть и не хорошо это, а все таки ...
288 Mikeware
 
29.03.13
13:53
(287) а чего завидовать?
заткни пробку в ванне, открой кран...
ничего сложного...
289 viktor_vv
 
29.03.13
13:56
Я уже как-то переживаю за соседей, если он кран будет перекрывать так же как запросы пишет, то может быть больно :).
290 Mikeware
 
29.03.13
13:58
(289) главное, чтоб газовые приборы не лез чиинть.
291 bananan
 
29.03.13
14:54
(276) а ТипСравочникаВыбАгент - это тип справочника из которого выбирается агент?
p.s. Воду - перекрыл, к газовым приборам не лез. Ремонт для соседей вроде делать не надо будет.
292 Mikeware
 
29.03.13
14:55
(291) значит, проводка коротнет...
293 bananan
 
29.03.13
14:56
И еще а к чему в том коде что я нашел было :    Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  
   //    Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент"); ДВА вызова УложитьСписокОбъектов с разными параметрами?
294 bananan
 
29.03.13
14:56
(292) Добрый ты... :) сплюнь, к проводке я тоже не лез...
295 bananan
 
29.03.13
15:05
Что-то опять не так.. :) Запустил скрипт... в конце-концов вылезла ошибка:
Если ВыбАгент.ЭтоГруппа() = 1 Тогда
{\\SERVER12\VPKTEST$\EXTFORMS\ЦІНИ_ПО_КАТЕГОРІЯХ.ERT(108)}: Поле агрегатного объекта не обнаружено (ЭтоГруппа)
296 chelentano
 
29.03.13
15:06
(295) у агрегатного объекта "ВыбАгент" нет поля "ЭтоГруппа"
297 bananan
 
29.03.13
15:08
(296) Ну это я и сам понял... ВыбАгент - это окно для выбора агента (агенты вибираются из справочника.Агент....)
Как тогда проверять что выбрана группа?
298 bananan
 
29.03.13
15:10
+(297) или может опустить Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);   а независимо от того что выбрано использовать Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");?
299 chelentano
 
29.03.13
15:10
(297) сомневаюсь, что ты понял
300 bananan
 
29.03.13
15:12
+(298) т.е. котд:
Если ВыбАгент.ЭтоГруппа() = 1 Тогда
Запрос.УложитьСписокОбъектов(ВыбАгент, #tmpAgent","ТипСправочникаВыбАгент");
Иначе
Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);
КонецЕсли;
заменть на код:
Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент")?
301 bananan
 
29.03.13
15:12
(299) сомневайся и дальше...
302 bananan
 
29.03.13
15:15
хм.. код теперь такой:
Если ВыбАгент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Агент, $ДокШ.Агент) = :Агент";
       КонецЕсли;
       ТекстЗапроса = ТекстЗапроса +"
       |) Данные
       |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2)
       |";            
       ////    
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
ругается:
Meta name parser error: не указан параметр ":Агент"
303 bananan
 
29.03.13
15:17
+(302) А если в тексте запроса использовать не : Агент - а просто Агент, то ругается:
Server]Invalid column name 'Агент'.
304 chelentano
 
29.03.13
15:19
(302) "продолжайте наблюдения" (с)
305 bananan
 
29.03.13
15:20
(304) А что-то более полезное не можешь подсказать?
306 bananan
 
29.03.13
15:22
+(305) Ребята, помогите-подскажите!!!
Код сейчас такой:

   ТекстЗапроса = "
       |SELECT
       |    Данные.IDDoc as [Документ $Документ]
       |,   Данные.IdDocDef as Документ_вид
       |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
       |,   Данные.lineno_ as НомерСтроки_
       |,   Данные.Автор as [Автор $Справочник.Сотрудники]
       |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
       |,   Данные.Цена_Прих                                                                              
       |,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
       |,     ROUND(Данные.СуммаСНДС/Данные.Количество, 2) as ЦенаТовара
         |,   Данные.КаналСбыта as КаналСбыта
         |,     Данные.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен]
       |,   Данные.ИдентификаторИсторииЦены
       //|,   Данные.Агеннт [Агент $Справочник.Агент]
       |,     cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
       |,   case Данные.Цена_Прих
       |        WHEN  0 then 0
       |    ELSE ((Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц
       |,   'має ціну нижчу за прихідну' as Ошибка                                                        
       |from (
       |   SELECT
       |       Жур.IDDoc as IDDoc
       |   ,   Жур.IdDocDef as IdDocDef
       |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
       |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
       |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
       |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
       |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
       |    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агеннт        
       |    ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
       |,   case $КаналСбыта.КатегорияЦены  
       |          when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
       |          when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
       |          when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
       |       when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
       |       when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
       |       when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
       |       when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
       |       when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
       |       when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
       |       ELSE '    ' END ИдентификаторИсторииЦены
       |   ,   КаналСбыта.id as КаналСбыта
       |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих
       |   ,   $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка
       |   ,   $ОбщийРеквизит.Автор as Автор
       |    ,cast(left(Жур.date_time_iddoc, 8) as datetime) as ДатаДок
       |   FROM _1SJourn as Жур (nolock)
       |   Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН
       |   Left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
       |   left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка)
       |   left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ
       |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
       |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
       Если ВыбАгент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Агент, $ДокШ.Агент) = :Агент";
       КонецЕсли;
       ТекстЗапроса = ТекстЗапроса +"
       |) Данные
       |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2)
       |";            
       ////    
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
Дак ему не нравится:
Meta name parser error: не указан параметр ":Агент"
307 viktor_vv
 
29.03.13
15:27
(293) Я ж тебе выше написал. У тебя реально оперативки в голове не хватает, а жесткий диск наверное забит всяким хламом.
(215) (216).
308 viktor_vv
 
29.03.13
15:29
(298) Здравая мысль.
309 viktor_vv
 
29.03.13
15:29
(306) Какая буква в описании ошибки непонятна ?
310 viktor_vv
 
29.03.13
15:30
Ты ж сам решил отказаться от использования параметра, выше писал что надо вставить вместо :Агент.
311 Salimbek
 
29.03.13
15:30
Что-то мне все это напоминает... прошлогоднее...
312 chelentano
 
29.03.13
15:31
(309) подозреваю, что все буквы
313 bananan
 
29.03.13
15:32
(307) т.е. код по уложению параметров написать так:
Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");
Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
?? Да ?
314 bananan
 
29.03.13
15:41
Что-то у меня подозрение что проверятьт на агентра надо не так (isnull($ДокШН.Агент, $ДокШ.Агент) = :Агент
315 bananan
 
29.03.13
15:42
+(314) а что-то врде такого:
((Агент IN (SELECT Val FROM #tmpAgent)) or (Агент IN (SELECT Val FROM #tmpAgent2)))
316 viktor_vv
 
29.03.13
15:42
(313) Ну при чем здесь код по укладке объектов. То  я отвечал на другой твой пост.
(314) Алилуйя.
317 viktor_vv
 
29.03.13
15:43
(316)+ Рано я обрадовался.
318 viktor_vv
 
29.03.13
15:44
Медленно прочитай (262).
319 viktor_vv
 
29.03.13
15:45
Я ж говорю, что ты методом перебора символов запросы пишешь, а ты не верил.
320 bananan
 
29.03.13
15:56
(318) перечитал я (262), но.. он мне выдает:
Meta name parser error: не указан параметр ":Агент"
321 bananan
 
29.03.13
15:58
+ в коде того скрипта который я взял для примера все это обрабатывается так:
   Условия=СоздатьОбъект("СписокЗначений");
   Если ВыбАгент.РазмерСписка()>0 Тогда
       Условия.ДобавитьЗначение("((Агент IN (SELECT Val FROM #tmpAgent)) or (Агент IN (SELECT Val FROM #tmpAgent2)))");
   КонецЕсли;    
   Если ВыбКлиент.РазмерСписка()>0 Тогда
       Условия.ДобавитьЗначение("((Клиент IN (SELECT Val FROM #tmpKlient)) or (Клиент IN (SELECT Val FROM #tmpKlient2)))");
   КонецЕсли;    
   Если НЕ(СпИнкасс.ТекущаяСтрока()=1) Тогда
       Условия.ДобавитьЗначение("$Клиенты.Инкас ="+?(СпИнкасс.ТекущаяСтрока()=2,"1","0"));
   КонецЕсли;
   Если Условия.РазмерСписка()>0 Тогда
       ТекстЗапроса=ТекстЗапроса+" where "+СтрЗаменить(СтрЗаменить(Условия.ВСтрокуСРазделителями(),""","""," and "),"""","")+" Order BY Клиенты.DESCR,Клиент,Агент,Заказ";
   КонецЕсли;
позже:
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");  
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
322 viktor_vv
 
29.03.13
15:59
(320) Я ж говорил прочитай, а не скопипасть, там в конце написано че далать надо.
323 viktor_vv
 
29.03.13
16:00
(321) Ну так напрягись, подумай, что надо вставить вместо Агент.
324 bananan
 
29.03.13
16:02
(322) Да, но если я в коде пишу так:
   Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);  
в тексте запроса:
and ((Агент IN (SELECT Val FROM #tmpAgent)) or (Агент IN (SELECT Val FROM #tmpAgent2)))
все-равно выдает:
Invalid column name 'Агент'.
325 bananan
 
29.03.13
16:03
(323) :Агент - тоже вроде не подходит..
326 bananan
 
29.03.13
16:05
+ в коде рабочего скрипта кроме всего прочего естьт еще и:
   Если Условия.РазмерСписка()>0 Тогда
       ТекстЗапроса=ТекстЗапроса+" where "+СтрЗаменить(СтрЗаменить(Условия.ВСтрокуСРазделителями(),""","""," and "),"""","")+" Order BY Клиенты.DESCR,Клиент,Агент,Заказ";
   КонецЕсли;
327 viktor_vv
 
29.03.13
16:05
Ладно. выбери отсюда правильную часть, это недолго все максимум два раза попробовать

(isnull($ДокШН.Агент, $ДокШ.Агент) = :Агент

для замены Агент тут

nd ((Агент IN (SELECT Val FROM #tmpAgent)) or (Агент IN (SELECT Val FROM #tmpAgent2)))
328 bananan
 
29.03.13
16:07
(327) я до того как ты написал в тексте запроса написал так:
ТекстЗапроса = ТекстЗапроса +" and ((:Агент IN (SELECT Val FROM #tmpAgent)) or (:Агент IN (SELECT Val FROM #tmpAgent2)))"; и запрос - заработал...
329 Анна_84
 
29.03.13
16:08
(0) Автор, простите за ОФФ, а Вы вообще кем работаете? На той фирме, где шеф Вам поручает такие отчеты писать?
330 bananan
 
29.03.13
16:08
+ но блин запрос то заработал, но он выдает на гора документы где агент - но то что я выбрал в окне выбора агента.... :(
331 bananan
 
29.03.13
16:09
(329) Пардон, но програмистом работаю..
332 chelentano
 
29.03.13
16:10
(331) вот именно, что програмистом, в программисты бы тебя не взяли
333 vinogradъ
 
29.03.13
16:10
ВыбАгент - поле со списком (СписокЗначений)?
334 viktor_vv
 
29.03.13
16:11
(328) Давай вторую попытку, там остался всего один вариант.
335 Mikeware
 
29.03.13
16:11
(331) погромистом...
336 bananan
 
29.03.13
16:15
(333) Да
337 bananan
 
29.03.13
16:16
(334) Invalid column name 'Агент'.
338 Анна_84
 
29.03.13
16:17
(331) извините еще раз, а образование у Вас вообще есть? ну, кроме 9ти классов? Ну, просто интересно )
339 bananan
 
29.03.13
16:17
(335) а поповоду двух "м№ в слове программист, так в украинском языке в этом слове м - одна
340 bananan
 
29.03.13
16:18
(338) класов у меня не 9 а 10 + пединститут (физика-информатика)
341 chelentano
 
29.03.13
16:19
(338) да там и девятью-то классами не пахнет
342 bananan
 
29.03.13
16:19
(341) у тебя супер-пупер интернет - запахи передает?
343 viktor_vv
 
29.03.13
16:20
(337) Пенсец, показывай второй вариант, хотя я уже догадываюсь :).
344 bananan
 
29.03.13
16:21
(343)
   Если ВыбАгент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and ((Агент IN (SELECT Val FROM #tmpAgent)) or (Агент IN (SELECT Val FROM #tmpAgent2)))";
       КонецЕсли;
       ТекстЗапроса = ТекстЗапроса +"
       |) Данные
       |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2)
       |";            
       ////    
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   
   //Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");
   //Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");

   Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);
345 viktor_vv
 
29.03.13
16:21
Вот скажи, как по другому можно было понять вот это
"
выбери отсюда правильную часть

(isnull($ДокШН.Агент, $ДокШ.Агент) = :Агент

для замены Агент тут

and ((Агент IN (SELECT Val FROM #tmpAgent)) or (Агент IN (SELECT Val FROM #tmpAgent2)))
"
346 bananan
 
29.03.13
16:23
(345) менял я
((Агент IN (SELECT Val FROM #tmpAgent)) or (Агент IN (SELECT Val FROM #tmpAgent2)))
на
((:Агент IN (SELECT Val FROM #tmpAgent)) or (:Агент IN (SELECT Val FROM #tmpAgent2)))
этот вариант работает, но он мне выдает все документы а не документы где агент - которого выбрали в окне выбора!
347 bananan
 
29.03.13
16:25
+(346) Или Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);   не надо а надо:
Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");
Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
(так я тоже пробывал, но там чтото не фуричило тоже...
348 bananan
 
29.03.13
16:26
+(347) выдает:
Meta name parser error: не указан параметр ":Агент"
349 Анна_84
 
29.03.13
16:27
(331)платят Вам, видимо, оклад, а не почасовку :) а жаль... может, был бы стимул не тупить на форуме, а все таки почитать книжки
350 vinogradъ
 
29.03.13
16:27
Если ВыбАгент.ТекущаяСтрока() > 0 Тогда
   Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент.ПолучитьЗначение(ВыбАгент.ТекущаяСтрока()));
КонецЕсли;
351 bananan
 
29.03.13
16:28
И что нетак??
если (последние строки текста запроса):
|   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
       |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
       Если ВыбАгент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and ((:Агент IN (SELECT Val FROM #tmpAgent)) or (:Агент IN (SELECT Val FROM #tmpAgent2)))";
       КонецЕсли;
       ТекстЗапроса = ТекстЗапроса +"
       |) Данные
       |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2)
       |";            
дальше Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент);  
код - то работает. но он мне выдает все документы а не те в которых агент- тот что я выбрал в окне выбора?
352 bananan
 
29.03.13
16:29
(349) платят оклад...
(350) сейчас попробую
353 Ёпрст
 
29.03.13
16:30
(351) полный текст запроса какой ща ?
354 bananan
 
29.03.13
16:31
(350) Большое спасибо!!!
Работает и выдает те документы в которых агент тот что выбран в окне выбора
355 bananan
 
29.03.13
16:33
+(354) Нифига, оно работало - но выдавало не то что надо...
(353) полный текст показываю не только запроса но и кода..
ТекстЗапроса = "
       |SELECT
       |    Данные.IDDoc as [Документ $Документ]
       |,   Данные.IdDocDef as Документ_вид
       |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
       |,   Данные.lineno_ as НомерСтроки_
       |,   Данные.Автор as [Автор $Справочник.Сотрудники]
       |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
       |,   Данные.Цена_Прих                                                                              
       |,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
       |,     ROUND(Данные.СуммаСНДС/Данные.Количество, 2) as ЦенаТовара
         |,   Данные.КаналСбыта as КаналСбыта
         |,     Данные.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен]
       |,   Данные.ИдентификаторИсторииЦены
       |,     cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
       |,   case Данные.Цена_Прих
       |        WHEN  0 then 0
       |    ELSE ((Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц
       |,   'має ціну нижчу за прихідну' as Ошибка                                                        
       |from (
       |   SELECT
       |       Жур.IDDoc as IDDoc
       |   ,   Жур.IdDocDef as IdDocDef
       |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
       |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
       |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
       |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
       |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
       |    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агеннт        
       |    ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
       |,   case $КаналСбыта.КатегорияЦены  
       |          when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
       |          when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
       |          when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
       |       when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
       |       when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
       |       when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
       |       when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
       |       when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
       |       when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
       |       ELSE '    ' END ИдентификаторИсторииЦены
       |   ,   КаналСбыта.id as КаналСбыта
       |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих
       |   ,   $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка
       |   ,   $ОбщийРеквизит.Автор as Автор
       |    ,cast(left(Жур.date_time_iddoc, 8) as datetime) as ДатаДок
       |   FROM _1SJourn as Жур (nolock)
       |   Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН
       |   Left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
       |   left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка)
       |   left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ
       |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
       |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
       Если ВыбАгент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and ((:Агент IN (SELECT Val FROM #tmpAgent)) or (:Агент IN (SELECT Val FROM #tmpAgent2)))";
       КонецЕсли;
       ТекстЗапроса = ТекстЗапроса +"
       |) Данные
       |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2)
       |";            
       ////    
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   
   //Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");
   //Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
   
   Если ВыбАгент.ТекущаяСтрока() > 0 Тогда
       Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент.ПолучитьЗначение(ВыбАгент.ТекущаяСтрока()));
   КонецЕсли;
356 chelentano
 
29.03.13
16:34
(350) а если в списке больше одного значения?
357 vinogradъ
 
29.03.13
16:35
(356) а что нужно-то: по выбранному в списке или по всем или оба варианта?
358 vinogradъ
 
29.03.13
16:36
+ (357) или по всем из списка или по всему справочнику?
359 vinogradъ
 
29.03.13
16:37
+(358) и могут ли в списке быль группы?
360 bananan
 
29.03.13
16:37
(357) тот вариант что ты показал - выдает документы (ему пофимг кто агент в этих документах)....
в список юзер может добавить одного агента, группу агентов, а может и совем не добавлять в список ничего
361 Ёпрст
 
29.03.13
16:37
>>>>((:Агент IN (SELECT Val FROM #tmpAgent))

Че ЭТО за бредятина ?
362 bananan
 
29.03.13
16:38
+(360) может быть в списке и несколько агентов, и егент и группа и несколько групп и т.д.
363 Mikeware
 
29.03.13
16:38
(361) это не бредятина, это  бананизм™
364 chelentano
 
29.03.13
16:38
(363) это пять :)))
365 Mikeware
 
29.03.13
16:38
да, такой смеси наглости и тупости я давно не видел...
366 bananan
 
29.03.13
16:39
(361) Не знаю. код взял из скрипта в котором аналогичный запрос и условия запроса..
367 Ёпрст
 
29.03.13
16:39
(366) :))0

Тебе объяснить что ЭТО ?
368 Mikeware
 
29.03.13
16:39
(367) а тебе оно надо?
369 Ёпрст
 
29.03.13
16:41
(368) ну не знаю, мот поумнеет хоть немножечко
:)
370 viktor_vv
 
29.03.13
16:43
(369) уже пару страниц пытаемся объяснить :).
371 Mikeware
 
29.03.13
16:44
(369) это вряд ли.
в лучшем случае, ты дашь нему еще десяток строк для копипаста...
372 viktor_vv
 
29.03.13
16:45
(346) Двай по шагам.

Раздели вот эту строку на две смысловые части

(isnull($ДокШН.Агент, $ДокШ.Агент) = :Агент

какие две части ты получил.
373 bananan
 
29.03.13
16:46
(367) Объясни ели не трудно
374 bananan
 
29.03.13
16:47
(372) ну если человечески языком, то поле Агет в ДокШН или в ДокШ равно :Агент
375 viktor_vv
 
29.03.13
16:47
(371) Ну тактика у него понятная, задолбать всех тупизмом, чтобы народу надоело объяснять и выдали готовый код.
376 bananan
 
29.03.13
16:48
+(374) выбирается поле которое не пустое..
377 viktor_vv
 
29.03.13
16:48
(374) Не надо объяснять что это, просто строку раздели на две части более-менее осознано.
378 bananan
 
29.03.13
16:50
(377) Не понял. А зачем ее разделять?
И не знаю я как ее можно разделить ...
379 bananan
 
29.03.13
16:51
+(378) разделить чтобы из этого получилось что-то нужное - работающее
380 viktor_vv
 
29.03.13
16:52
(378) Разделить для того чтобы правильную часть подставить сюда

and ((Агент IN (SELECT Val FROM #tmpAgent)) or (Агент IN (SELECT Val FROM #tmpAgent2)))

вместо Агент.
381 bananan
 
29.03.13
16:55
(380) and ((Агент IN (SELECT Val FROM $ДокШН.Агент))
ой, наоборот, так:
(($ДокШН.Агент IN (SELECT Val FROM #tmpAgent)) or ($ДокШ.Агент IN (SELECT Val FROM #tmpAgent2)))
???
382 bananan
 
29.03.13
16:56
+(381) ну и не использовать Установить текстовый параметр а использовать
Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent");
Запрос.УложитьСписокОбъектов(ВыбАгент, "#tmpAgent2","Агент");
383 viktor_vv
 
29.03.13
16:56
(381) Ход мысли правильный, только ты немного перестарался разделяя, чуть крупнее часть.
Мне прямо аж интересно.
384 bananan
 
29.03.13
16:59
(383) как "чуть крупнее часть"?
385 viktor_vv
 
29.03.13
17:00
(384) Ну вот еще раз, может так заметнее будет.

isnull($ДокШН.Агент, $ДокШ.Агент)    =     :Агент
386 bananan
 
29.03.13
17:01
(383) ты об and  в начале? так я его по невнимательности опустил...
387 viktor_vv
 
29.03.13
17:02
(386) Не не, смотри сюда

isnull($ДокШН.Агент, $ДокШ.Агент)    =     :Агент

так тоже двух частей не видно ?
388 bananan
 
29.03.13
17:03
(385) Здаюсь. Как правильно?
когда я написал так:
       ТекстЗапроса = ТекстЗапроса +" and (($ДокШН.Агент IN (SELECT Val FROM #tmpAgent)) or ($ДокШ.Агент IN (SELECT Val FROM #tmpAgent2)))";
запрос заработал, но кроме выбраного агента были еще документы с другими агентами...
389 bananan
 
29.03.13
17:04
(387) три чати
1 - isnull($ДокШН.Агент, $ДокШ.Агент)
2 - =
3 -  :Агент
390 viktor_vv
 
29.03.13
17:05
(389) Теперь читаем (380).
391 bananan
 
29.03.13
17:08
(390) я уж совсем отупел
что из (389) можно втавить вместо Агент?
392 bananan
 
29.03.13
17:09
+(391) часть№1???
393 bananan
 
29.03.13
17:11
+(392) Написал так:
ТекстЗапроса = ТекстЗапроса +" and ((isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #tmpAgent)) or (isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #tmpAgent2)))";
но запрос выдает кроме документов тот агент что выбран и документы с другими агентами..
394 viktor_vv
 
29.03.13
17:13
(393) Наконец-то.
395 bananan
 
29.03.13
17:13
viktor_vv почему запрос с (393) выдает не только выбраных агентов или и ТекстЗапроса = ТекстЗапроса +" and ((isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #tmpAgent)) or (isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #tmpAgent2)))"; - не правильно?:
396 viktor_vv
 
29.03.13
17:15
(395) Не знаю, это уже зависит что у тебя в таблице #tmpAgent или в таблице #tmpAgent2
397 Ёпрст
 
29.03.13
17:15
(395) потому, что лефт джоин. И не ясно, нахрена тебе 2 временные таблички в тексте запроса и нелепый or в условии
398 Ёпрст
 
29.03.13
17:18
Достаточно только это:


inner join $Документ.РасходнаяНакладная as ДокШ
.........
inner join $Документ.РасходнаяНакладнаяН as ДокШН
..........

and isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #СписокАгентов)
...............
Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокАгентов","ТочноеНазваниеВидаСправочникаВКоторомЖивутТвоиАгенты");

усё, наслаждаймя
399 bananan
 
29.03.13
17:19
(396) кто-то здесь говорил что в первой табличке - едементы
а во второй - группа, а не елемент
400 bananan
 
29.03.13
17:19
(398) Спасибо, сейчас так попробую...
401 viktor_vv
 
29.03.13
17:23
(398) С inner'ами у него ж отвалится второй вид документов.
402 bananan
 
29.03.13
17:26
+(400) но я написал так:
|   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 = $Доставка.КаналСбытаТТ
       |   inner join inner join $Документ.РасходнаяНакладная as Док2Ш
       |   inner join inner join $Документ.РасходнаяНакладная as Док2ШН
       |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
он мне выдает:
Incorrect syntax near the keyword 'inner'.
403 viktor_vv
 
29.03.13
17:26
(401)+ Или не отвалится. Это уже я для себя.
Плюс по видам документа у него на журнал наладывется условие.
404 bananan
 
29.03.13
17:31
упс, таки у меня была была ошибка (inner join inner join) ее исправил теперь выдает:
Incorrect syntax near the keyword 'WHERE'.
405 batman69
 
29.03.13
17:33
Как народ еще не з..ся, всех посылают, а этому дол..у помогают.
406 bananan
 
29.03.13
17:33
(405) ну не все же кажаны!
407 viktor_vv
 
29.03.13
17:34
(405) тут научный эксперимент идет :).
408 bananan
 
29.03.13
17:34
Сейчас у меня такой код:
   |SELECT
       |    Данные.IDDoc as [Документ $Документ]
       |,   Данные.IdDocDef as Документ_вид
       |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
       |,   Данные.lineno_ as НомерСтроки_
       |,   Данные.Автор as [Автор $Справочник.Сотрудники]
       |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
       |,   Данные.Цена_Прих                                                                              
       |,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
       |,     ROUND(Данные.СуммаСНДС/Данные.Количество, 2) as ЦенаТовара
         |,   Данные.КаналСбыта as КаналСбыта
         |,     Данные.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен]
       |,   Данные.ИдентификаторИсторииЦены
       |,     cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
       |,   case Данные.Цена_Прих
       |        WHEN  0 then 0
       |    ELSE ((Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц
       |,   'має ціну нижчу за прихідну' as Ошибка                                                        
       |from (
       |   SELECT
       |       Жур.IDDoc as IDDoc
       |   ,   Жур.IdDocDef as IdDocDef
       |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
       |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
       |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
       |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
       |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
       |    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агеннт        
       |    ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
       |,   case $КаналСбыта.КатегорияЦены  
       |          when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
       |          when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
       |          when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
       |       when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
       |       when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
       |       when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
       |       when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
       |       when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
       |       when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
       |       ELSE '    ' END ИдентификаторИсторииЦены
       |   ,   КаналСбыта.id as КаналСбыта
       |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих
       |   ,   $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка
       |   ,   $ОбщийРеквизит.Автор as Автор
       |    ,cast(left(Жур.date_time_iddoc, 8) as datetime) as ДатаДок
       |   FROM _1SJourn as Жур (nolock)
       |   Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН
       |   Left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
       |   left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка)
       |   left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ
       |   inner join $Документ.РасходнаяНакладная as Док2Ш
       |   inner join $Документ.РасходнаяНакладная as Док2ШН
       |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
       |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
       Если ВыбАгент.РазмерСписка()>0 Тогда
           //ТекстЗапроса = ТекстЗапроса +" and ((isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #tmpAgent)) or (isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #tmpAgent2)))";
           ТекстЗапроса = ТекстЗапроса +" and isnull($Док2ШН.Агент, $Док2Ш.Агент) IN (SELECT Val FROM #СписокАгентов)";
       КонецЕсли;
       Если ВыбСклад.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and ((isnull($ДокШН.Склад, $ДокШ.Склад) IN (SELECT Val FROM #tmpSklad)) or (isnull($ДокШН.Склад, $ДокШ.Склад) IN (SELECT Val FROM #tmpSklad2)))";
       КонецЕсли;

       ТекстЗапроса = ТекстЗапроса +"
       |) Данные
       |WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2)
       |";            
       ////    
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокАгентов","Агент");
   
выдает:
Incorrect syntax near the keyword 'WHERE'.
Что ей в WHERE не нравится?
409 viktor_vv
 
29.03.13
17:36
Да не надо тебе inner.
410 bananan
 
29.03.13
17:37
(409) А как же (398)?
411 bananan
 
29.03.13
17:39
+(410) к тому же с левым джоином он выдавал мне не совем то что должен (что я хотел)....
412 viktor_vv
 
29.03.13
17:40
(411) Это еще не факт что из-за left.

Ты таки скажи что такое ВыбАгент.
413 bananan
 
29.03.13
17:41
(411) Понимаю что подвох... -
ВыбАгент - это идентификатор окна на форме
414 bananan
 
29.03.13
17:41
(412) но когда не лефт а иннер - то выдает правильно все
415 bananan
 
29.03.13
17:44
+(414) Цпс да нет когда я написал так:
|   left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ
       |   inner join $Документ.РасходнаяНакладная as Док2Ш
       |   inner join $Документ.РасходнаяНакладная as Док2ШН
выдает
Incorrect syntax near the keyword 'WHERE'.
416 viktor_vv
 
29.03.13
17:55
(413) И в этом окне у тебя что ?
417 viktor_vv
 
29.03.13
17:56
(414) В твоем положении тебе остается только верить кому-то, потому что сам ты не проверишь правильность того или иного варианта.
@Епрст конечно поавторитетнее будет .
418 bananan
 
29.03.13
17:56
+(415) а когда из текста запроса убрал |   inner join $Документ.РасходнаяНакладная as Док2Ш
       |   inner join $Документ.РасходнаяНакладная as Док2ШН
запрос работает но опять же выдает не совсем то что надо
ЧТО НЕПРАВИЛЬНО в
|   inner join $Документ.РасходнаяНакладная as Док2Ш
       |   inner join $Документ.РасходнаяНакладная as Док2ШН
       |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
419 bananan
 
29.03.13
17:57
(416) в том окне - Список Агентов
420 bananan
 
29.03.13
17:58
+(418) что ему не нравится в синатксисе WHERE?
или нельзв применять в одном запросе и лефт жоин и ыннер джоин?
421 viktor_vv
 
29.03.13
18:00
(419) Вот поэтому изначальный код дает всех агентов в этом списке, и работает он правильно.

А если тебе нужен по одному их списка, то смотри

(350)  только уложитьСписокОбъектов().
422 bananan
 
29.03.13
18:00
(417) Для меня давали дельные советы что ты что Ёпрст
423 bananan
 
29.03.13
18:02
(421) а как в
Если ВыбАгент.ТекущаяСтрока() > 0 Тогда
   Запрос.УстановитьТекстовыйПараметр("Агент", ВыбАгент.ПолучитьЗначение(ВыбАгент.ТекущаяСтрока()));
КонецЕсли;
использовать уложитьСписокОбъектов()?
424 viktor_vv
 
29.03.13
18:04
Проще будет в запросе поменять in select на =:Агент и 1 в 1 тот код.
425 bananan
 
29.03.13
18:06
+К тому же,... я что то в тексте запроса начудил... когда убрал из него иннер джоин - все-равно на WHERE ругается... - буду смотреть..
426 viktor_vv
 
29.03.13
18:07
Ты как по минному полю ходишь, шаг влево или вправо и мозг взорвался.
427 bananan
 
29.03.13
18:09
(426) уже он у меня давно взорвался....
что в коде запроса:
 |SELECT
       |    Данные.IDDoc as [Документ $Документ]
       |,   Данные.IdDocDef as Документ_вид
       |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
       |,   Данные.lineno_ as НомерСтроки_
       |,   Данные.Автор as [Автор $Справочник.Сотрудники]
       |,   Данные.Клиент [Клиент $Справочник.Клиенты]        
       |,   Данные.Цена_Прих                                                                              
       |,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
       |,     ROUND(Данные.СуммаСНДС/Данные.Количество, 2) as ЦенаТовара
         |,   Данные.КаналСбыта as КаналСбыта
         |,     Данные.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен]
       |,   Данные.ИдентификаторИсторииЦены
       |,     cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
       |,   case Данные.Цена_Прих
       |        WHEN  0 then 0
       |    ELSE ((Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц
       |,   'має ціну нижчу за прихідну' as Ошибка                                                        
       |from (
       |   SELECT
       |       Жур.IDDoc as IDDoc
       |   ,   Жур.IdDocDef as IdDocDef
       |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
       |   ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
       |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
       |   ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
       |   ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
       |    ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
       |   ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
       |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агеннт        
       |    ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
       |,   case $КаналСбыта.КатегорияЦены  
       |          when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
       |          when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
       |          when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
       |       when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
       |       when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
       |       when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
       |       when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
       |       when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
       |       when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
       |       ELSE '    ' END ИдентификаторИсторииЦены
       |   ,   КаналСбыта.id as КаналСбыта
       |   ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих
       |   ,   $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка
       |   ,   $ОбщийРеквизит.Автор as Автор
       |    ,cast(left(Жур.date_time_iddoc, 8) as datetime) as ДатаДок
       |   FROM _1SJourn as Жур (nolock)
       |   Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН
       |   Left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
       |   left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
       |   left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка)
       |   left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ
       |   inner join $Документ.РасходнаяНакладная as Док2Ш
       |   inner join $Документ.РасходнаяНакладная as Док2ШН
       |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
       |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
       Если ВыбАгент.РазмерСписка()>0 Тогда
           //ТекстЗапроса = ТекстЗапроса +" and ((isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #tmpAgent)) or (isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #tmpAgent2)))";
           ТекстЗапроса = ТекстЗапроса +" and isnull($Док2ШН.Агент, $Док2Ш.Агент) IN (SELECT Val FROM #СписокАгентов)";
       КонецЕсли;
неправильно в использовании WHERE????
428 viktor_vv
 
29.03.13
18:11
И ты таки где-то херню говоришь

"тот вариант что ты показал - выдает документы (ему пофимг кто агент в этих документах)....
в список юзер может добавить одного агента, группу агентов, а может и совем не добавлять в список ничего"

если у тебя в списке несколько агентов, то по ним всем и дается результат запроса, че ты еще от него хочешь.
Как ты определяешь, что лишнее выдал результат запроса ?
429 bananan
 
29.03.13
18:12
(428) Он мне выдавал документы в которых агент - которого не было в списке из нескольких агентов
430 bananan
 
29.03.13
18:16
сейчас гвоздь как раз в тексте запроса там после всех перетрубаций WHERE некоректно, и если убрать то что я добавил по совету Ёпрст - то WHERE остается некоректным. Почему?
431 viktor_vv
 
29.03.13
18:20
(430) Засада :), не надо было добавлять :). А счастье было так близко.
432 bananan
 
29.03.13
18:22
(431) Не смешно, но я в упор не вижу в коде:
   |   left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка)
       |   left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ
       |   inner join $Документ.РасходнаяНакладная as Док2Ш
       |   inner join $Документ.РасходнаяНакладная as Док2ШН
       |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
       |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
       Если ВыбАгент.РазмерСписка()>0 Тогда
           //ТекстЗапроса = ТекстЗапроса +" and ((isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #tmpAgent)) or (isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #tmpAgent2)))";
           ТекстЗапроса = ТекстЗапроса +" and isnull($Док2ШН.Агент, $Док2Ш.Агент) IN (SELECT Val FROM #СписокАгентов)";
       КонецЕсли;      
       
   
некоректного использования WHERE
433 viktor_vv
 
29.03.13
18:22
Зато есть некорректное использование inner join.
434 bananan
 
29.03.13
18:30
(433) В чем там некорректность?
второе когда убрать из запроса  |   inner join $Документ.РасходнаяНакладная as Док2Ш
       |   inner join $Документ.РасходнаяНакладная as Док2ШН
некорректное использование WHERE - остается
В чем фигна?
Текст запроса такой:

SELECT
   Данные.IDDoc as [Документ $Документ]
,   Данные.IdDocDef as Документ_вид
,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
,   Данные.lineno_ as НомерСтроки_
,   Данные.Автор as [Автор $Справочник.Сотрудники]
,   Данные.Клиент [Клиент $Справочник.Клиенты]        
,   Данные.Цена_Прих                                                                              
,     ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2) as МинЦена  
,     ROUND(Данные.СуммаСНДС/Данные.Количество, 2) as ЦенаТовара
,   Данные.КаналСбыта as КаналСбыта
,     Данные.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен]
,   Данные.ИдентификаторИсторииЦены
,     cast((SELECT TOP 1 История.Value FROM _1SCONST История(NOLOCK) WHERE История.OBJID=Данные.ТМЦ AND История.ID=Данные.ИдентификаторИсторииЦены AND История.DATE<=Данные.ДатаДок ORDER BY История.DATE DESC) as numeric(10,2)) ЦенаДляКаналаСбытаВ
,   case Данные.Цена_Прих
       WHEN  0 then 0
   ELSE ((Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц
,   'має ціну нижчу за прихідну' as Ошибка                                                        
from (
  SELECT
      Жур.IDDoc as IDDoc
  ,   Жур.IdDocDef as IdDocDef
  ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
  ,   isnull(ДокС.lineno_, ДокН.lineno_) lineno_
  ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
  ,   isnull($ДокС.СуммаСНДС, $ДокН.СуммаСНДС) СуммаСНДС
  ,   isnull($ДокШН.Клиент, $ДокШ.Клиент) as Клиент          
   ,   isnull($ДокШН.Доставка, $ДокШ.Доставка) as Доставка
  ,   isnull($ДокШ.ТипЦен, $ДокШН.ТипЦен) ТипЦен        
  ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агеннт        
   ,   $КаналСбыта.КатегорияЦены as КатегорияЦены
,   case $КаналСбыта.КатегорияЦены  
         when $Перечисление.ТипыЦен.Категория1 then $ИсторияРеквизита.ТМЦ.Цена1
         when $Перечисление.ТипыЦен.Категория2 then $ИсторияРеквизита.ТМЦ.Цена2
         when $Перечисление.ТипыЦен.Категория3 then $ИсторияРеквизита.ТМЦ.Цена3
      when $Перечисление.ТипыЦен.Категория4 then $ИсторияРеквизита.ТМЦ.Цена4
      when $Перечисление.ТипыЦен.Категория5 then $ИсторияРеквизита.ТМЦ.Цена5
      when $Перечисление.ТипыЦен.Категория6 then $ИсторияРеквизита.ТМЦ.Цена6
      when $Перечисление.ТипыЦен.Категория7 then $ИсторияРеквизита.ТМЦ.Цена7
      when $Перечисление.ТипыЦен.Категория8 then $ИсторияРеквизита.ТМЦ.Цена8
      when $Перечисление.ТипыЦен.Категория9 then $ИсторияРеквизита.ТМЦ.Цена9
      ELSE '    ' END ИдентификаторИсторииЦены
  ,   КаналСбыта.id as КаналСбыта
  ,   $ПоследнееЗначение.ТМЦ.Цена_Прих(ТМЦ.id, cast(left(Жур.date_time_iddoc,8) as datetime)) Цена_Прих
  ,   $ПоследнееЗначение.ВидыНалогов.Ставка($ТМЦ.СтавкаНДС, cast(left(Жур.date_time_iddoc,8) as datetime)) Ставка
  ,   $ОбщийРеквизит.Автор as Автор
   ,cast(left(Жур.date_time_iddoc, 8) as datetime) as ДатаДок
  FROM _1SJourn as Жур (nolock)
  Left join $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
  Left join $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН
  Left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
  Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
  left join $Справочник.ТМЦ ТМЦ (nolock) on ТМЦ.id = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
  left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка)
  left join $Справочник.КаналыСбыта КаналСбыта (nolock) on КаналСбыта.id = $Доставка.КаналСбытаТТ
  inner join $Документ.РасходнаяНакладная as Док2Ш
  inner join $Документ.РасходнаяНакладная as Док2ШН
  WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
    AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН)  and isnull($Док2ШН.Агент, $Док2Ш.Агент) IN (SELECT Val FROM #СписокАгентов)
) Данные
WHERE ROUND(case when Данные.Количество = 0 then 0 else Данные.СуммаСНДС / Данные.Количество end, 2) < ROUND(Данные.Цена_Прих * (1+Данные.Ставка),2)
ПОЧЕМУ он выдает:
Incorrect syntax near the keyword 'WHERE'.
435 viktor_vv
 
29.03.13
18:31
Ну и где там убранный inner join ?
436 sapphire
 
29.03.13
18:33
Долбобей тупит...
437 bananan
 
29.03.13
18:34
Здесь он не убран.... Где здесь некорректность WHERE?
а когда я иннер убрал - некорректность синтаксиса осталась - только-что проверил...
т.е. (не смотри на иннер - считай что его там нет) в чем лажа с WHERE??
438 bananan
 
29.03.13
18:35
(436) а ты не тупи - возьми тот код запроса что я показал - и проверь и скажи кто и в чем тупит???
439 sapphire
 
29.03.13
18:36
(438) Нет, долбобеюшка, мучайся
440 bananan
 
29.03.13
18:37
(439) Сам ты - добосапер...!
441 sapphire
 
29.03.13
18:39
(440) Я-то знаю кто я, а ты, Бананан Долбобей...
442 bananan
 
29.03.13
18:39
(439) Ты окромя как обзываться что-то еще умеешь??
443 bananan
 
29.03.13
18:39
(441) За такое "поблядение" - можно и получить
444 sapphire
 
29.03.13
18:41
(442) О. Месье, я умею куда больше нежели ты.
Тебе же разбираться лень, я вот вижу ошибку, но не скажу тебе.
445 sapphire
 
29.03.13
18:41
(443) Попробуй.
446 bananan
 
29.03.13
18:42
(445) приезжай - увидишь
447 viktor_vv
 
29.03.13
18:45
Ты ж когда inner убрал, у тебя ж и этого алиаса уже нет Док2ШН, и в описании ошибки оно тебе должно было написать, но ты ж не читаешь.
448 bananan
 
29.03.13
19:07
(447) нет и еще раз нет
когда я иннер убрал альяс понятно исчез а вот ошибка осталась Incorrect syntax near the keyword 'WHERE'.
и причем здесь алиас на Док2ШН????
449 bananan
 
29.03.13
19:08
т.е. когда я убрал две строки с инером... осталась ошибка Incorrect syntax near the keyword 'WHERE'
450 bananan
 
29.03.13
19:14
Упс. Сейчас еще раз проделал это...
Запрос - работает. но...
в списке агентов я выбрал только агента Бобер, а выдает он мне документы в которых агент Бреус, Довгалюк и прочие (в том числе и Бобер)..
ПОЧЕМУ????
451 bananan
 
29.03.13
19:16
А раз так - то может там ляп не с WHERE, а что-то не "кошерно" в строках
       |   inner join $Документ.РасходнаяНакладная as Док2Ш
       |   inner join $Документ.РасходнаяНакладная as Док2ШН
?
452 batman69
 
29.03.13
19:27
Дурдом, и главное, для бананана совершенно бесполезно ))))
453 bananan
 
29.03.13
19:28
(452) Кажан я уже понял нельзя два разніх алиаса задавать на одну и ту же таблицу
454 viktor_vv
 
29.03.13
19:28
(452) Вот это самое обидное, пожалуй мой энтузизам угас :).
455 viktor_vv
 
29.03.13
19:29
*энтузиазм
456 bananan
 
29.03.13
19:31
(454) А что
код типа:
inner join $Документ.РасходнаяНакладная as Док2Ш
inner join $Документ.РасходнаяНакладная as Док32Ш
будет работать???
457 Mikeware
 
29.03.13
19:33
"Бобер, агент Бананана"®
сюр...
458 bananan
 
29.03.13
19:38
(457) НЕ флуди
459 bananan
 
01.04.13
15:11
Всем - добрый день и с праздником наших оппонентов!
Прошлый скрипт я уже довел до ума (работает как надо) - просто в пятницу я что-то тупил на ровном месте (сегодня - снялся с ручника и за 5-7 минут довел скрипт до конца).
Сейчас пишу новый скрипт, вот здесь я уже опять запнулся (скорее всего снова ж таки на ровном месте). Так вот на форме у меня три окна для выбора  (Агент, Клиент, ТМЦ). Что-то я в процедуре ОбработкаПодбора(Выб) нахомутал и.. Агент - вбирается, ТМЦ - выбирается, а вот Клиент - не выбирается (т.е. выбраный Клиент не появляется в окне выбора Клиент).
Текст процедуры Процедура ОбработкаПодбора(Выб) написал такой:
Если Выб.Вид()= "Агент" Тогда
       ВыбАгент.ДобавитьЗначение(Выб);
       ВыбАгент.ТекущаяСтрока(ВыбАгент.РазмерСписка());
   ИначеЕсли Выб.Вид() = "Клиент" Тогда
       ВыбКлиент.ДобавитьЗначение(Выб);
       ВыбКлиент.ТекущаяСтрока(ВыбКлиент.РазмерСписка());
   ИначеЕсли Выб.Вид()= "ТМЦ" Тогда
       ВыбТМЦ.ДобавитьЗначение(Выб);
       ВыбТМЦ.ТекущаяСтрока(ВыбТМЦ.РазмерСписка());
   Конецесли;                
Подскажите - где я торможу...
460 Mikeware
 
01.04.13
15:15
(459)>>Подскажите - где я торможу...
Ты не поверишь...® ВЕЗДЕ!
461 Ёпрст
 
01.04.13
15:16
Выб.Вид() = "КлиентЫ"

или "Контрагенты", ну короче, пишу правильный ВИД справочника
462 bananan
 
01.04.13
15:20
(460) см (259)
(461) спасибо, сейчас проверю...
463 bananan
 
01.04.13
15:26
+(462), так и было, исправило - заработало, а теперь... в накладных товары продаются в разных еденицах измерения, мне надо на форму поставить окно с выбором итоговой еденицы измерения, но, еденицы измерения - это - перечисление это не справочник а перечисление к тому же в данном случае нельзвя выбирать больше одного елемента. Какой визуальный элемент атавить на форму?
464 bananan
 
01.04.13
15:26
+(463) Поле со списком?
465 bananan
 
01.04.13
15:29
+(464) а как в это поле со списком добавить значения из Перечисление.Единицы?
466 Mikeware
 
01.04.13
15:35
Света Семененко таки сменила пол, и стала банананом...
467 ЧеловекДуши
 
01.04.13
15:39
(456) Не забудь указать NOLOCK

Зачем NOLOCK в селекте?  
http://www.sql.ru/forum/actualthread.aspx?tid=109783

Почитай, тебе полезно ;)
468 ЧеловекДуши
 
01.04.13
15:40
(463) Оставь тот, что указан в номенклатуре (это надеюсь Справочник?) :)
469 ЧеловекДуши
 
01.04.13
15:41
470 bananan
 
01.04.13
15:41
(467) Спасибо, но это на сегодня - не актуально... прочту на днях...
(466) см (259)
471 bananan
 
01.04.13
15:42
(468) Это не Справочник, а Перечисление..
472 bananan
 
01.04.13
15:44
NOLOCK  и проч. сегодня неактуально, Сейчас мене надо на форму потсавить окно или что в котором пользователь сожет выбирать итоговую едтнтцу измерения, Единицы измерения берутся из перечисления Единицы..
473 ЧеловекДуши
 
01.04.13
15:45
(451) Для тех, кто не умеет пользоваться гуглом

"inner join" - Что это и для чего оно там
Операторы Inner Join и Outer (left, right, full) Join в SQL (Oracle)
http://www.javenue.info/post/20

Но и для тех, кто верит в плоскость небесной оси...
https://www.google.ru/search?q=NOLOCK+SQL+зачем+он+там&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-beta#hl=ru&newwindow=1&client=firefox-beta&hs=X9y&rls=org.mozilla:ru%3Aofficial&sclient=psy-ab&q=inner+join+SQL+зачем+он+там&oq=inner+join+SQL+зачем+он+там&gs_l=serp.3...240458.240458.0.241729.1.1.0.0.0.0.0.0..0.0.eappsweb..0.0...1.1.7.psy-ab.GulFDT2ba-A&pbx=1&bav=on.2,or.r_cp.r_qf.&bvm=bv.44442042,d.bGE&fp=99b15bffd6a449fd&biw=1152&bih=761


(471)Ты не поверишь, я не удивлен, и мне побоку... Потом когда обработаешь в (467), то обработай и тут :)
474 ЧеловекДуши
 
01.04.13
15:46
+(472)Ты сейчас со мной через гугл переводчик общаешься? :)
475 bananan
 
01.04.13
15:48
(473) Опять же прошлый Скрипт с запросом (вернее там три запроса) я уже сдал..
и на данный момент мне ндо поставить на форму визуальный элемент, из которого польхователь сможет выбирать единицу измерения. Я думаю что это надо использовать поле со списком... но ка запролнить список ?
476 bananan
 
01.04.13
15:49
(474) А ты со мной общаешся из Прошлого?
477 Mikeware
 
01.04.13
15:50
(475) почитать документацию, и сделать как там сказано...
478 Mikeware
 
01.04.13
15:51
всех желающих "помочь" - предупреждаю: ветка в юморе, все кроме флуда будет удаляться :-)
479 bananan
 
01.04.13
15:52
(477) Хоть  что-то не из области флуда ты выдал за последнее время... Читаю, просто-напросто, быстрее если кто подскажет, а не прочитать десятки страниц доки чтобы найти нужное...
480 ЧеловекДуши
 
01.04.13
15:52
(475) Да ты не чихай, у тебя тупые вопросы об одном и том же, по этому, я не поленюсь тебя тыкать носом в гуглЪ :)
481 bananan
 
01.04.13
15:52
(478) Да пошел ты в свой флудный юмор
482 ЧеловекДуши
 
01.04.13
15:52
(479)Считай дальше... работать за тебя походу уже даже Епрст отказался :)
483 bananan
 
01.04.13
15:54
(480) С выьором перечисления я сталкивабюст впервые так что вопроса об жтом не было..
484 ЧеловекДуши
 
01.04.13
15:55
(483) На, держи...

ВвестиПеречисление
Вызов диалога для ввода перечисления.

Синтаксис:

ВвестиПеречисление(<3начение>, <Подсказка>, <Таймаут>)

Англоязычный синоним:

InputEnum

Параметры:

<3начение>
Имя переменной, ранее объявленной в программном модуле. Переменная должна содержать значение типа «Перечисление» или строковое значение. Если тип передаваемого в качестве параметра значения — пере­числение, то вызывается диалог со списком заданного вида перечисления. Если тип передаваемого в качестве параметра значения — строка, то в ней должен быть идентификатор требуемого вида перечисления, как он задан в конфигураторе. В эту же переменную будет помещено выбранное в диалоге значение перечисле­ния.

<Подсказка>
Текст заголовка окна диалога ввода. Может ис­пользоваться в качестве подсказки конечному пользователю.

<Таймаут>
Необязательный параметр. Числовое выражение ин­тервала времени ожидания ответа в секундах, в тече­ние которого система будет ожидать ответа пользова­теля. Если данный параметр опущен или равен 0, то время ожидания бесконечно. Значение по умолчанию — 0.


Возвращаемое значение:

Числовое значение: 1 — если в диалоге нажата кнопка «ОК», 0 — если на­жата кнопка «Отмена»; -1 (минус единица) — если закончилось время ожида­ния ответа.

Описание:

Функция ВвестиПеречисление выполняет вызов диалога для ввода пере­числения.

Пример:

*

Процедура УстПризнак1()

  ВыбПризн = Перечисление.ТипСотрудника.Штатный;

  Если ВвестиПеречисление(ВыбПризн, "Выберите тип") > 0 Тогда

     Тип = ВыбПризн;

  Иначе

     Тип = Перечисление.ТипСотрудника.Штатный;

  КонецЕсли;

КонецПроцедуры



*

Процедура УстПризнак2()

  ВыбПризн = "ТипСотрудника";

  Если ВвестиПеречисление(ВыбПризн, "Выберите тип") > 0 Тогда

     Тип = ВыбПризн;

  Иначе

     Тип = Перечисление.ТипСотрудника.Штатный;

  КонецЕсли;

КонецПроцедуры
485 Mikeware
 
01.04.13
15:59
(484) ему не совсем это требовалось.
хотя можно и это использовать.
вообще, способов дофига...
486 oslokot
 
01.04.13
16:10
(475),(483) попробуй использовать цикл но прежде почитай в СП про методы вида перечисления
487 bananan
 
01.04.13
16:17
(485) Точно мне не это надо... но и оно подойдет...
Но лучше на форме окно со списком в нем и выбирается необходимачя единица измерение.
(486) Так и думал сделать, читаю и пробую...
488 bananan
 
01.04.13
16:25
вот кусок кода:
   ед = СоздатьОбъект("Перечислние.Единицы");
   итер = ед.КоличествоЗначений();

выдает:
Неудачная попытка создания объекта (Перечислние.Единицы)
что неправильно?
489 Ёпрст
 
01.04.13
16:29
(488) круто, че.
490 Mikeware
 
01.04.13
16:29
(488) ДНК
491 Ёпрст
 
01.04.13
16:30
Как бы тебе попроще то сказать ?
Перечисление - это не объект ИБ, это объект мд.
Его не надо создавать, он и так всегда есть
492 bananan
 
01.04.13
16:30
(489), (490) А как это сделать?
493 bananan
 
01.04.13
16:31
(491) Понял, сейчас попробую...
494 bananan
 
01.04.13
16:33
+Работает, а теперь как значения Перечисления.Единицы "засунуть" в окно списка?
495 Ёпрст
 
01.04.13
16:36
Тебе одно значение надо в фильтр, или несколько ?
496 bananan
 
01.04.13
16:37
(495) Надо - одно
497 Ёпрст
 
01.04.13
16:39
(496) выкидываешь всё что написал, на поле кладешь Реквизит Диалога, в Тип указываещь Перечисление.НужныйВид - наслаждаешься положительными эмоциями
498 bananan
 
01.04.13
16:40
(497) Спасибо
499 bananan
 
01.04.13
16:44
А как в прямом запросе выбрать значения перечисления.Единицы?
500 Ёпрст
 
01.04.13
16:47
(499) откуда выбрать ?
Воткнуть в качестве условия, или что ?
501 bananan
 
01.04.13
16:49
Хотя не совсем правильный вопрос я задал... Значит так я выбираю (эта часть запроса или это запрос уже написан) клиентов которые купили заданные товары, товары в накладных могут быть с разными единицами измерения (т.е. в одной накладной ТМЦ№1 10шт, во второй накладной - 2 ящика, в третьей 5 шт (значит всего даного товара продано 3.5 ящика (в ящике 10шт)....
Т.е. мне надо просуммировать товары по накладных в выбраной единице измерения..
502 bananan
 
01.04.13
17:00
+(501) На данный момент есть такой запрос (написал я его сам):
   ТекстЗапроса = "
         |SELECT
         |    Данные.IDDoc as [Документ $Документ]
         |,   Данные.IdDocDef as Документ_вид
         |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
         |,   Данные.Агент as [Агент $Справочник.Агент]
         |,   Данные.количество
         |from (
         |    SELECT
         |       Жур.IDDoc as IDDoc
         |   ,   Жур.IdDocDef as IdDocDef
         |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
         |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агент        
         |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
         |   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 = $ВидДокумента.РасходнаяНакладная
         |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
         |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
         Если ВыбТМЦ.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокС.ТМЦ, $ДокН.ТМЦ) IN (SELECT Val FROM #СписокТМЦ)";
         КонецЕсли;      
   ТекстЗапроса = ТекстЗапроса +"
         |) Данные";            
       
   Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ");
         
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   
   ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);

надо написать чтобы к-во в из документа переводилось в к-во в тех единицах, что выбрал юзер...
503 Mikeware
 
01.04.13
17:25
(502) ну напиши :-)
504 bananan
 
01.04.13
17:42
(503) А ты что думал, жду готовое решение? Да пишу...
505 bananan
 
01.04.13
18:13
Что-то я опять В штопоре.... Где в конфигурации искать сколько штук в ящике (коэффициенты ед.измерения)?
506 Mikeware
 
01.04.13
18:14
(505) Бу-га-га!©
508 Mikeware
 
01.04.13
18:28
Уважаемый князь тьмы Бананан Долбобеевич Ровенский-Феерический...
это мы должны у Вашего Толпойоппства спрашивать - где в _ВАШЕЙ_ конфигурации хранятся коэффициенты...
509 bananan
 
01.04.13
18:33
+(505) Эти коэффициенты храняться в Справочник.ЕдИзм (Марнотртный ( Mikeware ), сожешь пользоваться)
510 Mikeware
 
01.04.13
18:33
(509) у вас дирехтур - Полищук?
511 bananan
 
01.04.13
18:34
(508) я думал, что в челяюинске люди живут, а не го.. на палочке, которое только матом может
512 bananan
 
01.04.13
18:34
(511) у вас Мидведев
513 Mikeware
 
01.04.13
18:34
(511) говно все в Ровно сплавили...
514 Mikeware
 
01.04.13
18:35
(512) позвонию завтра, узнаю кто у вас айтишнег. ссылку дам на твои ветки...
515 bananan
 
01.04.13
18:37
(514) Всегда, пожалйста, мне для такого ... как ты ничего не жалко
516 ЧеловекДуши
 
01.04.13
21:22
(502) Пиши... делай... https://www.google.ru/
Твой сайт
517 ЧеловекДуши
 
01.04.13
21:26
Вот... познай... http://1clancer.ru/article/poluchenie_polej_cherez_tochku_v_zaprose_750

Вот так ты найдешь свою единицу измерения :)
помогите оптимизировать запрос (sql)

Жесть... самое прикольное у него в БД одна единица измерения, а он собирается её пересчитывать в ту, что укажет пользователь :)
518 bananan
 
02.04.13
10:35
Добрый день!
(517) У меня в БД около 10 единиц измерения, в справочнике ТМЦ у каждого ТМЦ указана базовая единица измерения...
А тперь, написал я такой запрос:
|SELECT
         |    Данные.IDDoc as [Документ $Документ]
         |,   Данные.IdDocDef as Документ_вид
         |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
         |,   Данные.Агент as [Агент $Справочник.Агент]
         |,   Данные.количество
         |,   Данные.Коэффициент
         |from (
         |    SELECT
         |       Жур.IDDoc as IDDoc
         |   ,   Жур.IdDocDef as IdDocDef
         |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
         |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агент        
         |   ,   isnull($ДокС.Коэффициент, $ДокН.Коэффициент) Коэффициент        
         |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
         |   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 (
         |      select  
         |            max($Спр.Коэффициент) as Коэффициент
         |         ,Спр.parentext as Владелец
         |    from $Справочник.ЕдИзм as Спр (nolock)
         |        where $Спр.Ед =:ВыбЕдиница
         |            and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |        group by Спр.parentext
         |   ) as СпрЕдиницы on СпрЕдиницы.Владелец = ТМЦ
         |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
         |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
         Если ВыбТМЦ.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокС.ТМЦ, $ДокН.ТМЦ) IN (SELECT Val FROM #СписокТМЦ)";
         КонецЕсли;      
   ТекстЗапроса = ТекстЗапроса +"
         |) Данные
         |   WHERE Данные.Коэффициент>1 ";            
когда писал, так и думал что ТМЦ в подзапросе по поводу коэффициентов не пройдет...
выдает ошибку:Invalid column name 'ТМЦ'.
А как к тому ТМЦ доступиться ?
519 Wobland
 
02.04.13
10:36
>СпрЕдиницы.Владелец = ТМЦ
это ты так параметр передаёшь?
520 Wobland
 
02.04.13
10:37
тфу, какой параметр же.. чьё это ТМЦ ты имеешь в виду? какой таблицы?
521 bananan
 
02.04.13
10:40
(519) |        where $Спр.Ед =:ВыбЕдиница вот так я передаю параметр
ТМЦ - это поле справочника ТМЦ
522 Wobland
 
02.04.13
10:42
>СпрЕдиницы.Владелец = ТМЦ
чьё это ТМЦ ты имеешь в виду? какой таблицы?
523 bananan
 
02.04.13
10:43
в данном запроса таблица нразывается Данные...
524 bananan
 
02.04.13
10:43
а вообще, это тмц указанное  табличной части документа..
525 Mikeware
 
02.04.13
10:47
(517) Самое забавное, что этот зверек уже находил единицы. Достаочно посмотреть на его ближайшие ветки. например Непростой запрос..
Просто оно нихрена не помнит собственные ветки... Не знает собственнную конфигу. не умеет читать документацию, не умеет даже отладчиком пользоваться. Да какой там отладчик - СП прочитать у него мозгов не хватает....
блин, пытаюсь с его начальником созвониться - связь обрывается. везет пока зверушке...
526 Wobland
 
02.04.13
10:52
(524) не вижу
527 Wobland
 
02.04.13
10:54
(525) 25 скриптов, не забывай
528 bananan
 
02.04.13
11:05
(525) О, проснулось он ми изрыгает...
529 bananan
 
02.04.13
11:11
Опят же если поробывать обратиться Данные.ТМЦ - тоже не пройдет потому что данный подзапрос находится в подзапросе данные.
а как к нему достучаться? НИ у кого нет идей?
530 Wobland
 
02.04.13
11:12
кстати, раз уж тут немного говорят о прямых запросах... 1CQA.ert - неплохая такая штука. но неудобность: отступы приходится пробелами делать. нельзя ль как-то семёрочное текстовое поле табуляцию воспринимать как табуляцию, а не смену фокуса?
531 Wobland
 
02.04.13
11:13
(529) ты ж спрашивал такое. может, тебе бросить спать, чтоб память не стиралась?
532 bananan
 
02.04.13
12:22
(530) пробывал - не хочет он работать под нашей конфигурацией (выдает какие-то ошибки)
(529) на работе я не сплю. И, когда я такое спрашивал, необходимость обращения к подчиненному справочнику возникла почти впервые...
533 bananan
 
02.04.13
12:29
+ пробывал так:
|    select    
           |        Жур.iddoc as [Док $Документ]
           |        ,Жур.iddocdef as [Док_вид $ВидДокумента]  
           |        ,Таб.Товар as [Товар $Справочник.ТМЦ]
           |        ,sum(Таб.Количество) as КоличествоВБазовойЕдиницеИзмерения
           |        ,sum(Таб.Количество/isnull(СпрЕдиницы.Коэффициент,1)) as КоличествоВЯщиках
         |        ,Таб.Агент as [Агент $Справочник.Агент]
         |        ,Таб.количество
         |        ,Таб.Коэффициент
         |    from
         |        (
           |      select
         |            $ДокС.ТМЦ as Товар
         |            ,ДокС.iddoc as Документ
         |            ,$ДокС.Кво*$ДокС.Коэффициент as Количество
           |         from  $ДокументСтроки.РасходнаяНакладная as ДокС (nolock)
         |      union all
         
         |      select
         |            $ДокН.ТМЦ
         |            ,ДокН.iddoc
         |            ,$ДокН.Кво*$ДокН.Коэффициент as Количество  
         |          ,isnull($ДокШ.Агент, $ДокШН.Агент) Агент        
         |      from  $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock)
         |            left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
         |            left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
         |        )as Таб
         | inner join
         |            _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
           |            and Жур.iddocdef in ($ВидДокумента.РасходнаяНакладная,$ВидДокумента.РасходнаяНакладнаяН)
         |            and Жур.Date_Time_IDDoc BETWEEN :НачДата and :КонДата~
           |            and Жур.Closed&1 = 1
         | left join (
         |   select  
         |         max($Спр.Коэффициент) as Коэффициент
         |          ,Спр.parentext as Владелец
         |   from $Справочник.ЕдИзм as Спр (nolock)
         |   where $Спр.Ед =:ВыбЕдиница
         |         and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |   group by Спр.parentext
         | ) as СпрЕдиницы on СпрЕдиницы.Владелец = Таб.Товар      
         | group by  Жур.iddoc,Жур.iddocdef,Таб.Товар";
понятно что ему не нравытся строки
|            left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
         |            left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
Здесь он почему-то не понимет Жур, но во внешнем запросе Жур он понимает запроста...
534 bananan
 
02.04.13
12:42
+ к тому же альяс Жур  объявлен ниже:
 |            left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
         |            left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
         |        )as Таб
         | inner join
         |            _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
535 vinogradъ
 
02.04.13
12:45
Не, Данила, не выйдет каменный цветок.
536 bananan
 
02.04.13
12:48
(535) Да вижу, что не выходит... А как это сделать?
537 bananan
 
02.04.13
12:52
На данный момент есть два варианта (к сожалению оба нерабочие :()
Вариант 1:

         |SELECT
         |    Данные.IDDoc as [Документ $Документ]
         |,   Данные.IdDocDef as Документ_вид
         |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
         |,   Данные.Агент as [Агент $Справочник.Агент]
         |,   Данные.количество
         |,   Данные.Коэффициент
         |from (
         |    SELECT
         |       Жур.IDDoc as IDDoc
         |   ,   Жур.IdDocDef as IdDocDef
         |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
         |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агент        
         |   ,   isnull($ДокС.Коэффициент, $ДокН.Коэффициент) Коэффициент        
         |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
         |   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 (
         |      select  
         |            max($Спр.Коэффициент) as Коэффициент
         |         ,Спр.parentext as Владелец
         |    from $Справочник.ЕдИзм as Спр (nolock)
         |        where $Спр.Ед =:ВыбЕдиница
         |            and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |        group by Спр.parentext
         |   ) as СпрЕдиницы on СпрЕдиницы.Владелец = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
         |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
         |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
Вариант 2:
|    select    
           |        Жур.iddoc as [Док $Документ]
           |        ,Жур.iddocdef as [Док_вид $ВидДокумента]  
           |        ,Таб.Товар as [Товар $Справочник.ТМЦ]
           |        ,sum(Таб.Количество) as КоличествоВБазовойЕдиницеИзмерения
           |        ,sum(Таб.Количество/isnull(СпрЕдиницы.Коэффициент,1)) as КоличествоВЯщиках
         |        ,Таб.Агент as [Агент $Справочник.Агент]
         |        ,Таб.количество
         |        ,Таб.Коэффициент
         |    from
         |        (
           |      select
         |            $ДокС.ТМЦ as Товар
         |            ,ДокС.iddoc as Документ
         |            ,$ДокС.Кво*$ДокС.Коэффициент as Количество
           |         from  $ДокументСтроки.РасходнаяНакладная as ДокС (nolock)
         |      union all
         
         |      select
         |            $ДокН.ТМЦ
         |            ,ДокН.iddoc
         |            ,$ДокН.Кво*$ДокН.Коэффициент as Количество  
         |          ,isnull($ДокШ.Агент, $ДокШН.Агент) Агент        
         |      from  $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock)
         |            left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
         |            left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
         |        )as Таб
         | inner join
         |            _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
           |            and Жур.iddocdef in ($ВидДокумента.РасходнаяНакладная,$ВидДокумента.РасходнаяНакладнаяН)
         |            and Жур.Date_Time_IDDoc BETWEEN :НачДата and :КонДата~
           |            and Жур.Closed&1 = 1
         | left join (
         |   select  
         |         max($Спр.Коэффициент) as Коэффициент
         |          ,Спр.parentext as Владелец
         |   from $Справочник.ЕдИзм as Спр (nolock)
         |   where $Спр.Ед =:ВыбЕдиница
         |         and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |   group by Спр.parentext
         | ) as СпрЕдиницы on СпрЕдиницы.Владелец = Таб.Товар      
         | group by  Жур.iddoc,Жур.iddocdef,Таб.Товар";
538 bananan
 
02.04.13
13:17
+ Хотя... Первый вариант - вроде работает, но не возвращает ниодной записи...
539 bananan
 
02.04.13
13:21
+ Таки первый вариант что-то да выдает (период год) - выдал 8 записей....
540 bananan
 
02.04.13
16:49
Запрос работает, но (я не удивляюсь.. :().ко для вывода таблицы что-то глючит (код такой:
   Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ");
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокАгентов","Агент");          
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокКлиентов","Клиенты");          
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   Запрос.УстановитьТекстовыйПараметр("ВыбЕдиница", ВыбЕд);  
   
   ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
   ТбЗн.Выбратьстроку();
   Вопрос("Строк в результате (ТбЗн.КоличествоСтрок(): "+ТбЗн.КоличествоСтрок());
   
   Таб = СоздатьОбъект("Таблица");
   Таб.ИсходнаяТаблица("Таблица");
   Таб.ВывестиСекцию("Шапка");
   Таб.Опции(0,0,Таб.ВысотаТаблицы());
   Пока ТбЗн.Получитьстроку()=1 Цикл
       Таб.ВывестиСекцию("Документ");                            
       Сообщить("ТбЗн.Документ="+ТбЗн.Документ+" ТбЗн.Агент:"+ТбЗн.Агент+" ТбЗн.ТМЦ"+ТбЗн.ТМЦ);
       Сообщить("ТбЗн.количество="+ТбЗн.количество+" ТбЗн.Коэффициент:"+ТбЗн.Коэффициент+" --");
   КонецЦикла;                      
   Таб.ВывестиСекцию("Документ");
   Таб.ТолькоПросмотр(1);
   //Таб.Защита(0);        ;
   //Таб.ОбластьПечати(2);    
   Таб.Показать("Журнал-документов: ("+ПериодСтр(ДатаС, ДатаПо)+")", );        


Так вот, ни одна секция не выводится (в цикл не поападаем). что здесь глючит?
541 viktor_vv
 
02.04.13
16:56
До дыр вглядываемся в

ТбЗн.Выбратьстроку();
542 viktor_vv
 
02.04.13
16:57
(525) Тебя видно серьезно зацепило :).
Таи справедливость должна восторжествовать :).
543 bananan
 
02.04.13
17:04
(541) Просто перед ТбЗн.Получитьстроку() надо вызывать ТбЗн.ВыбратьСтроки();
(542) А он, как я вижу с самого (своего) начала зацепленный...
544 bananan
 
02.04.13
17:40
Такой вопрос (вывожу в Таблицу Агент, Клиент, ТМЦ)
если в данной строе Агент такой же как и был в предыдущей, то Агент не выводить...
Как это в коде написать?
Пробывал так:
Пред = СоздатьОбъект("Справочник");
   Пока ТбЗн.Получитьстроку()=1 Цикл  
       Если ТбЗн.Агент<>Пред Тогда
           Таб.ВывестиСекцию("Док2");                            
       Иначе
           Таб.ВывестиСекцию("Документ");                            
       КонецЕсли                                                
   КонецЦикла;                      
Он мне выводит все без поля Агент, т.е. я неправильно проверяю равен ли текущий Агент предыдущему...
Как это правильно написать?
И еще на форме у меня реквезит диалога ВыбЕд - в таблице пишу выражение ВыбЕд - ничего не выводит. Как правильно вывести в таблицу реквизит диалога?
545 КонецЦикла
 
02.04.13
17:41
Умопомрачительно...
Чел предпочитает строчить он-лайн вместо того чтобы отладчик запустить
Может установить веб-камеру и типа такого?
http://blog.geocam.ru/2012/04/04/alutaguse-webcam/
546 bananan
 
02.04.13
17:44
(545) Отладчик здесь явно ничем не поможет...
547 bananan
 
02.04.13
17:49
+ еще вопрос я выбираю ТМЦ так:
and isnull($ДокС.ТМЦ, $ДокН.ТМЦ) IN (SELECT Val FROM #СписокТМЦ)
необходимо выбрать Агентов (ну и соответственно документы) которые продавали ВСЕ из указаных ТМЦ (тмц указывается в диалоге) как это озапросить?
548 bananan
 
02.04.13
17:51
+ в диалоге есть реквизит ВыбЕд. Как его вывести в поле Таблицы? ВыюЕд/выражение/ - не выводит он выбраную пользователем единицу измерения..
549 ЧеловекДуши
 
03.04.13
08:36
(546) Соглашусь, в вашем случаи, даже отладчик бессилен :)
...им же еще надо уметь пользоваться... ;)
550 ЧеловекДуши
 
03.04.13
08:37
(548) Не знаю, я бессилен, а ты? (подумай)
551 bananan
 
03.04.13
10:17
Доброе утро всем! Вчера форум досило ну и у меня со скриптом было мягко говоря не все в порядке... Но в конце-концов добился, чтобы запрос работал. Но мне надо вывести на вывод коэфициент преобразования единицы измерения в другую ед. измерения
Запрос теперь такой:
 |SELECT
         |    Данные.IDDoc as [Документ $Документ]
         |,   Данные.IdDocDef as Документ_вид
         |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
         |,   Данные.Агент as [Агент $Справочник.Агент]
         |,   Данные.Клиент [Клиент $Справочник.Клиенты]
         |,   Данные.количество
         |,   Данные.Коэффициент
         |,   Данные.СпрЕдиницы
         |from (
         |    SELECT
         |       Жур.IDDoc as IDDoc
         |   ,   Жур.IdDocDef as IdDocDef
         |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
         |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агент        
         |   ,   isnull($ДокШ.Клиент, $ДокШН.Клиент) Клиент  
         |   ,   isnull($ДокС.Коэффициент, $ДокН.Коэффициент) Коэффициент        
         |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
         |   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 (
         |      select  
         |            max($Спр.Коэффициент) as Коэффициент
         |         ,Спр.parentext as Владелец
         |     from $Справочник.ЕдИзм as Спр (nolock)
         |         where $Спр.Ед =:ВыбЕдиница
         |            and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |         group by Спр.parentext
         |      ) as СпрЕдиницы on СпрЕдиницы.Владелец = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
         |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
         |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
         Если ВыбТМЦ.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокС.ТМЦ, $ДокН.ТМЦ) IN (SELECT Val FROM #СписокТМЦ)";
         КонецЕсли;      
         Если ВыбАгент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT Val FROM #СписокАгентов)";
         КонецЕсли;      
         Если ВыбКлиент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT Val FROM #СписокКлиентов)";
         КонецЕсли;      
   ТекстЗапроса = ТекстЗапроса +"
         |) Данные ";            
Выдает:
 Invalid column name 'СпрЕдиницы'.
552 Wobland
 
03.04.13
10:18
так это ты вчера свой скрипт на мисту заддосил?
553 Wobland
 
03.04.13
10:20
ещё раз. следи внимательно за руками
>>выбрать таб1.поле1 из (выбрать таб2.поле2 из таб2) как таб1
опля! нету поля1 в таблице таб1
554 bananan
 
03.04.13
10:26
(552) Нет, мы мирные люди...
(553) Сейчас попробую сам разораться...
555 bananan
 
03.04.13
10:38
Да но  СпрЕдиницы находиться у меня в таблице Данные:
) as СпрЕдиницы on СпрЕдиницы.Владелец = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
         |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
         |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
         Если ВыбТМЦ.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокС.ТМЦ, $ДокН.ТМЦ) IN (SELECT Val FROM #СписокТМЦ)";
         КонецЕсли;      
         Если ВыбАгент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT Val FROM #СписокАгентов)";
         КонецЕсли;      
         Если ВыбКлиент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT Val FROM #СписокКлиентов)";
         КонецЕсли;      
   ТекстЗапроса = ТекстЗапроса +"
         |) Данные ";
556 Wobland
 
03.04.13
10:39
(555) вот это у тебя в Данных:

Жур.IDDoc as IDDoc
         |   ,   Жур.IdDocDef as IdDocDef
         |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
         |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агент        
         |   ,   isnull($ДокШ.Клиент, $ДокШН.Клиент) Клиент  
         |   ,   isnull($ДокС.Коэффициент, $ДокН.Коэффициент) Коэффициент        
         |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
557 ЧеловекДуши
 
03.04.13
10:40
(555) Ты непробиваемый ...Т... :)
558 bananan
 
03.04.13
10:41
т.е. этот селект где и выбирается СпрЕдиницы надо заальясить какой-то другой таблицей?
559 Wobland
 
03.04.13
10:42
(558) покажи мне селект, где у тебя и выбирается СпрЕдиницы
560 Mikeware
 
03.04.13
10:42
(557) зато с ума не сойдет... :-)
561 bananan
 
03.04.13
10:42
(559) он внутри Данные:
left join (
         |      select  
         |            max($Спр.Коэффициент) as Коэффициент
         |         ,Спр.parentext as Владелец
         |     from $Справочник.ЕдИзм as Спр (nolock)
         |         where $Спр.Ед =:ВыбЕдиница
         |            and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |         group by Спр.parentext
         |      ) as СпрЕдиницы on СпрЕдиницы.Владелец = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
562 Wobland
 
03.04.13
10:43
до меня дошло. он не понимает, что запрос - это набор операторов. для него это функция типа чёрного ящика, которой передаются какие-то параметры методом копи-паста
563 Wobland
 
03.04.13
10:44
(561) не выбирается
564 Mikeware
 
03.04.13
10:44
(562) тормоз..
об этом еще три месяца назад говорили...
:-)))
565 bananan
 
03.04.13
10:44
(562) До меня не дошло, ну и ты не прав по поводу черного ящика...
А как мне достучаться к СпрЕдиницы из внешнего запроса?
566 ЧеловекДуши
 
03.04.13
10:45
(561) Если оно в нутри, то с чего ты взял, что оно попадет в наружу?
567 Wobland
 
03.04.13
10:46
(564) я для себя открытие сделал: так можно ;)
(565) запомни: запрос - это отдельный скрипт в скрипте. со своим поведением
568 ЧеловекДуши
 
03.04.13
10:48
(565) Еще раз, Ты видешь тут свою "СпрЕдиницы.<Какой-то Алиес>"?


         |       Жур.IDDoc as IDDoc
         |   ,   Жур.IdDocDef as IdDocDef
         |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
         |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агент        
         |   ,   isnull($ДокШ.Клиент, $ДокШН.Клиент) Клиент  
         |   ,   isnull($ДокС.Коэффициент, $ДокН.Коэффициент) Коэффициент        
         |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество



Вот и я нет :)
569 bananan
 
03.04.13
10:55
(568) И я не вижу, но мне надо к нему достучаться...
Пробывал так:
|       left join (
         |      (select  
         |            max($Спр.Коэффициент) as Коэффициент
         |         ,Спр.parentext as Владелец
         |     from $Справочник.ЕдИзм as Спр (nolock)
         |         where $Спр.Ед =:ВыбЕдиница
         |            and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |         group by Спр.parentext
         |      ) as СпрЕдиницы on СпрЕдиницы.Владелец = isnull($ДокС.ТМЦ, $ДокН.ТМЦ))СпрКоеф
Не пропускает - выдает:
 Incorrect syntax near the keyword 'on'.
570 ЧеловекДуши
 
03.04.13
10:55
(569) Дак добавь!
571 Wobland
 
03.04.13
10:55
а select 'Hello, world!' не предлагали ещё?
572 ЧеловекДуши
 
03.04.13
10:55
СпрЕдиницы.Владелец
573 ЧеловекДуши
 
03.04.13
10:56
(571) Предлагал, но он не верит в успех сего примера.
Хотя уже на протяжении десятилетий народ доказывает обратное :)
574 ЧеловекДуши
 
03.04.13
10:57
+(572) СпрЕдиницы.Владелец as МояЕдиницО_Я_Бонан
575 bananan
 
03.04.13
10:57
(570) Добавить on куда?
576 bananan
 
03.04.13
10:58
(574) но есть ведь:
|         group by Спр.parentext
         |       ) as СпрЕдиницы on СпрЕдиницы.Владелец = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
Здесь и обыявлыется алиас СпрЕдтнцы
577 ЧеловекДуши
 
03.04.13
10:59
(575) Там, где оно и было до того, как добавил :)
Он - http://www.k-press.ru/cs/2009/3/join/join.asp

Четать до просветления...
578 Wobland
 
03.04.13
10:59
(576) алиас чего?
579 ЧеловекДуши
 
03.04.13
10:59
580 bananan
 
03.04.13
10:59
(574) СпрЕдиницы.Владелец as - где добавить?
581 Wobland
 
03.04.13
11:00
(579) он не умеет
582 ЧеловекДуши
 
03.04.13
11:01
(580) Вот, мой кошелек, 410011818257089, 500..р и я тебе помогу кодом :)
583 ЧеловекДуши
 
03.04.13
11:01
+(582) Это Яндекс кошелек
584 bananan
 
03.04.13
11:01
(579) (581) Сейчас читаю  http://www.k-press.ru/cs/2009/3/join/join.asp
585 ЧеловекДуши
 
03.04.13
11:02
(584) Нет, давай плати, а то я так не заработаю :)
586 bananan
 
03.04.13
11:02
(582) Яндекс денег у меня нет, ЧеловекБабла
587 Wobland
 
03.04.13
11:02
(584) слушай, я вот кроссворды разгадываю левой рукой. но я утверждаю, что я не умею писать
588 bananan
 
03.04.13
11:07
(587) Бывает. Хорошо, что ты читать умеешь...
589 ЧеловекДуши
 
03.04.13
11:13
590 ЧеловекДуши
 
03.04.13
11:13
(588) А ты пишешь, но читать не умеешь, это феномен :)
591 bananan
 
03.04.13
11:14
(578) алиас на:
|      (select  
         |            max($Спр.Коэффициент) as Коэффициент
         |         ,Спр.parentext as Владелец
         |     from $Справочник.ЕдИзм as Спр (nolock)
         |         where $Спр.Ед =:ВыбЕдиница
         |            and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |         group by Спр.parentext
         |      ) as СпрЕдиницы on СпрЕдиницы.Владелец = isnull($ДокС.ТМЦ, $ДокН.ТМЦ))СпрКоеф
592 ЧеловекДуши
 
03.04.13
11:16
(591) Это не Алиес, вот что такое Алиес http://dimonchik.com/sql-alias.html

Читать до просветления... :)

А вот что такое Джоин wiki:Join_(SQL)
593 bananan
 
03.04.13
11:16
(590) Писать и читать я умею, да и в конце-коцов с вашей помощью за три месяцы я написал больше двух десятков скриптов
594 ЧеловекДуши
 
03.04.13
11:16
+(591) От тебя нужно алиес объявленной переменной в запросе Селект
595 ЧеловекДуши
 
03.04.13
11:17
(593) Брешишь, ты можешь писать, но не умеешь читать...
Иначе уже бы все делал сам :)
596 bananan
 
03.04.13
11:18
(592) О Джоинах я уже знаю и вроде разобрался...
по поводу (591) (select...) СпрКоеф - это разве не означает что все что в круглыъ скобках - это таблица СпрКоеф?
597 ЧеловекДуши
 
03.04.13
11:19
+(593) Вот, тут обсуждали, что такое многоуровневый запрос :)

http://www.sql.ru/forum/actualthread.aspx?tid=736202
598 sapphire
 
03.04.13
11:19
left join (
         |      select  
         |            max($Спр.Коэффициент) as Коэффициент
         |         ,Спр.parentext as Владелец
         |      from $Справочник.ЕдИзм as Спр (nolock)
         |         where $Спр.Ед =:ВыбЕдиница
         |            and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |         group by Спр.parentext
         |       ) as СпрЕдиницы on СпрЕдиницы.Владелец = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
599 Wobland
 
03.04.13
11:20
(593) ещё раз. я способен воспроизводить буквы на бумаге, но медленно и корявою. я не умею писать. ты способен складывать буквы в слова. ты не умеешь читать
600 sapphire
 
03.04.13
11:20
(597) Ты бы его еще technet читать отправил :)
Долбобей же читать не умеет - только копипаста, только хардкор :)
601 bananan
 
03.04.13
11:21
(598) Не понял у меня же так же как и ты напмсал:
|       left join (
         |      select  
         |            max($Спр.Коэффициент) as Коэффициент
         |         ,Спр.parentext as Владелец
         |     from $Справочник.ЕдИзм as Спр (nolock)
         |         where $Спр.Ед =:ВыбЕдиница
         |            and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |         group by Спр.parentext
         |      ) as СпрЕдиницы on СпрЕдиницы.Владелец = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
602 ЧеловекДуши
 
03.04.13
11:21
(596) Нате, почитайте... http://www.firststeps.ru/sql/oracle/r.php?36
603 ЧеловекДуши
 
03.04.13
11:22
(600) Ну, он не могёт гуглом пользоваться, а мне платить не хочет. Так что что гуг дал, туда и отправил :)
604 Wobland
 
03.04.13
11:22
(602) >мы почти приблизились к завершению оператора SELECT
незачёт
605 sapphire
 
03.04.13
11:22
(601) сравни текст в (598) и в (591)
606 ЧеловекДуши
 
03.04.13
11:24
(605) Вроде одно и тоже, ты его вообще запутать хочешь?
607 bananan
 
03.04.13
11:25
(602) прочитал и что с того?
608 bananan
 
03.04.13
11:26
(605) Сравнил тектс - ИДЕНТИЧНЫ практическ один в один
609 sapphire
 
03.04.13
11:27
(606)  Кроме того, что в (598) отсутствует довесок строки ")СпрКоеф"

а в (569) со скобками бяда...
610 sapphire
 
03.04.13
11:28
(608) Глазки протри
611 bananan
 
03.04.13
11:29
(609) Ни и чего мутить? Где в (601) довесок строки??
612 bananan
 
03.04.13
11:29
(610) Протер и утром я всегда умываюсь после душа...
613 bananan
 
03.04.13
11:31
Неужели нельзя просто объянсить, а не наслаждаться своей гениальной жестокостью?
614 Wobland
 
03.04.13
11:31
(612) стесняюсь спросить, а во время душа нет?
615 Wobland
 
03.04.13
11:32
(613) не одна сотня постов ушла на объяснения. да хотя б Ицик - ваще грамотно всё объясняет
616 bananan
 
03.04.13
11:36
(615) Хорошо в запросе:
|SELECT
         |    Данные.IDDoc as [Документ $Документ]
         |,   Данные.IdDocDef as Документ_вид
         |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
         |,   Данные.Агент as [Агент $Справочник.Агент]
         |,   Данные.Клиент [Клиент $Справочник.Клиенты]
         |,   Данные.количество
         |,   Данные.Коэффициент
         |,   Данные.СпрЕдиницы
         |from (
         |    SELECT
         |       Жур.IDDoc as IDDoc
         |   ,   Жур.IdDocDef as IdDocDef
         |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
         |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агент        
         |   ,   isnull($ДокШ.Клиент, $ДокШН.Клиент) Клиент  
         |   ,   isnull($ДокС.Коэффициент, $ДокН.Коэффициент) Коэффициент        
         |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
         |   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 (
         |      select  
         |            max($Спр.Коэффициент) as Коэффициент
         |         ,Спр.parentext as Владелец
         |     from $Справочник.ЕдИзм as Спр (nolock)
         |         where $Спр.Ед =:ВыбЕдиница
         |            and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |         group by Спр.parentext
         |      ) as СпрЕдиницы on СпрЕдиницы.Владелец = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
         |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
         |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
         Если ВыбТМЦ.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокС.ТМЦ, $ДокН.ТМЦ) IN (SELECT Val FROM #СписокТМЦ)";
         КонецЕсли;      
         Если ВыбАгент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT Val FROM #СписокАгентов)";
         КонецЕсли;      
         Если ВыбКлиент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT Val FROM #СписокКлиентов)";
         КонецЕсли;      
   ТекстЗапроса = ТекстЗапроса +"
         |) Данные ";            
объявлен Алиас as СпрЕдиницы
Как к этому алиасу обратиться к этому алиасу из внешнего запроса?
617 sapphire
 
03.04.13
11:39
(611) Ты вообще обнаглел что ли? В (601) ты скопипастил код и еще возмущаешься :)
618 sapphire
 
03.04.13
11:40
|SELECT
         |    Данные.IDDoc as [Документ $Документ]
         |,   Данные.IdDocDef as Документ_вид
         |,   Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ]
         |,   Данные.Агент as [Агент $Справочник.Агент]
         |,   Данные.Клиент [Клиент $Справочник.Клиенты]
         |,   Данные.количество
         |,   Данные.Коэффициент
         |from (
         |    SELECT
         |       Жур.IDDoc as IDDoc
         |   ,   Жур.IdDocDef as IdDocDef
         |   ,   isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as ТМЦ
         |   ,   isnull($ДокШ.Агент, $ДокШН.Агент) Агент        
         |   ,   isnull($ДокШ.Клиент, $ДокШН.Клиент) Клиент  
         |   ,   isnull($ДокС.Коэффициент, $ДокН.Коэффициент) Коэффициент        
         |   ,   isnull($ДокС.Кво*$ДокС.Коэффициент, $ДокН.Кво*$ДокН.Коэффициент) Количество
         |   ,   isnull(СпрЕдиницы.Коэффициент,0) Коэффициент
         |   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 (
         |      select  
         |            max($Спр.Коэффициент) as Коэффициент
         |         ,Спр.parentext as Владелец
         |      from $Справочник.ЕдИзм as Спр (nolock)
         |         where $Спр.Ед =:ВыбЕдиница
         |            and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |         group by Спр.parentext
         |       ) as СпрЕдиницы on СпрЕдиницы.Владелец = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
         |   WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
         |     AND Жур.IdDocDef in ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) ";
         Если ВыбТМЦ.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокС.ТМЦ, $ДокН.ТМЦ) IN (SELECT Val FROM #СписокТМЦ)";

         КонецЕсли;      
         Если ВыбАгент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT Val FROM #СписокАгентов)";

         КонецЕсли;      
         Если ВыбКлиент.РазмерСписка()>0 Тогда
           ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT Val FROM #СписокКлиентов)";

         КонецЕсли;      
   ТекстЗапроса = ТекстЗапроса +"
         |) Данные ";
619 Wobland
 
03.04.13
11:41
(616) алиас - это псевдоним, замена чьего-то имени. что заменяется на СпрЕдиницы?
620 bananan
 
03.04.13
11:44
(617) Я скопипаситл код со своего скрпита.
621 bananan
 
03.04.13
11:44
(619) На Спрединицы заменяется:
|      select  
         |            max($Спр.Коэффициент) as Коэффициент
         |         ,Спр.parentext as Владелец
         |      from $Справочник.ЕдИзм as Спр (nolock)
         |         where $Спр.Ед =:ВыбЕдиница
         |            and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |         group by Спр.parentext
622 Wobland
 
03.04.13
11:45
(621) чей алиас?
623 Wobland
 
03.04.13
11:45
(622) не дойдёт. алиас таблицы. есть таблицы, а есть поля. это очень разные вещи
624 bananan
 
03.04.13
11:46
(618) Это я копипастю? Ты выложил сюда код один в один моего запроса
625 sapphire
 
03.04.13
11:47
Как феерично...
626 sapphire
 
03.04.13
11:47
(624) Да ну?
627 bananan
 
03.04.13
11:47
(622) а разве (621) не возвращает таблицу?
628 sapphire
 
03.04.13
11:48
(624) А где у тебя есть во вложенном запросе поле:
|   ,   isnull(СпрЕдиницы.Коэффициент,0) Коэффициент

покажи, не стесняйся
629 sapphire
 
03.04.13
11:48
(627) Забористая у тебя трава, однака...
630 Mikeware
 
03.04.13
11:48
(626)Дожили... ты у бананана скрипты воруешь... :-)))
феерия, мля...
:-)))
631 bananan
 
03.04.13
11:50
(628) что-то я уже СОВСЕМ запутался во вложено по отношению к тому коду который ты привел или как?
632 bananan
 
03.04.13
11:51
(629) (630) Я не говорю о воровстве, просто он показал мой код к чему это было? травы не курю, алкоголь - не употребляю
633 Mikeware
 
03.04.13
11:51
"Если посмотреть сверху, то снизу кажется, что сбоку ничего не видно..."©
634 Mikeware
 
03.04.13
11:52
(632) так тебе алкоголь только для запаха...
635 bananan
 
03.04.13
11:53
(634) Опят же есть запрос  см 618
теперь надо достучаться до СпрЕдиницы во внешнем (самом первом селекте) Как это сделать?
636 Wobland
 
03.04.13
11:53
(632) прочитай (605) ещё 604 раза и подумай хотя б трижды
637 bananan
 
03.04.13
11:54
(634) ну ты из чилябиньска унюхал...
638 bananan
 
03.04.13
11:55
(605) Оба текста ИДЕНТИЧНЫ чего там читать???
639 Wobland
 
03.04.13
12:01
(638) тогда начни пить. или курить
640 bananan
 
03.04.13
12:08
(639) Только что скурил сигарету  (не поверишь но от этого примеры из (605) НЕ изменились...
641 Wobland
 
03.04.13
12:09
(640) ладно, два вопроса.
-крайний символ в (598) какой?
-крайний символ в (591) какой?
642 Mikeware
 
03.04.13
12:10
(639) а зачем? дури ему это уже не прибавит. больше некуда...
643 Wobland
 
03.04.13
12:11
(642) если внешняя дурь будет в противофазе с внутренней, есть шанс
644 Privalov
 
03.04.13
12:11
(640) Брось это!
645 bananan
 
03.04.13
12:15
в (598) крайний левый - l правый - )
в (591) - совсем не те символы
но в данных постах несовсем одинаковые вещи обсуждаются....
646 bananan
 
03.04.13
12:16
Ясно все с вами - БОЛЬШОЕ спасибо за советы и большое не спасибо за ваши издевки...
647 Wobland
 
03.04.13
12:17
(645) примеры из (605) уже изменились?
648 Junior1s
 
03.04.13
12:17
(646) тебе все равно придется читать документацию... пойми, сейчас тебе опять помогут, а дальше что ? на что надеешься ?
649 bananan
 
03.04.13
12:23
(648) Документацию я читаю...
Как нестранно в ней нет ограничения на исаользования алиаса на таблицу котрая используюется в левом джоине...
А почему:
c = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная
         |       left join (
         |      select  
         |            max($Спр.Коэффициент) as Коэффициент
         |         ,Спр.parentext as Владелец
         |     from $Справочник.ЕдИзм as Спр (nolock)
         |         where $Спр.Ед =:ВыбЕдиница
         |            and $Спр.Коэффициент>0
         |         and Спр.ismark=0
         |         group by Спр.parentext
         |      ) as СпрЕдиницы on СпрЕдиницы.Владелец = isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
я не могу обраьтиться из внешщнегно запроса к СпрЕдиницы?
650 Wobland
 
03.04.13
12:25
(649) можешь. какое поле тебя интересует?
651 bananan
 
03.04.13
12:28
(650) Блин! С вшей помощью, яы сейчас не могу сказать какое поле меня там интересует.
Еще раз спасибо за издевки и осорбления
652 Wobland
 
03.04.13
12:39
(651) во втором предложении мне показалось, пациент уже близок к просветлению. ан нет, третье убеждает в обратном
653 Wobland
 
03.04.13
12:40
а ведь почти щёлкнуло, а? обидно ;)
654 ЧеловекДуши
 
03.04.13
12:48
(640) Звучит, как - "Забил косячок...%)"
655 ЧеловекДуши
 
03.04.13
12:50
(649) Все еще не поймешь, что тебе нужно нанять программиста, а не пытаться своим "мозгом" или еще чем осилить непостижимое :)
... 400 р... и я за тебя напишу твой Алиас, там где надо :)
656 ЧеловекДуши
 
03.04.13
12:50
+(649) Можешь, обратиться, только ты не обращаешься :)
657 ЧеловекДуши
 
03.04.13
12:51
(651) А мы теперь должны твои мысли читать? :D
658 ЧеловекДуши
 
03.04.13
12:51
(652) Тоже думал, пока сайт висел, а ннет, он там же где и всегда...
659 bananan
 
03.04.13
12:55
Хорошо такой вопрос у меня в таблице агенти, клиенты и прочее так вот мне надо чтобы поле агент выводилось а потом шли все клиенты данного агента, потом следующий агент со своими клиентами и прочее...
Пробывал и так и сяк - никак не получается.
К примеру в коде:
Пред = СоздатьОбъект("Справочник.Агент");
   Пока ТбЗн.Получитьстроку()=1 Цикл        
       Если ТбЗн.Агент<>Пред Тогда
           Таб.ВывестиСекцию("Док2");                            
       Иначе
           Таб.ВывестиСекцию("Документ");                            
       КонецЕсли                                                
   КонецЦикла;                      
---
ТбЗн.Агент<>Пред никогда не справедливо...
Как правильно мне оюъявить или создать Пред чтобы сравнивать его с Агент из Таблицы значений?
660 Junior1s
 
03.04.13
12:58
(659) бред какой то.
661 Mikeware
 
03.04.13
13:00
(660) почему "какой-то"? обычный бананановский бред...
662 Mikeware
 
03.04.13
13:01
(643) а если "синфазно"?
663 Wobland
 
03.04.13
13:02
(662) а вот тут как раз наступает ситуация "дальше некуда". ничто не может двигаться со скоростью, превышающей скорость света. правда, у Эйнштейна хитрее всё..
664 bananan
 
03.04.13
13:05
4 поста и ничего кроме оскорблений... прощайте ребята! Спасибо за вче то что я научился от вас..
665 sapphire
 
03.04.13
13:26
(662) (663) Он нас покинул?!
666 Wobland
 
03.04.13
13:30
как-то нехорошо покинул, за здоровье опасаюсь. но ведь научился чему-то, а? ;)
667 Mikeware
 
03.04.13
13:33
(666) может, мое письмо все-таки достигло адресата? :-)
668 Wobland
 
03.04.13
13:35
(667) звонки, письма... что ты там такое делал?
669 Mikeware
 
03.04.13
14:03
(668) Ну, с просьбой переправить письмо ИТ-руководителю. со ссылкой на мизду и на ветки этого зверька... чисто чтоб тот в курсе был... я ни в коем случае не просил увольнять...
670 Wobland
 
03.04.13
14:09
(669) ох, жесток ;) впрочем, нормальному руководителю после нескольких месяцев общения с работником и так понятно всё будет.
у нас декан красиво экзамен принимал (в отдельных случаях). никаких испытаний, никаких билетов, литература допустима любая. просто брал и разговаривал о предмете. за полчаса со студентом всё становилось ясно
671 Wobland
 
03.04.13
14:10
хехе, у меня первый вопрос был "как называется курс?" тогда не ответил, сейчас и подавно не помню. но четвёрку получил ;)
672 Mikeware
 
03.04.13
14:11
(670) у нас хорошие преподы делали точно так же.
на экзамене - любая литература в твоем распоряжении.
(
673 Mikeware
 
03.04.13
14:35
(671) у нас вообще прикол был: забыли у нас принять экзамен по курсу типа цифровая схемотехника в  обработке информации, или типа того (препод заболел, и после выздоровления уехал). Очнулись уже после госов. Ну, сдать мы сдали "не глядя" (ну, уже и по 3-4 года по "хитрым" хозтемам (ЗГРЛС, ФАР, системы эмуляции и отладки микроконтроллерных устройств) отработали, и т.п.), но по правилам "на 5" нужно ответить на доп вопрос...   И вот человеку, достаточно хорошо знающему не один десяток языков программировния (в т.ч. наизусть - систему команд 80-го, например) задают вопрос: "что такое ASCII?"... нужно было видеть его лицо....  он не мог поверить, что этот вопрос "с одним смыслом"... пыжился и искал "двойное дно" в вопросе, соображал, на чем его пытаются поймать...
ржака...
674 viktor_vv
 
03.04.13
14:39
Да уж, как-то грустно, наверное, будет :).
Судя по (659) я уже приготовился еще на пару веток по индексированной таблице :).
675 sapphire
 
03.04.13
16:12
Бананан Долбобей покинул нас.
RIP....
676 ЧеловекДуши
 
03.04.13
17:09
Ура, банан будет читать книги!!!!
Я надеюсь :)
677 ЧеловекДуши
 
03.04.13
17:10
+ Или наймет программиста... Чет мне подсказывает, что банан был начальником и жутко не хотел нанимать специалиста :)
678 Mikeware
 
03.04.13
17:10
(676) а если он будет их _ПИСАТЬ_? :-)
679 Wobland
 
03.04.13
17:11
(676) тебе ещё объяснить, что чтение предполагает хоть какое-то осмысление? ;) не будет
680 sapphire
 
03.04.13
17:37
(678) Ты обижаешь змею _ТАКОЙ_ нотацией :)
Кстати,
Релиз компилятора Python - Nuitka 0.4.2:В данной версии Nuitka на тесте pystone производительнее CPython на 258% :)
681 sapphire
 
03.04.13
17:38
(679) Он будет смотреть грустно на форум как его гнусно поминают
682 ЧеловекДуши
 
03.04.13
17:41
(678) Это будет проблема :)
683 ЧеловекДуши
 
03.04.13
17:41
(679) Я подумал, что если его тут уже стали игнорировать, то он одумается :)
684 bananan
 
04.04.13
10:02
Доброе утро! Псоле того как я вчера попрощался с вами, было еще почти 20 постов...
Ладно... Я вот вчера пытался таки сам написать скрипт.
текс такой:
   | select    
         |    Жур.iddoc as [Док $Документ]
         |    ,Жур.iddocdef as [Док_вид $ВидДокумента]  
         |    ,Таб.Товар as [Товар $Справочник.ТМЦ]
         |    ,sum(Таб.Количество/isnull(СпрЕдиницы.Коэффициент, 1)) as КоличествоВЕд
         |    ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as [Клиент $Справочник.Клиент]
         |from
       |    (
         |        select
       |            $ДокС.ТМЦ as Товар
       |            ,ДокС.iddoc as Документ
       |            ,$ДокС.Кво*$ДокС.Коэффициент as Количество
         |        from  $ДокументСтроки.РасходнаяНакладная as ДокС (nolock)
         |    union all
       |        select
       |            $ДокН.ТМЦ
       |            ,ДокН.iddoc
       |            ,$ДокН.Кво*$ДокН.Коэффициент as Количество
         |    from  $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock)
       |    )as Таб
       | inner join                                
       |    _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
         |    and Жур.iddocdef in ($ВидДокумента.РасходнаяНакладная,$ВидДокумента.РасходнаяНакладнаяН)
         |    and Жур.Date_Time_IDDoc BETWEEN :НачДата and :КонДата~
         |    and Жур.Closed&1 = 1
         |    left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная        
         |   Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН
         | left join (
       |     select  
       |           max($Спр.Коэффициент) as Коэффициент
       |            ,Спр.parentext as Владелец
       |     from $Справочник.ЕдИзм as Спр (nolock)
       |     where $Спр.Ед =:ВыбЕдиница
       |           and $Спр.Коэффициент>0
       |           and Спр.ismark=0
       |     group by Спр.parentext
       |   ) as СпрЕдиницы on СпрЕдиницы.Владелец = Таб.Товар
       | group by  Жур.iddoc,Жур.iddocdef,Таб.Товар";
Выдает:
Column 'ДокШ.SP1158' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.
Если убрать из внешнего Селекта ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as [Клиент $Справочник.Клиент] - запрос будет работать, но, естественно не будет выдавать все необходимые поля..
Оштбка в GROYP BY? Как ее обойти? Подскажите, пожалйста!
685 Wobland
 
04.04.13
10:04
добавь в туда недостающее поле
686 Wobland
 
04.04.13
10:06
>было еще почти 20 постов...
ваще-то ветка автору не принадлежит ;)
687 bananan
 
04.04.13
10:10
(685) т.е. в ПрупБай добавить Клиент или как?
688 bananan
 
04.04.13
10:12
Написал так:
| group by  Жур.iddoc,Жур.iddocdef,Таб.Товар, Клиент
не пропускает:
 Invalid column name 'Клиент'.
689 Wobland
 
04.04.13
10:16
(688) а клиент от какой таблицы тут?
690 Wobland
 
04.04.13
10:18
и да. груп бай алиасов не понимает. Ицик в самом начале об этом говорил - на разборе порядка выполнения запроса. так что не ври больше о том, что ты что-то читаешь
691 Mikeware
 
04.04.13
10:18
копипастнг на марше...
692 Mikeware
 
04.04.13
10:19
неужели письмо не дошло?
693 Mikeware
 
04.04.13
10:20
(690) с ициком я не знаком, поэтому уточни, плз - кто чего не понимает?
694 Wobland
 
04.04.13
10:20
да хрен с ней с первой, но вторую главу читать до просветления.
695 Wobland
 
04.04.13
10:21
(693) перевожу на русский. group by нужны сами поля, как описаны в селекте, а не их псевдонимы
696 Wobland
 
04.04.13
10:22
а вот в order by можно и псевдонимы, ибо запрос к тому моменту уже почти закончился ;)
697 bananan
 
04.04.13
10:24
(690) Я вообще старасю не врать. Неужели ты все помнишь из того что прочитал?
НАписал так:
group by  Жур.iddoc,Жур.iddocdef,Таб.Товар, isnull($ДокШ.Клиент, $ДокШН.Клиент)";
выдает:
Ошибка типизации поля Клиент $Справочник.Клиент.
когда сделал типизацию:
 group by  Жур.iddoc,Жур.iddocdef,Таб.Товар, isnull($ДокШ.Клиент, $ДокШН.Клиент) as [Клиент $Справочник.Клиент]
выдало:
 Incorrect syntax near the keyword 'as'
Какой синтаксис будет коректным?
698 Wobland
 
04.04.13
10:26
эх, помню себя в молодости. полное отупение и непонимание "родных" семёрочных запросов. с опытом это никуда не делось, но приобрелось умение работать с sql-запросами. а без этого тупил б как бананан..
699 Wobland
 
04.04.13
10:26
(697) вторая глава
700 Mikeware
 
04.04.13
10:27
(695) а, ну это естественно. "Ежу понятно"©
701 Mikeware
 
04.04.13
10:28
(698) я их так и не знаю.
Ибо пришлось сразу работать с более-менее приличными базенками... поэтому сразу на прямые...
702 bananan
 
04.04.13
10:29
isnull($ДокШ.Клиент, $ДокШН.Клиент) - это правильная конструкция для ГроупБай?
as [Клиент $Справочник.Клиент] - если это некорректно, то как будет коректно?
703 Wobland
 
04.04.13
10:30
лет ми гугл ит фор ю. страница 40, крайний абзац на русском языке
704 Wobland
 
04.04.13
10:31
(701) я от них чешусь в самых неожиданных местах ©
(702) второе предложение с конца. читай до посинения. как дойдёт, сигнализируй.
705 Wobland
 
04.04.13
10:32
(704) вырванное из контекста всей главы, не очень понятно. но ключ в там
706 Wobland
 
04.04.13
10:39
а раз уж секция в юморе, просветите меня, что я такое написал, желая получить количество услуг в ТЧ документов и общее количество строк:

   |Функция СчётчикУслуг = Счётчик(1) когда ((ВидНоменклатуры=Перечисление.ВидыНоменклатуры.Услуга) ИЛИ (ВидНоменклатуры=Перечисление.ВидыНоменклатуры.Услуга));
   |Функция СчётчикВсего = Счётчик(1);

что за счётчик? чего он считает? писалось методом бананана, я действительно не понимаю, как это работает
707 Wobland
 
04.04.13
10:39
гы! там ИЛИ Работа должно быть ;)
708 bananan
 
04.04.13
10:40
(704) А по человечески сказать не можно?
709 Wobland
 
04.04.13
10:43
(708) задолбал уже. возьми ложку сам
710 bananan
 
04.04.13
10:46
(709) Да читаю я вторую главу Ицыка, но пока о типизации там ничего нет (и подозреваю что там (во второй главе) о типизации ниченго и не будет)...
711 sapphire
 
04.04.13
10:49
А я думал его потеряли.
712 Wobland
 
04.04.13
10:50
(710) у sql'я нет типизации в твоём понимании вообще, в принципе, по определению
713 Wobland
 
04.04.13
10:51
зато есть разные секции (Ицик их называет стадиями), слова там всякие ключевые..
714 Wobland
 
04.04.13
10:52
(711) мы таки сделаем эту тыщу!
715 Mikeware
 
04.04.13
10:52
(713) заинтриговал. пшёль я искать ицика...
716 Mikeware
 
04.04.13
10:52
(714) и не одну!
717 bananan
 
04.04.13
10:53
(713) и об этом ичтал раньше и в данный момент читаю но... as можно использовать в секции Group By?
718 Wobland
 
04.04.13
10:55
(715) качественно излагает. лично мне очень многое понятно или очевидно из опыта/образования, но читается тем не менее увлекательно ;)
719 Wobland
 
04.04.13
10:59
(717) читай ещё. до тех пор, пока не поймёшь, как работают фром, селект и груп бай
720 bananan
 
04.04.13
11:00
А может as в Group By нельзя применять? Тогда как типизировать Клиент в Group By?
721 bananan
 
04.04.13
11:01
(719) Селект - обрабатывается последним...
722 Wobland
 
04.04.13
11:03
(721) стр. 35
723 Wobland
 
04.04.13
11:04
(720) типизация - это наворот 1С++, позволяющий "конвертировать" строковые значения (ИД) в какие-то другие типы, например, в справочник. теперь сам ответь на свой вопрос
724 bananan
 
04.04.13
11:17
(723) Я понимая, ято типизация наворот от 1С, но как написать правильно:
group by  Жур.iddoc,Жур.iddocdef,Таб.Товар, isnull($ДокШ.Клиент, $ДокШН.Клиент) as [Клиент $Справочник.Клиент]";    
(722) что после селкта еще обрабатываются - я тоже знаю... order by, например....
Скажите пожалуйста, как мне корректно объявить isnull($ДокШ.Клиент, $ДокШН.Клиент) /т.е. поле Клиент/ в секции GROUP BY?
725 Wobland
 
04.04.13
11:19
(724) в груп бай не объявляется ничего. там только указываются поля группировки
726 bananan
 
04.04.13
11:20
(725) Хорошо как правильно указать поле Клиент в Group By?
727 Wobland
 
04.04.13
11:21
раз: как типизировать Клиент в Group By?
два: Я понимая, ято типизация наворот от 1С
----
три: правильно говорить: "я понял"
728 Wobland
 
04.04.13
11:22
(726) мож, у того же Ицика подглядеть и сделать по аналогии?
729 bananan
 
04.04.13
11:22
+(726) Блин, просто надо убрать типизацию и в Селекте и в гроуп... и работает оно.
Это можно было сказать час назад, а не стебатся!
730 Wobland
 
04.04.13
11:23
(729) это можно было сделать недель шесть назад, а не долбиться
731 bananan
 
04.04.13
11:23
(728) У того же Ицыка подобного  (во второй главе - по крайней мерен) нет!
732 bananan
 
04.04.13
11:23
(730) Какие учетеля - такой и ученик!
733 Wobland
 
04.04.13
11:24
интересно, (729) случайно вышло или явилось результатом каких-то электромагнитных колебаний высшей нервной системы? ;)
734 Wobland
 
04.04.13
11:25
(731) страница 40, крайний запрос
735 bananan
 
04.04.13
11:25
(732) Ладно, но мне надо на выходе выдать коректное наименование Клиента, а не 1ZQ и прочею ьилеберду...
736 bananan
 
04.04.13
11:27
+(735) На сколько я понимаю, если добавить в селекте еще типизированый клиент - SQL будет требовать клиента в GROUP BY?
Как это обойти?
Как мне выдать в итоговой Таблице Значений Клиент: Иванов а не Клаент:1ZQ?
737 Wobland
 
04.04.13
11:29
(732) это да, это мы тут дураки неотёсанные, элементарного объямснит не можем
738 Mikeware
 
04.04.13
11:30
(733) это явилось результатом нецеленаправленных действий "а-ля обезъяна за пишущей машинкой".  
Ибо он делал неосознаваемые действия. о чем, собственно, новорит и полученный результат. - (735)
739 bananan
 
04.04.13
11:32
(738) Уважаемый Микимаус, покажи нормальный результат!
740 bananan
 
04.04.13
11:35
(739) Я бы с радостью выбросил Group By, но без него - запрос работать не будет...
Кто знает как мне в Селекте типизировать клиент, чтобы видеть на экране нормальное наименование клиента, и как это обойти в Group By?
741 Mikeware
 
04.04.13
11:38
(739) вам - только за деньги.
742 Wobland
 
04.04.13
11:39
(738) мда.. педагогика - не моё ;)
743 Wobland
 
04.04.13
11:44
(740) а кто раньше работает: селект или груп?
744 sapphire
 
04.04.13
11:44
(729) Да ты чо? Как это?
Ты же все читал. А вот строки сравнивать не умеешь.
745 sapphire
 
04.04.13
11:45
(740) Долбобей однака...
746 sapphire
 
04.04.13
11:46
(743) Издеваешься, да? :))))))))))))
747 Wobland
 
04.04.13
11:48
(746) развиваю в себе учителя ;)
748 sapphire
 
04.04.13
11:48
(743) мне (740) напомнило
Я с радостью б выбросил
этот Group By,
к select-ам почтения нету...
Но надо ...
:)))
749 sapphire
 
04.04.13
11:50
(740)
Если в select-е
Есть поле Клыент
То типизировать надо
Клыент [Клыент $Справочник.Клыенты]
750 Wobland
 
04.04.13
11:51
751 Wobland
 
04.04.13
11:51
(750) не в тему, но навеяло ;)
752 sapphire
 
04.04.13
11:54
(750) :)
753 bananan
 
04.04.13
11:55
(743) Груп раньше работает
754 bananan
 
04.04.13
11:56
(749) не проходит:
   | select    
         |    Жур.iddoc as [Док $Документ]
         |    ,Жур.iddocdef as [Док_вид $ВидДокумента]  
         |    ,Таб.Товар as [Товар $Справочник.ТМЦ]
         |    ,sum(Таб.Количество/isnull(СпрЕдиницы.Коэффициент, 1)) as КоличествоВЕд
         |    ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as [Клиент $Справочник.Клиент]
         |from
       |    (
         |        select
       |            $ДокС.ТМЦ as Товар
       |            ,ДокС.iddoc as Документ
       |            ,$ДокС.Кво*$ДокС.Коэффициент as Количество
         |        from  $ДокументСтроки.РасходнаяНакладная as ДокС (nolock)
         |    union all
       |        select
       |            $ДокН.ТМЦ
       |            ,ДокН.iddoc
       |            ,$ДокН.Кво*$ДокН.Коэффициент as Количество
         |    from  $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock)
       |    )as Таб
       | inner join                                
       |    _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
         |    and Жур.iddocdef in ($ВидДокумента.РасходнаяНакладная,$ВидДокумента.РасходнаяНакладнаяН)
         |    and Жур.Date_Time_IDDoc BETWEEN :НачДата and :КонДата~
         |    and Жур.Closed&1 = 1
         |    left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладная        
         |   Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = $ВидДокумента.РасходнаяНакладнаяН
         | left join (
       |     select  
       |           max($Спр.Коэффициент) as Коэффициент
       |            ,Спр.parentext as Владелец
       |     from $Справочник.ЕдИзм as Спр (nolock)
       |     where $Спр.Ед =:ВыбЕдиница
       |           and $Спр.Коэффициент>0
       |           and Спр.ismark=0
       |     group by Спр.parentext
       |   ) as СпрЕдиницы on СпрЕдиницы.Владелец = Таб.Товар
       | group by  Жур.iddoc,Жур.iddocdef,Таб.Товар, isnull($ДокШ.Клиент, $ДокШН.Клиент)";    
выдает:
 Ошибка типизации поля Клиент $Справочник.Клиент.
755 Wobland
 
04.04.13
11:57
(753) а потом наступает селект, и в нём ты хочешь из строки сделать справочник. так?
756 Wobland
 
04.04.13
11:58
протрите мне веки! у него же union all!!!
757 bananan
 
04.04.13
11:59
(755) А как это сделать? Как нормально показать Клиент в селекте (читивыя что клиент - это справочник.Клиент)?
758 bananan
 
04.04.13
12:01
(756) А ты думал я только копи-пастить умею?
759 Wobland
 
04.04.13
12:04
(758) я и сейчас так думаю. а оишбки типизации не вижу
760 viktor_vv
 
04.04.13
12:05
(754) Да КлиентЫ у тебя справочник, ну че ж так тупить-то?
761 viktor_vv
 
04.04.13
12:05
(760)+ Ну, по крайней мере, мне так кажется :).
762 viktor_vv
 
04.04.13
12:07
Если лень в конфигураторе посмотреть, можешь еще Контрагенты попробовать.
763 Wobland
 
04.04.13
12:07
(761) ну если оне количество называют квом, то в контрагентах чего угодно ожидать можно
764 viktor_vv
 
04.04.13
12:09
(763) Ну Кво - это в типовой укр бухии так.
765 Mikeware
 
04.04.13
12:10
(762) $Справочник.Чуваки
766 viktor_vv
 
04.04.13
12:11
(765) $Справочник.ЧувакиИЧувихи :)
767 viktor_vv
 
04.04.13
12:12
(766)+ Это правда больше к справочнику сотрудников подходит :).
768 Wobland
 
04.04.13
12:12
(764) ё-моё...
Страхотен, страхотна
Достаточно распространенное слово, переводящееся на русский как «суперский», «офигенный», «обалденный».
769 bananan
 
04.04.13
12:12
(761) Точно! Спасибо!
770 Wobland
 
04.04.13
12:14
$Directory.Entrepreneur
771 bananan
 
04.04.13
12:16
Всем Спасибо! Зайду к вам на форум, когда захочеться мозахизмом позанииматься...
772 Wobland
 
04.04.13
12:24
Задание сделано,
Увяли все листья.
Прощай, бананан
773 ЧеловекДуши
 
04.04.13
12:34
(684) Учись сссынОк, пользоваться он лайн переводчиком :)

Было:
Column 'ДокШ.SP1158' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Стало:
Column 'ДокШ.SP1158 "недопустим в списке выбора, поскольку он не содержится ни в статистической функции или GROUP BY предложение.
774 ЧеловекДуши
 
04.04.13
12:35
(698) Как банан? Да как банан никто не может :)
775 ЧеловекДуши
 
04.04.13
12:37
(710) А это надо запечатлеть... Ты только вторую осилил? :)
776 Wobland
 
04.04.13
12:40
(774) да может ;)

на закуску можно посмотреть (706) и "озапросить" кусок кода:
   Если Запрос.Выполнить(ТекстЗапросаПроВозвратУслуг)=1 Тогда
       Пока Запрос.Группировка(1)=1 Цикл
           Если Запрос.СчётчикУслуг=Запрос.СчётчикВсего Тогда

то есть выбрать документы, целиком состоящие из услуг. практической ценности задача не имеет, сделал и забыл. но всё ж интересно
777 Junior1s
 
04.04.13
13:06
ИМХО, человек просто привык всему по жизни учиться на практике. раскидал ДВС, потом начал читать документацию, разобрал системник, после начал думать как собрать, ну и т.п.
778 viktor_vv
 
04.04.13
13:09
(776) и (706) Функция Счётчик() возвращает количество обработанных строк в запросе.
779 Wobland
 
04.04.13
13:14
а Счётчик(1)? Функция СчётчикВсего = Счётчик(1) эквивалентна Функция СчётчикВсего = Счётчик() ?
780 ЧеловекДуши
 
04.04.13
13:28
(777) Ты его предыдущие ветки не видел :)
...
Вопросы все однотипны, он их повторяет каждый раз, ни одного нового вопроса, и по 2-4 дня буксует на одном и том же месте.

Для практики как-то 2-4 дня будет много, не находите?
781 ЧеловекДуши
 
04.04.13
13:29
(779) Проверь :)
782 Sensodin
 
04.04.13
13:32
продолжайте наблюдения
тысяча уже близко
783 Wobland
 
04.04.13
13:34
(782) не, не дотянем
(781) хорошо, поверю. вроде согласуется со смыслом ;)
784 Гризли
 
04.04.13
13:39
Порносериал на 1000 постов, актеры и банан?
785 sapphire
 
04.04.13
17:04
Да он, ТС, еще и извращенец, что и не удивительно :)
786 DrZombi
 
гуру
05.04.13
08:47
(784) Чувствую главный героинь ушёл с канала :(
...
До 1000 не дотянем :)
787 bananan
 
08.04.13
16:04
(784) Гризи, гризи и ...рочи...
Всем, добрый день!
Нашел я в интернете "Консоль запросов" установил себе на машину пытаюсь разобраться (автор консоли: © 2007, 2008, 2009 by Ivan T Berezdetsky, [email protected]). Этой консолью кто-то пользовался? если да - то как она вам? ну и если не сложно пример ее использования...
788 Ёпрст
 
08.04.13
16:08
(787) в глаза её никто не видел, примеров нет
789 Ёпрст
 
08.04.13
16:08
А сам Иван скрывается на форуме 1cpp и не отвечает никому.
790 bananan
 
08.04.13
16:14
(789)  взял я эту консоль отсюда: http://www.1cpp.ru/forum/YaBB.pl?num=1193394153
791 Ёпрст
 
08.04.13
16:15
(790) Не, никто её не видел, никто не пользовался - ты первый!
:)
792 bananan
 
08.04.13
16:17
(791) в данном случае - не верю я тебе
793 sapphire
 
08.04.13
16:18
(789) Да вроде не скрывается он :)
Написал ему письмецо про эту ветку...
794 bananan
 
08.04.13
16:19
ладно с консолью разбиратьс буду: мне надо посмотреть какой запрос бедет выполняться. код такой:
ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
   ТбЗн.Отладка();
выдает: Поле агрегатного объекта не обнаружено (Отладка)
Что я опять перепутал?
795 Ёпрст
 
08.04.13
16:20
(794) у таблицы значений нет метода Отладка()
796 sapphire
 
08.04.13
16:22
(795) Это если не использовать свои классы :)
797 bananan
 
08.04.13
16:23
(795) Это я знаю, а как правильно это написать?
Где я торможду:
Запрос=СоздатьОбъект("ODBCRecordset");    
   ТекстЗапроса = "
       | select    
         |    Жур.iddoc as [Док $Документ]
..
Запрос.УстановитьТекстовыйПараметр("ВыбЕдиница", ВыбЕд);  
   
   ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
Запрос.Отладка - ничего не появляется (текст запроса...)
ну а ТбЗн.Отлдака() - поле не обнаружено..
798 Ёпрст
 
08.04.13
16:24
(797)
Запрос.УстановитьТекстовыйПараметр("ВыбЕдиница", ВыбЕд);  
Запрос.Отладка(1);
ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
799 bananan
 
08.04.13
16:35
(798) Спасибо. А что за параметр (1) в данном случае?
800 Mikeware
 
08.04.13
16:36
Сообщить(Идиот.Хронический()) выводит строку bananan
801 Wobland
 
08.04.13
16:37
(799) истина
802 Wobland
 
08.04.13
16:37
//чесслово, первый раз вижу Отладка(1). но уверен. как так?
803 bananan
 
08.04.13
16:37
(800) Ты, как всегда... Хроический х............б............
804 Mikeware
 
08.04.13
16:38
(803)
"- еще мусульмане есть?
-- вот те хрест, с тобой последний ушел..."
©
805 Wobland
 
08.04.13
16:39
а тысяча будет. ура!
806 Mikeware
 
08.04.13
16:46
(805) а жалко, что его не уволили...
807 Ёпрст
 
08.04.13
16:47
808 bananan
 
08.04.13
16:49
Вот сейчас я точно НИЧЕГо не понял... Когда текст запроса такой:
       | select    
         |    Жур.iddoc as [Док $Документ]
         |    ,Жур.iddocdef as [Док_вид $ВидДокумента]  
         |    ,Таб.Товар as [Товар $Справочник.ТМЦ]
         |    ,sum(Таб.Количество/isnull(СпрЕдиницы.Коэффициент, 1)) as КоличествоВЕд
         |    ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as [Клиент $Справочник.Клиенты]
         |    ,isnull($ДокШ.Агент, $ДокШН.Агент) as [Агент $Справочник.Агент]        
         |    ,isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as [ТМЦ $Справочник.ТМЦ]
         |from
       |    (
         |        select
       |            $ДокС.ТМЦ as Товар
       |            ,ДокС.iddoc as Документ
       |            ,$ДокС.Кво*$ДокС.Коэффициент as Количество
         |        from  $ДокументСтроки.РасходнаяНакладная as ДокС (nolock)
         |    union all
       |        select
       |            $ДокН.ТМЦ
       |            ,ДокН.iddoc
       |            ,$ДокН.Кво*$ДокН.Коэффициент as Количество
         |    from  $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock)
       |    )as Таб
       | inner join                                
       |    _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
         |    and Жур.iddocdef in ($ВидДокумента.РасходнаяНакладная,$ВидДокумента.РасходнаяНакладнаяН)
         |    and Жур.Date_Time_IDDoc BETWEEN :НачДата and :КонДата~
         |    and Жур.Closed&1 = 1
         |    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 (
       |     select  
       |           max($Спр.Коэффициент) as Коэффициент
       |            ,Спр.parentext as Владелец
       |     from $Справочник.ЕдИзм as Спр (nolock)
       |     where $Спр.Ед =:ВыбЕдиница
       |           and $Спр.Коэффициент>0
       |           and Спр.ismark=0
       |     group by Спр.parentext
       |   ) as СпрЕдиницы on СпрЕдиницы.Владелец = Таб.Товар
       | group by  Жур.iddoc,Жур.iddocdef,Таб.Товар, isnull($ДокШ.Клиент, $ДокШН.Клиент),isnull($ДокШ.Агент, $ДокШН.Агент), isnull($ДокС.ТМЦ, $ДокН.ТМЦ)";    
выдает скрипт 99497 строк
если текст запроса такой:
       | select    
         |    Жур.iddoc as [Док $Документ]
         |    ,Жур.iddocdef as [Док_вид $ВидДокумента]  
         |from
       |    (
         |        select
       |            $ДокС.ТМЦ as Товар
       |            ,ДокС.iddoc as Документ
       |            ,$ДокС.Кво*$ДокС.Коэффициент as Количество
         |        from  $ДокументСтроки.РасходнаяНакладная as ДокС (nolock)
         |    union all
       |        select
       |            $ДокН.ТМЦ
       |            ,ДокН.iddoc
       |            ,$ДокН.Кво*$ДокН.Коэффициент as Количество
         |    from  $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock)
       |    )as Таб
       | inner join                                
       |    _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
         |    and Жур.iddocdef in ($ВидДокумента.РасходнаяНакладная,$ВидДокумента.РасходнаяНакладнаяН)
         |    and Жур.Date_Time_IDDoc BETWEEN :НачДата and :КонДата~
         |    and Жур.Closed&1 = 1
         |    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 (
       |     select  
       |           max($Спр.Коэффициент) as Коэффициент
       |            ,Спр.parentext as Владелец
       |     from $Справочник.ЕдИзм as Спр (nolock)
       |     where $Спр.Ед =:ВыбЕдиница
       |           and $Спр.Коэффициент>0
       |           and Спр.ismark=0
       |     group by Спр.parentext
       |   ) as СпрЕдиницы on СпрЕдиницы.Владелец = Таб.Товар
       | group by  Жур.iddoc,Жур.iddocdef,Таб.Товар";    
То запрос выдает 1834 строки..
Почему В первом варианте добивались поля для выбора (ну и соответственно они появились и в Group By).
Оба раза запрос запускался на одинаковый период дат?
Почему во втором случае строк вышло в 54 с лишним раза больше?
809 bananan
 
08.04.13
16:54
и еще... я на форме даю возможность выбрать товар, агента и клиента...
куда в запрос (второй вариант) вставить проверку на наличие этих (товар, агент. клиент)... что-то я с понедельника туплю...
810 Ёпрст
 
08.04.13
16:55
Да уж.. а ничего, что во втором запросе количество группировок меньше ?
811 Ёпрст
 
08.04.13
16:56
Ты хоть примерно представляешь, что есть group by вообще ?
812 Wobland
 
08.04.13
16:57
(811) ну скажет он "да" - соврёт, скажет "нет" - результат один: не знает
813 bananan
 
08.04.13
16:59
(811) Представляю...
Проверку на клиенты добавил так:
| group by  Жур.iddoc,Жур.iddocdef,Таб.Товар, isnull($ДокШ.Клиент, $ДокШН.Клиент),isnull($ДокШ.Агент, $ДокШН.Агент), isnull($ДокС.ТМЦ, $ДокН.ТМЦ)
       |  WHERE #СписокКлиентов in isnull($ДокШ.Клиент, $ДокШН.Клиент)";    
ругается:
Incorrect syntax near the keyword 'WHERE'.
почему ему синтаксис не нтравится?
814 bananan
 
08.04.13
16:59
(812) Не умничай... Гриппировака это
815 Wobland
 
08.04.13
17:00
где СписокКлиентов в где?
816 bananan
 
08.04.13
17:00
жадее по коду:
Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ");
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокАгентов","Агент");          
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокКлиентов","Клиенты");          
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   Запрос.УстановитьТекстовыйПараметр("ВыбЕдиница", ВыбЕд);
817 Wobland
 
08.04.13
17:01
(814) а что это такое - группировка? не отвечай, не позорься
818 bananan
 
08.04.13
17:02
(817) по поводу where в моем запросе - не знаешь, то и не екзаменуй меня!
819 Wobland
 
08.04.13
17:03
(818) ответь на (815)
820 Wobland
 
08.04.13
17:05
я офигеть сколько много не знаю. но способен разобраться, в отличие от тебя. молчал бы уж
821 bananan
 
08.04.13
17:05
(819) смотри (816)
822 bananan
 
08.04.13
17:06
(820) Я не знаю гораздо больше чем ты, потому и спрашиваю
823 Wobland
 
08.04.13
17:06
(821) угу. переведи на русский: WHERE #СписокКлиентов in КакоеТоПоле
824 bananan
 
08.04.13
17:09
(823) Почему какоетополе?
in isnull($ДокШ.Клиент, $ДокШН.Клиент)
Что неправильно?
825 Wobland
 
08.04.13
17:11
(824) потому что неважно, какое поле. НекоеПоле
826 bananan
 
08.04.13
17:11
(823) Смешно? Кто служил в советской армии в цирке несмеется...
Что слабо было сказать что вера налор перед груп бай писать?
827 Wobland
 
08.04.13
17:16
а, ну ещё и это, да
828 bananan
 
08.04.13
17:16
+(826) все-равно что-то не то - написал:
|  WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ or #СписокКлиентов = isnull($ДокШ.Клиент, $ДокШН.Клиент)
       | group by  Жур.iddoc,Жур.iddocdef,Таб.Товар, isnull($ДокШ.Клиент, $ДокШН.Клиент),isnull($ДокШ.Агент, $ДокШН.Агент),
ругается:
Invalid column name '#СписокКлиентов'.
Как правильно передать в запрос Список клиентов который выбирается в окнеВыбКлиент?
829 Wobland
 
08.04.13
17:17
ты на русский переведёшь (823) уже?
830 Wobland
 
08.04.13
17:18
(829) сторно. #СписокКлиентов =...
831 bananan
 
08.04.13
17:19
(829) Смотрим какой теперь вера: (828)
832 Wobland
 
08.04.13
17:19
хотя не, ни фига не сторно. блин, задолбал уже своим стохастическим программингом
833 vinogradъ
 
08.04.13
17:20
(828) читал бы доки знал бы как получить объекты из списка, уложенного в таблицу при помощи УложитьСписокОбъектов
834 Wobland
 
08.04.13
17:20
(833) он не умеет
835 bananan
 
08.04.13
17:20
(833) обязательно прочитаю... А тебе не трудно сказать как правильно это написать?
836 bananan
 
08.04.13
17:21
(834) Ты за меня не расписывайся...
837 bananan
 
08.04.13
17:21
(833) Адрес где читать не напомнишь?
838 Wobland
 
08.04.13
17:21
(836) ты это сам доказываешь постоянно
839 vinogradъ
 
08.04.13
17:21
(835) не трудно, потому что я в свое время нашел и прочитал это
840 bananan
 
08.04.13
17:23
(838) Кроме того я на работе написал уже более 30ти запросов, большое спасибо вам за помощь, а вот не надо сбивать меня с толку...
841 bananan
 
08.04.13
17:23
(839) Адрес - на деревню дедушке... СПАСИБО!!!
842 bananan
 
08.04.13
17:42
на сколько я понимаю должно бытьт здесь http://www.1cpp.ru/docum/.
Где именно никто не подскажет?
843 vinogradъ
 
08.04.13
17:45
(842) да хотя бы так:
уложитьсписокобъектов site:1cpp.ru
844 Ёпрст
 
08.04.13
17:46
and (isnull($ДокШ.Клиент, $ДокШН.Клиент) in select val from #СписокКлиентов )
845 bananan
 
08.04.13
17:50
Блин написал так и заработало.
Неужели это трудно было просто сказать? isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #Списокклиентов)??
846 Wobland
 
08.04.13
17:50
(844) щас же опять ныть начнёт, не?
847 bananan
 
08.04.13
17:51
(846) На твою отрыжку ныть? Зачем? Сам ее нюхай!
848 Wobland
 
08.04.13
17:51
(845) а зачем?
849 Wobland
 
08.04.13
17:52
(847) не хами
850 bananan
 
08.04.13
17:58
(847) Поищи себе другого "мальяика для битья"... Тогда и хамить не буду
851 Mikeware
 
08.04.13
18:03
(832) вооюще-то, слово "стохастический" происходит от греческого "умеющий угадывать". так что зря ты это слово бананаом позоришь. он не умеет...
852 Mikeware
 
08.04.13
18:04
(850) забанить за хамство, или пусть живет? :-)
853 Wobland
 
08.04.13
18:06
(851) пациент прогрессирует: сам скобки вставил. или это от греков?..
854 ЧеловекДуши
 
08.04.13
18:07
855 SnarkHunter
 
08.04.13
18:09
Нельзя недооценивать предсказуемость тупизны (с)
Сначала просит помощи, потом обвиняет, что гранит был слишком крупно разжеван...
856 Mikeware
 
08.04.13
18:09
(853) скопиписдил! зуб даю! :-)))
857 bananan
 
08.04.13
18:10
тут я чего-то с вера напутал - какой период для документов не задаю - результат 0 строк...
вера у меня такой:
|  WHERE Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ and (isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #Списокклиентов))
       |        and (isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов)) and (isnull($ДокС.ТМЦ, $ДокН.ТМЦ) IN (SELECT val FROM #СписокТМЦ))
Что в нем неправильно?
858 Wobland
 
08.04.13
18:10
чо такое, а? где я в httpd.conf накосячил? апач ставлю. нет под рукой примера рабочего?

Forbidden

You don't have permission to access / on this server.
859 SnarkHunter
 
08.04.13
18:13
>> Что в нем неправильно?

Все просто: в нем содержатся взаимоисключающие условия.
860 Wobland
 
08.04.13
18:15
(859) да ну?
861 Wobland
 
08.04.13
18:15
(860) аа, дада
862 bananan
 
08.04.13
18:15
(859) Какие из них взаимоисключающие?
863 SnarkHunter
 
08.04.13
18:17
(862)Откуда же мне знать? Это зависит от содержимого временных таблиц, а мне их из дома не видно...
864 Wobland
 
08.04.13
18:17
(862) второе и третье
//спорим, не найдёт? ;)
865 bananan
 
08.04.13
18:17
+(862) Докменты должны быть в выюраном диаппазоне дат и клиентв и агенты и товары должны быть в окнах выбора...
866 SnarkHunter
 
08.04.13
18:19
(865)Ну и что? В выбранном диапазоне может не оказаться документов либо с указанными агентами, дибо с клиентами, либо с ТМЦ.
867 bananan
 
08.04.13
18:21
(866) Точно у меня в вера все правильно? птому что проверял на дату 20.11.12 раньше выдавал запрос несколько десятков строк... теперь не выдает ниодной...
А если в окнах выбора не выбраны ни агенты ни клиенты ни тмц? Тогда мой вера правильный или нет?
868 SnarkHunter
 
08.04.13
18:22
Слушай, это неинтересно - играть в ромашку: правильно - непраильно... Давай попробуем мозг задействовать?
869 bananan
 
08.04.13
18:24
(868) Думаешь мне обломно головой поработать? Просто с данным вера я что-то туплю...
870 Wobland
 
08.04.13
18:25
(869) а предыдущие тысячи постов откуда?
871 vinogradъ
 
08.04.13
18:26
(867) твой вера правильный, если в #Списокклиентов, и в #СписокАгентов, и в #СписокТМЦ что-то есть. Если в одном из них пусто, то вера даст пустое множество
872 bananan
 
08.04.13
18:27
(871) Спасибо, я буквально пару секунда назад это сообразил, сейчас перепешу текст запроса и он скорее всего заработает...
873 Wobland
 
08.04.13
19:08
встал апач. теперь проблема в связке php+mysql
в phpinfo() нет слова mysql. то есть, не взлетело.
>>Configuration File (php.ini) Path    C:\Windows
то есть, не нашлось

httpd.conf:
#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "c:/php"
LoadModule php5_module "c:/php/php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

никто не знает, что не так?
874 ЧеловекДуши
 
09.04.13
05:44
(869) Думается, тут все так думают :)
875 Privalov
 
09.04.13
06:31
(874) +100500
876 sapphire
 
09.04.13
09:19
(873) А почему в  phpinfo() должно быть что-то про мускул?
Вроде мухи обычно отдельно от котлет, не?
877 Wobland
 
09.04.13
09:59
(876) ну пхп же должен как-то уметь работать с скл. а в каком-то мануале успешность связки диагностировалась именно так.
//я впервые с этим работаю
878 Wobland
 
09.04.13
10:00
плюс к прочему тестовый пхпшный скрипт ругался на что-то типа Запрос.Выполнить() (всё дома, всё по памяти)
879 Wobland
 
10.04.13
05:59
продолжаю наблюдения. php познакомился с mysql, теперь нужно заиметь какую-то дазу банных, подключиться к ней, запросить... визуальных средств для этого не нашёл. может, плохо искал
880 oslokot
 
10.04.13
10:00
(879) phpMyAdmin ?
881 bananan
 
10.04.13
11:12
Доброе утро всем! Значит есть запрос:
ТекстЗапроса = "
       | select    
         |    Жур.iddoc as [Док $Документ]
         |    ,Жур.iddocdef as [Док_вид $ВидДокумента]  
         |    ,Таб.Товар as [Товар $Справочник.ТМЦ]
         |    ,sum(Таб.Количество/isnull(СпрЕдиницы.Коэффициент, 1)) as КоличествоВЕд
         |    ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as [Клиент $Справочник.Клиенты]
         |    ,isnull($ДокШ.Агент, $ДокШН.Агент) as [Агент $Справочник.Агент]        
         |    ,isnull($ДокС.ТМЦ, $ДокН.ТМЦ) as [ТМЦ $Справочник.ТМЦ]
         |from
       |    (
         |        select
       |            $ДокС.ТМЦ as Товар
       |            ,ДокС.iddoc as Документ
       |            ,$ДокС.Кво*$ДокС.Коэффициент as Количество
         |        from  $ДокументСтроки.РасходнаяНакладная as ДокС (nolock)
         |    union all
       |        select
       |            $ДокН.ТМЦ
       |            ,ДокН.iddoc
       |            ,$ДокН.Кво*$ДокН.Коэффициент as Количество
         |    from  $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock)
       |    )as Таб
       | inner join                                
       |    _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
         |    and Жур.iddocdef in ($ВидДокумента.РасходнаяНакладная,$ВидДокумента.РасходнаяНакладнаяН)
         |    and Жур.Date_Time_IDDoc BETWEEN :НачДата and :КонДата~
         |    and Жур.Closed&1 = 1
         |    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 (
       |     select  
       |           max($Спр.Коэффициент) as Коэффициент
       |            ,Спр.parentext as Владелец
       |     from $Справочник.ЕдИзм as Спр (nolock)
       |     where $Спр.Ед =:ВыбЕдиница
       |           and $Спр.Коэффициент>0
       |           and Спр.ismark=0
       |     group by Спр.parentext
       |   ) as СпрЕдиницы on СпрЕдиницы.Владелец = Таб.Товар
       |  WHERE (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~) ";
       Если ВыбТМЦ.РазмерСписка()>0 тогда
           ТекстЗапроса = ТекстЗапроса + "and (isnull($ДокС.ТМЦ, $ДокН.ТМЦ) IN (SELECT val FROM #СписокТМЦ))";
       КонецЕсли;
       Если ВыбАгент.РазмерСписка()>0 тогда
           ТекстЗапроса = ТекстЗапроса + " and (isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов))";
       КонецЕсли;
       Если ВыбКлиент.РазмерСписка()>0 тогда
           ТекстЗапроса = ТекстЗапроса + " and (isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #СписокКлиентов)) ";
       КонецЕсли;
       ТекстЗапроса = ТекстЗапроса + "group by  Жур.iddoc,Жур.iddocdef,Таб.Товар, isnull($ДокШ.Клиент, $ДокШН.Клиент),isnull($ДокШ.Агент, $ДокШН.Агент), isnull($ДокС.ТМЦ, $ДокН.ТМЦ)";    
   Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ");
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокАгентов","Агент");          
   Запрос.УложитьСписокОбъектов(ВыбКлиент, "#СписокКлиентов","Клиенты");          
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   Запрос.УстановитьТекстовыйПараметр("ВыбЕдиница", ВыбЕд);  
Теперь клиент попросил чтобы...
Скажем так Агент1 продал Клиенту1 10шт товра1, и 20шт Товара20, потом еще 20шт Товара1...
Надо чтобы выдавало Агент1  Клиент1 товар1 30
                                  товар2 20
Что-то ч с утра туплю, как это сделать?
882 Mikeware
 
10.04.13
11:46
"Что-то ч с утра туплю, как это сделать?" - у тебя все время утро?
883 bananan
 
10.04.13
11:52
(882) 11:12 это уже вечер?
+ у меня в запросе выбюирается sum(Таб.Количество/isnull(СпрЕдиницы.Коэффициент, 1)) as КоличествоВЕд
как его еще просуммировать?
884 bananan
 
10.04.13
12:06
Что? Никто не знает как это сделдать?
885 Wobland
 
10.04.13
12:10
(881) ну сгруппируй по агенту, клиенту и товару //запрос традиционно не смотрю
886 ЧеловекДуши
 
10.04.13
12:14
(881) Дак дай... я разрешаю :)
887 bananan
 
10.04.13
12:14
(885) Посмотри оно там и так все сгруппировано...
888 ЧеловекДуши
 
10.04.13
12:15
(884) Знают, но ты подумай :)
889 ЧеловекДуши
 
10.04.13
12:15
(887) Если оно там и так все сгруппировано, то от нас то что хотел? :)
890 Wobland
 
10.04.13
12:28
а что, на украине на коэффициент делят?
891 Wobland
 
10.04.13
12:31
(887) смотрю. вижу группировку по документу, виду документа...
892 bananan
 
10.04.13
12:36
(891) Точно! снял группировку по документам и по видам документов и все нормально. Спасибо!
893 bananan
 
10.04.13
13:09
Упс, чего-то я опять туплю. Выбираю я справочник доставка из шапки документа, меня интересует поле Адрес из этого справочника как к нему достучаться?
|    ,isnull($ДокШН.Доставка, $ДокШ.Доставка) as [Доставка $Справочник.Доставка]
894 Wobland
 
10.04.13
13:11
(893) признавайся, спал крайнюю неделю? ОЗУ очистилось. третий раз этот вопрос
895 bananan
 
10.04.13
13:12
(894) Когда быцли первый и второй разы??
896 Wobland
 
10.04.13
13:14
(895) в прошлых ветках
897 vinogradъ
 
10.04.13
13:15
(893) соединить со справочником Доставка
898 bananan
 
10.04.13
13:19
(897) и это я сделал:
|   left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка)
А как теперь выбрать поле Адрес из справочника Доставка?
899 Wobland
 
10.04.13
13:20
доставка.адрес, я так понимаю, не подходит.. что же делать?
900 vinogradъ
 
10.04.13
13:20
(898) а как ты "вытянул" поле Доставка из ДокШ?
901 bananan
 
10.04.13
13:22
(899) посмотри в прошлых ветках и там и останься (в прошлых ветках)
902 bananan
 
10.04.13
13:22
(900) |    ,isnull($ДокШН.Доставка, $ДокШ.Доставка) as [Доставка $Справочник.Доставка]
903 Wobland
 
10.04.13
13:25
(901) не хочу
904 bananan
 
10.04.13
13:41
Народ! подскажите, как мне добраться к полю Адрес из справочника Доставка (isnull($ДокШН.Доставка, $ДокШ.Доставка) as [Доставка $Справочник.Доставка])
905 orefkov
 
10.04.13
13:57
Думаю, что за ветка под штуку постов про запрос?
Захожу - действительно, запрос. На 10ти страницах уже.
Удивительно.
906 Wobland
 
10.04.13
13:59
(905) уже не первая
907 bananan
 
10.04.13
14:04
Всем (кроме  Wobland) - до встречи, с адресом доставки сам разобрался...
908 In123
 
10.04.13
14:26
(905) Это норма. Тут так принято.
909 In123
 
10.04.13
14:27
bananan Халявщик еще тот )))
910 bananan
 
10.04.13
14:36
Ок, запрос - работает и работает в основном правильно, но...
Выбираю в окне ТМЦ три товара для запроса выводит результаты и там кроме трех выбраных товаров есть еще несколько других товаров.
Скорее всего, я думаю, это что-то в БД неправильно записано, хотя... мой опыт работы с SQL... так что может и я что неправильно в запросе написал...
Текст скрипта без части  с выводом таблицы такой:
   ТекстЗапроса = "
       | select    
         |    Таб.Товар as [Товар $Справочник.ТМЦ]
         |    ,isnull($ДокШН.Доставка, $ДокШ.Доставка) as [Доставка $Справочник.Доставка]
         |    , $Доставка.Адрес as Адрес
         |    ,sum(Таб.Количество/isnull(СпрЕдиницы.Коэффициент, 1)) as КоличествоВЕд
         |    ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as [Клиент $Справочник.Клиенты]
         |    ,isnull($ДокШ.Агент, $ДокШН.Агент) as [Агент $Справочник.Агент]        
         |from
       |    (
         |        select
       |            $ДокС.ТМЦ as Товар
       |            ,ДокС.iddoc as Документ
       |            ,$ДокС.Кво*$ДокС.Коэффициент as Количество
         |        from  $ДокументСтроки.РасходнаяНакладная as ДокС (nolock)
         |    union all
       |        select
       |            $ДокН.ТМЦ
       |            ,ДокН.iddoc
       |            ,$ДокН.Кво*$ДокН.Коэффициент as Количество
         |    from  $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock)
       |    )as Таб
       | inner join                                
       |    _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
         |    and Жур.iddocdef in ($ВидДокумента.РасходнаяНакладная,$ВидДокумента.РасходнаяНакладнаяН)
         |    and Жур.Date_Time_IDDoc BETWEEN :НачДата and :КонДата~
         |    and Жур.Closed&1 = 1
         |    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 (
       |     select  
       |           max($Спр.Коэффициент) as Коэффициент
       |            ,Спр.parentext as Владелец
       |     from $Справочник.ЕдИзм as Спр (nolock)
       |     where $Спр.Ед =:ВыбЕдиница
       |           and $Спр.Коэффициент>0
       |           and Спр.ismark=0
       |     group by Спр.parentext
       |   ) as СпрЕдиницы on СпрЕдиницы.Владелец = Таб.Товар
       |  WHERE (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~)";
       Если ВыбТМЦ.РазмерСписка()>0 тогда
           ТекстЗапроса = ТекстЗапроса + "and (isnull($ДокС.ТМЦ, $ДокН.ТМЦ) IN (SELECT val FROM #СписокТМЦ))";
       КонецЕсли;
       Если ВыбАгент.РазмерСписка()>0 тогда
           ТекстЗапроса = ТекстЗапроса + " and (isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов))";
       КонецЕсли;
       Если ВыбКлиент.РазмерСписка()>0 тогда
           ТекстЗапроса = ТекстЗапроса + " and (isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #СписокКлиентов)) ";
       КонецЕсли;
       ТекстЗапроса = ТекстЗапроса + "group by isnull($ДокШ.Агент, $ДокШН.Агент), isnull($ДокШ.Клиент, $ДокШН.Клиент), Таб.Товар, $Доставка.Адрес, isnull($ДокШН.Доставка, $ДокШ.Доставка)
       | ORDER BY isnull($ДокШ.Агент, $ДокШН.Агент),isnull($ДокШ.Клиент, $ДокШН.Клиент), Таб.Товар";    
   Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ");
   Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокАгентов","Агент");          
   Запрос.УложитьСписокОбъектов(ВыбКлиент, "#СписокКлиентов","Клиенты");          
   Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС);  
   Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо);  
   Запрос.УстановитьТекстовыйПараметр("ВыбЕдиница", ВыбЕд);  
   //Запрос.Отладка(1);
   ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса);

Подскажите в чем проблема (почему в выбор попадают невыбранные товары)?
911 Туц
 
10.04.13
15:29
Это какой-то сериал, что-то похожее на лену из полипропилена.
912 Wobland
 
10.04.13
16:47
(910) дай текст готовый запроса, глаза ломаются так смотреть
913 viktor_vv
 
10.04.13
17:03
(912) Я так подозреваю, что там не в запросе дело, а в его ВыбТМЦ, где-то выше проскакивало, что это список с метками.
И под выбраны он подразумевает флажки. А во времянку грузит весь список.
Но от него хрен добьешся вразумительного ответа, что такое ВыбТМЦ.
914 vinogradъ
 
10.04.13
17:10
(913) угу, причем речь шла, что в списке и элементы и группы могут быть
915 Sensodin
 
10.04.13
17:14
закладка
916 viktor_vv
 
10.04.13
17:15
(915) К пятнице готовишься :).
917 batman69
 
10.04.13
17:48
(916) До пятницы кончится ветка ))
918 Сниф
 
10.04.13
18:26
1С++ с СКД еще не скрестили? Типа 7.7 с помощью 1С++ формирует XML и дает команду специальной базе 1С8 сформировать на СКД табличный документ и вернуть его в 7.7.
919 Wobland
 
10.04.13
18:35
(918) да нам бы select 'Hello, world!' пока
920 Mikeware
 
10.04.13
19:10
(918) можно. только зачем?
921 Mikeware
 
10.04.13
19:12
(918) можно даже проще :-)
квериконсоль, настраиваешь отображение полей, делаешь вывод в табличный документ, и вуаля...
день работы.
922 Сниф
 
11.04.13
01:47
(920) ну, вдруг кто на семерке решил навсегда задержаться =) Тогда 1С++ даст ему скорость выборки данных, а вспомогательная базка на 1С - сформирует из выборки красивый отчет. Вручную это делать, как я помню, крайне утомительно.

А что за квериконсоль?)
923 Mikeware
 
11.04.13
05:41
(922) ну, это для тех, кто работает на семерке :-) Без восьмерочных костылей :-)))
924 ЧеловекДуши
 
11.04.13
07:58
(919) Оппонент отказывается от традиционного познания прекрасного... Его больше всего интересует анальный метод познания SQL запросов (но почему то он их называет скриптами, как заядлый Web программист) :)
925 bananan
 
11.04.13
10:34
Даю текст запроса (когда есть выбранные тмЦ)
select    
   Таб.Товар as [Товар $Справочник.ТМЦ]
   ,isnull($ДокШН.Доставка, $ДокШ.Доставка) as [Доставка $Справочник.Доставка]
   , $Доставка.Адрес as Адрес
   ,sum(Таб.Количество/isnull(СпрЕдиницы.Коэффициент, 1)) as КоличествоВЕд
   ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as [Клиент $Справочник.Клиенты]
   ,isnull($ДокШ.Агент, $ДокШН.Агент) as [Агент $Справочник.Агент]        
from
   (
       select
           $ДокС.ТМЦ as Товар
           ,ДокС.iddoc as Документ
           ,$ДокС.Кво*$ДокС.Коэффициент as Количество
       from  $ДокументСтроки.РасходнаяНакладная as ДокС (nolock)
   union all
       select
           $ДокН.ТМЦ
           ,ДокН.iddoc
           ,$ДокН.Кво*$ДокН.Коэффициент as Количество
   from  $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock)
   )as Таб
inner join                                
   _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
   and Жур.iddocdef in ($ВидДокумента.РасходнаяНакладная,$ВидДокумента.РасходнаяНакладнаяН)
   and Жур.Date_Time_IDDoc BETWEEN :НачДата and :КонДата~
   and Жур.Closed&1 = 1
   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 (
    select  
          max($Спр.Коэффициент) as Коэффициент
           ,Спр.parentext as Владелец
    from $Справочник.ЕдИзм as Спр (nolock)
    where $Спр.Ед =:ВыбЕдиница
          and $Спр.Коэффициент>0
          and Спр.ismark=0
    group by Спр.parentext
  ) as СпрЕдиницы on СпрЕдиницы.Владелец = Таб.Товар
 WHERE (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~)and (isnull($ДокС.ТМЦ, $ДокН.ТМЦ) IN (SELECT val FROM #СписокТМЦ))group by isnull($ДокШ.Агент, $ДокШН.Агент), isnull($ДокШ.Клиент, $ДокШН.Клиент), Таб.Товар, $Доставка.Адрес, isnull($ДокШН.Доставка, $ДокШ.Доставка)
ORDER BY isnull($ДокШ.Агент, $ДокШН.Агент),isnull($ДокШ.Клиент, $ДокШН.Клиент), Таб.Товар:
Вообще по-моему в самом запросе вроде как все правильно, остается окно выбора ТМЦ...
У меня вызывает подозрение:
Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ");
926 ЧеловекДуши
 
11.04.13
10:36
(925) Узнаю, твой подчерк... ты его уже месяц трешь.
"Что, Данила Мастер, не получается каменный цветок?" (с)
927 ЧеловекДуши
 
11.04.13
10:37
+(925)>>> Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ");

Нормальный метод:

УложитьСписокОбъектов(<?>,<?>,<?>)
Синтаксис:
PutObjectList(ObjList, strTableName, strRefKinde)
Назначение:
сохраняет список объектов во временной таблице MS SQL. Идентификаторы
объектов из списка ObjList сохраняются во временной таблице strTableName. Таблица
имеет единственное поле val char(9). Имя таблицы должно начинаться с символа «#».
Если strRefKinde идентификатор иерархического справочника, то таблица будет
содержать элементы иерархически принадлежащие группам переданным в списке.
(Подобно оператору «в» стандартного языка запросов 1С.)
Параметры:
- ObjList (СписокЗначений/АгрегатныйТип): список для сохранения или
элемент справочника, группа справочника, документ и т.п.;
- strTableName (строка): имя таблицы;
- strRefKinde (строка): вид справочника для иерархического включения элементов или вид плана счетов для иерархического включения счетов;
928 bananan
 
11.04.13
11:01
(926) С этим скриптом я работаю третий день. а не месяц.
(927) У меня все вроде правильно...
А можно ли в 1С как-то посмотреть реальный текст запроса?
929 Ёпрст
 
11.04.13
11:05
(928)
мд = СоздатьОбъект("MetaDataWork");
   Сообщить(мд.ОбрМетаСКЛ(ТекстЗапроса));
930 bananan
 
11.04.13
11:07
(929) я применил Запрос.Отладка(1);
он выдает:

select    
   Таб.Товар as [Товар $Справочник.ТМЦ]
   ,isnull(ДокШН.sp4784, ДокШ.sp4783) as [Доставка $Справочник.Доставка]
   , Доставка.sp4782 as Адрес
   ,sum(Таб.Количество/isnull(СпрЕдиницы.Коэффициент, 1)) as КоличествоВЕд
   ,isnull(ДокШ.sp1158, ДокШН.sp4216) as [Клиент $Справочник.Клиенты]
   ,isnull(ДокШ.sp4332, ДокШН.sp4333) as [Агент $Справочник.Агент]        
from
   (
       select
           ДокС.sp1171 as Товар
           ,ДокС.iddoc as Документ
           ,ДокС.sp1173*ДокС.sp1174 as Количество
       from  dt1157 as ДокС (nolock)
   union all
       select
           ДокН.sp4235
           ,ДокН.iddoc
           ,ДокН.sp4237*ДокН.sp4238 as Количество
   from  dt4215 as ДокН (nolock)
   )as Таб
inner join                                
   _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
   and Жур.iddocdef in (1157,4215)
   and Жур.Date_Time_IDDoc BETWEEN '20121220' and '20121220Z'
   and Жур.Closed&1 = 1
   left join dh1157 as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc and Жур.IdDocDef = 1157        
  Left join dh4215 as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc and Жур.IdDocDef = 4215
  left join dt1157 as ДокС (nolock) on ДокС.iddoc = Жур.iddoc and Жур.IdDocDef = 1157
  left join dt4215 as ДокН (nolock) on ДокН.iddoc = Жур.iddoc and Жур.IdDocDef = 4215
  left join sc4780 Доставка (nolock) on Доставка.id = isnull(ДокШ.sp4783, ДокШН.sp4784)
left join (
    select  
          max(Спр.sp115) as Коэффициент
           ,Спр.parentext as Владелец
    from sc113 as Спр (nolock)
    where Спр.sp114 ='    1F   '
          and Спр.sp115>0
          and Спр.ismark=0
    group by Спр.parentext
  ) as СпрЕдиницы on СпрЕдиницы.Владелец = Таб.Товар
 WHERE (Жур.Date_Time_IDDoc BETWEEN '20121220' AND '20121220Z')and (isnull(ДокС.sp1171, ДокН.sp4235) IN (SELECT val FROM #СписокТМЦ))group by isnull(ДокШ.sp4332, ДокШН.sp4333), isnull(ДокШ.sp1158, ДокШН.sp4216), Таб.Товар, Доставка.sp4782, isnull(ДокШН.sp4784, ДокШ.sp4783)
ORDER BY isnull(ДокШ.sp4332, ДокШН.sp4333),isnull(ДокШ.sp1158, ДокШН.sp4216), Таб.Товар
Здесь вроде все правильно...
931 Mikeware
 
11.04.13
11:08
Если "все правильно" - какие тогда вопросы?
932 Ёпрст
 
11.04.13
11:08
>>>>У меня вызывает подозрение:
Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ");

Ага.. Справочник с видом "ТМЦ" есть у тебя в дереве метаданных ?
:))
933 Mikeware
 
11.04.13
11:09
(932) А ты сам-то как думаешь? :-)
934 Wobland
 
11.04.13
11:10
(929) а я спецгалку в 1CQA жмакаю ;)
935 bananan
 
11.04.13
11:23
(932) Да, есть такой справочник.
936 vinogradъ
 
11.04.13
11:25
(935) открой все-таки тайну: что такое ВыбТМЦ?
937 bananan
 
11.04.13
11:28
(936) Не знаю, как это правильно - назвать. это окно на форме (реквизит диалога) с типом справочник.ТМЦ...
938 Wobland
 
11.04.13
11:30
дельфист сказал бы "едит-бокс"
939 In123
 
11.04.13
11:34
(938) +100
940 vinogradъ
 
11.04.13
11:37
(937) тогда что за " ВыбТМЦ.РазмерСписка()>0 "
941 Wobland
 
11.04.13
11:38
(940) хм.. лист-бокс?
942 Ёпрст
 
11.04.13
11:39
это какой-то неправильный мёд..
запрос не очень верный.
943 Ёпрст
 
11.04.13
11:40
вот это вот всё нахрена там ?

  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 = $ВидДокумента.РасходнаяНакладнаяН
944 Wobland
 
11.04.13
11:40
>окно на форме (реквизит диалога) с типом
форма ж сама по себе окно.. и как элемент управления может участвовать в запросе? значит, всё-таки реквизит, визуализирующийся на форме непонятно чем. значит, никаких размеров списка. а они есть... или это во мне говорит восьмёрочный взгляд на мир?
945 vinogradъ
 
11.04.13
11:45
Скрин с ВыбТМЦ на форме в студию
946 bananan
 
11.04.13
11:45
(943) соединения, которые объявлют алиясы.
може и неправильно, но я не знаю как это сделать иначе...
947 bananan
 
11.04.13
11:49
948 Wobland
 
11.04.13
11:50
(946) вопрос: "зачем?" ответ: "соединения"
949 vinogradъ
 
11.04.13
11:50
(947) список с пометками?
950 Wobland
 
11.04.13
11:51
даю справку: тот же радикал удобней для скриншотов
951 vinogradъ
 
11.04.13
11:52
+(949) выбор групп возможен?
952 bananan
 
11.04.13
11:55
(951) Да - выбор групп - возможен
953 bananan
 
11.04.13
11:57
(950) Это форум по расспространению скриншотов?
(948) Внимательно прочитай ответ, а потом уж стебись!
954 Wobland
 
11.04.13
11:58
(953) нет. (948) не сторнирую
955 Ёпрст
 
11.04.13
11:59
(946) открою тебе тайну - в твоём запросе они не нужны.. совсем
956 bananan
 
11.04.13
12:12
(955) Возможно - у меня конечно опыт такой работы мизерный...
Но, как написать без них - не знаю. И написал так как знаю...
Но сейчас вопрос в том ПОЧЕМУ запрос мне выдает НЕ выбранные ТМЦ? И как с этим бороться?
957 Wobland
 
11.04.13
12:21
предлагаю заподозрить истинность всегда: (isnull(ДокС.sp1171, ДокН.sp4235) IN (SELECT val FROM #СписокТМЦ)
958 sapphire
 
11.04.13
12:29
(956) Написать нормальный запрос и научиться человечески передавать параметры в оный.
959 sapphire
 
11.04.13
12:29
(957) А оно там вообще надо?
960 Wobland
 
11.04.13
12:31
(959) хм, задумался.. надо из документов дёргать только нужную номенклатуру, не? //в имеющийся запрос традиционно не вникаю
961 bananan
 
11.04.13
12:32
(957) Значит - не только я буксую со своим мизерным опытом написания прямых запросов?
(958) Чем мой запрос "ненормальный"?
(957) а оно так невсегда - для того isnull(ДокС.sp1171, ДокН.sp4235) IN (SELECT val FROM #СписокТМЦ) и используется в секции WHERE
962 bananan
 
11.04.13
12:34
(960) почти так... Надо выбрать документы в которых имеется выбранная номенклатура, ну там еще проверка Агентов и Клиентов (но с этими двумя условиями - вроде все нормально работает)
963 Wobland
 
11.04.13
12:34
(961) я тебя удивлю, если скажу, что у меня тоже есть типа прямой запрос, с которым у меня не всегда всё хорошо (время от времени задача меняется и уточняется)?
964 Ёпрст
 
11.04.13
12:34
Ну, так хотя бы.. хотя тоже, не комильфо


select    
   Таб.Товар as [Товар $Справочник.ТМЦ]
   ,isnull($ДокШН.Доставка, $ДокШ.Доставка) as [Доставка $Справочник.Доставка]
   ,$Доставка.Адрес as Адрес
   ,sum(Таб.Количество/isnull(СпрЕдиницы.Коэффициент, 1)) as КоличествоВЕд
   ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as [Клиент $Справочник.Клиенты]
   ,isnull($ДокШ.Агент, $ДокШН.Агент) as [Агент $Справочник.Агент]        
from
   (
       select

          $ДокС.ТМЦ as Товар
          ,ДокС.iddoc as Документ
          ,$ДокС.Кво*$ДокС.Коэффициент as Количество

       from  $ДокументСтроки.РасходнаяНакладная as ДокС (nolock)
   union all
       select
           $ДокН.ТМЦ
           ,ДокН.iddoc

          ,$ДокН.Кво*$ДокН.Коэффициент as Количество
  from  $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock)
  )as Таб
inner join                                
  _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
  and Жур.iddocdef in ($ВидДокумента.РасходнаяНакладная,$ВидДокумента.РасходнаяНакладнаяН)
   and Жур.Date_Time_IDDoc BETWEEN :НачДата and :КонДата~
   and Жур.Closed&1 = 1

 left join $Документ.РасходнаяНакладная as ДокШ (nolock) on ДокШ.iddoc = Жур.iddoc      
 Left join $Документ.РасходнаяНакладнаяН as ДокШН (nolock) on ДокШН.iddoc = Жур.iddoc
 left join $Справочник.Доставка Доставка (nolock) on Доставка.id = isnull($ДокШ.Доставка, $ДокШН.Доставка)
 left join (
    select  
          max($Спр.Коэффициент) as Коэффициент
          ,Спр.parentext as Владелец
    from $Справочник.ЕдИзм as Спр (nolock)
    where $Спр.Ед =:ВыбЕдиница
          and $Спр.Коэффициент>0
          and Спр.ismark=0
   group by Спр.parentext
 ) as СпрЕдиницы on СпрЕдиницы.Владелец = Таб.Товар
WHERE  Таб.Товар IN (SELECT val FROM #СписокТМЦ)
group by
 isnull($ДокШ.Агент, $ДокШН.Агент)
,isnull($ДокШ.Клиент, $ДокШН.Клиент)
,Таб.Товар
,$Доставка.Адрес
,isnull($ДокШН.Доставка, $ДокШ.Доставка)
ORDER BY isnull($ДокШ.Агент, $ДокШН.Агент),isnull($ДокШ.Клиент, $ДокШН.Клиент), Таб.Товар
965 bananan
 
11.04.13
12:39
(964) Сейчас проверю твой вариант запроса... Т.е. ты переставил проверку на наличие выбраных ТМЦ в подзапрос... Интерестный вариант... ну там мелочи по поводу того если нет ниодного выбраного ТМЦ... (Юзера интересуют Агенты, которые продали за определенный период хоть что-то)...
Ни и ты убрал проверку на период создания документов...
966 Wobland
 
11.04.13
12:40
+(963) в частности, принял сомнительное решение считать количество проданных услуг 1 (собираю ОтчётыККМ). количество и сумму беру из партий, а в партиях нулевое количество услуг (глазами в движения документа смотрел). кто кинет в меня какашкой? ;)
967 Ёпрст
 
11.04.13
12:41
(965) какой подзапрос ?
Разуй глаза!
968 Ёпрст
 
11.04.13
12:41
И проверка периода есть - она в иннер джоине
969 sapphire
 
11.04.13
12:45
(966) Услуги по продажам не проходят?! :)))
970 bananan
 
11.04.13
12:47
(968) пардон,  просто неправильно сказал... Проверил твой вариант - с ТМЦ работает нормально, агенты и клиенты пока не проверял
971 Wobland
 
11.04.13
12:49
(969) только количество. скрин показать?
972 Wobland
 
11.04.13
12:53
973 In123
 
11.04.13
12:57
Близится к тыще...
974 Wobland
 
11.04.13
12:59
(973) к третьей тысяче, если учитывать только полные тыщи
975 In123
 
11.04.13
12:59
(974) К третьей, ох сколько их еще будет...
976 Wobland
 
11.04.13
13:04
а вот ещё вопрос имею. хочется сделать РС соответствия кодов организаций и складов в семёрке справочникам в восьмёрке. измерения: ВидСправочника, Код, ресурс: ссылка (типа организация или склад). ВидСправочника чем делать?
строка - долго (это у меня религия такая)
число - непонятно
перечисление - трудно
дата - бессмысленно
булево - некошерно...
977 bananan
 
11.04.13
13:05
(968) ТАк то воно так але тришечки не так...
В окне выбора я выбираю три ТМЦ, он мне выдает тех клиентов, что взыли хотя бы один из трех ТМЦ, а мне надо только те что взяли все ТМЦ из окна выбора!
Как это сделать?
978 bananan
 
11.04.13
13:06
(976) В зоопарк сходи - там для тебя будет все понятно, нетрудно, со смыслом и кощерно!
979 Wobland
 
11.04.13
13:08
(978) а что там?
980 sapphire
 
11.04.13
13:09
(976) А зачем РС?
981 bananan
 
11.04.13
13:09
(979) в том числе и кошерная вобла... :)
982 Wobland
 
11.04.13
13:11
(980) эмм.. а что же?
983 sapphire
 
11.04.13
13:11
(979) Это долбобей так шуткует.
Смеяться при слове "лопата" типа...
984 sapphire
 
11.04.13
13:12
(982) Не использовать коды, а использовать ID в 7.7 и ими же заполнять поля в справочнике - добавить поле нетрудно же
985 In123
 
11.04.13
13:12
Так он еще и шутник.. ни фига се
986 Wobland
 
11.04.13
13:14
(984) а вот не хочу конфигурацию ломать. и потом есть уже:
Функция ПолучитьСкладПоКоду(КодСклада)
Функция ПолучитьОрганизациюПоКоду(КодФирмы)
987 bananan
 
11.04.13
13:18
+ И непонятно почему с агентом и клиентом проверка типа:
and (isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов)) работает правильно, а с ТМЦ надо проверять так:
and Таб.Товар IN (SELECT val FROM #СписокТМЦ)
(ну и опять же с ТМЦ - в запрос попадают любые клиенты поторые купили хотябы Один из указанных ТМЦ (а ндо чтобы выбирались только те что купили ВСЕ из выбраных ТМЦ)
988 Ёпрст
 
11.04.13
13:25
(977)
типа того:

select t1.tovar,t1.client from table as t1

where exists (select val from #tmptable where
val not in (select t2.tovar from table as t2 where t1.client =t2.client)
989 bananan
 
11.04.13
13:43
(988) Спасибо! Вроде понял. позже попробую. #tmptable  - это выбранные (#СписокТМЦ))?
990 Ёпрст
 
11.04.13
13:46
(989) да, table  - это твой запрос что сейчас, без всяких условий на ТМЦ.
991 bananan
 
11.04.13
14:03
А зачем проверка: t1.client =t2.client? Юезр может выбрать только ТМЦ..
992 samozvanec
 
11.04.13
14:06
капец. на десятой странице все еще разговаривают про запрос! про ТОТ ЖЕ запрос, что в сабже!!! о_О
993 samozvanec
 
11.04.13
14:08
что же предпримет ТС, когда ветку закроют, а вопросы так и не решены?)
994 bananan
 
11.04.13
14:08
(990) Написал так:
ТекстЗапроса = "
       | select    
         |    Таб.Товар as [Товар $Справочник.ТМЦ]
         |    ,isnull($ДокШН.Доставка, $ДокШ.Доставка) as [Доставка $Справочник.Доставка]
         |    , $Доставка.Адрес as Адрес
         |    ,sum(Таб.Количество/isnull(СпрЕдиницы.Коэффициент, 1)) as КоличествоВЕд
         |    ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as [Клиент $Справочник.Клиенты]
         |    ,isnull($ДокШ.Агент, $ДокШН.Агент) as [Агент $Справочник.Агент]        
         |from
       |    (
         |        select
       |            $ДокС.ТМЦ as Товар
       |            ,ДокС.iddoc as Документ
       |            ,$ДокС.Кво*$ДокС.Коэффициент as Количество
         |        from  $ДокументСтроки.РасходнаяНакладная as ДокС (nolock)
         |    union all
       |        select
       |            $ДокН.ТМЦ
       |            ,ДокН.iddoc
       |            ,$ДокН.Кво*$ДокН.Коэффициент as Количество
         |    from  $ДокументСтроки.РасходнаяНакладнаяН as ДокН (nolock)
       |    )as Таб
       | inner join                                
       |    _1sjourn as Жур (nolock) on Жур.IDDoc = Таб.Документ
         |    and Жур.iddocdef in ($ВидДокумента.РасходнаяНакладная,$ВидДокумента.РасходнаяНакладнаяН)
         |    and Жур.Date_Time_IDDoc BETWEEN :НачДата and :КонДата~
         |    and Жур.Closed&1 = 1
         |    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 (
       |     select  
       |           max($Спр.Коэффициент) as Коэффициент
       |            ,Спр.parentext as Владелец
       |     from $Справочник.ЕдИзм as Спр (nolock)
       |     where $Спр.Ед =:ВыбЕдиница
       |           and $Спр.Коэффициент>0
       |           and Спр.ismark=0
       |     group by Спр.parentext
       |   ) as СпрЕдиницы on СпрЕдиницы.Владелец = Таб.Товар
       |  WHERE (Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~)";
       Если ВыбТМЦ.РазмерСписка()>0 тогда
           ТекстЗапроса = ТекстЗапроса + "and exists (select from #СписокТМЦ where val not in (select t2.ТМЦ from Таб as t2 where t1.client=t2.client)";
       КонецЕсли;
   не пропускает:
]Incorrect syntax near the keyword 'from'.
995 samozvanec
 
11.04.13
14:09
(994) ошибка рядом со словом "from"
996 bananan
 
11.04.13
14:10
(995) Ошибка у тебя в голове! Не спамь!!!
997 Wobland
 
11.04.13
14:10
998 samozvanec
 
11.04.13
14:10
(996) ну так ты долго будешь искать
999 Wobland
 
11.04.13
14:11
девятьсот девяносто девять!
1000 samozvanec
 
11.04.13
14:11
ТЫЩА
1001 bananan
 
11.04.13
14:13
(990) А что такое t1?
1002 Wobland
 
11.04.13
14:14
(1001) а об этом мы узнаем в следующей серии
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший