|
Выбор документов с заданными товарами 🠗 (длинная ветка 18.04.2013 16:17) | ☑ | ||
---|---|---|---|---|
0
bananan
11.04.13
✎
14:34
|
Увы в прошлой ветке, мне так и не удалось решить данную задачу.
Ёпрст посоветовал: "типа того: 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)" Я написал такой Текст запроса: ТекстЗапроса = " | 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)"; КонецЕсли Не пропускает - ругается на message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'from'. Ну и из совета Ёпрст я не понял что такое t1? |
|||
1
Ёпрст
11.04.13
✎
14:34
|
Это абстрактный пример для таблички с 2-мя полями - клиентосом и товаром и списком с товаром.
|
|||
2
Ёпрст
11.04.13
✎
14:35
|
в твоём случае, table - это твой запрос, tovar - это твой ТМЦ из этого запроса, client - это твой Клиентос из запроса
|
|||
3
In123
11.04.13
✎
14:35
|
Што опять? Скока можно!
|
|||
4
VladZ
11.04.13
✎
14:37
|
select from #СписокТМЦ - что выбрать?
|
|||
5
bananan
11.04.13
✎
14:48
|
(3) Надо написать запрос. КОгда запрос будет работать как заказал клиент - тогда вопросов на форум не будет. А вот из-за таких реплик как твоя ветки и разростаются. Не спамь!
|
|||
6
Wobland
11.04.13
✎
14:51
|
бедный клиент...
|
|||
7
vip67
11.04.13
✎
14:51
|
(5) пиши - разрешаю!
|
|||
8
vip67
11.04.13
✎
14:53
|
Миколо - тобі ясно сказали - треба замість table підставити свою табличку і усьо буде в ажурі!
|
|||
9
Анна_84
11.04.13
✎
14:55
|
(8) думаете, так он поймет лучше, чем по-русски? :)
|
|||
10
bananan
11.04.13
✎
14:55
|
Хм, возникла такая идея в верхнем селекте считатьколичесвто тмц и выводить результат если это количество = выбранному юзером количеству ТМЦ.
Сейчас попробую. Если получится - покажу... |
|||
11
bananan
11.04.13
✎
14:56
|
(9) А что я должен понять (3)(4) или (9)??!
|
|||
12
ДенисЧ
11.04.13
✎
14:56
|
Продолжение? Опять?
Люди, вам не надоело? |
|||
13
Анна_84
11.04.13
✎
15:02
|
(12) нам - нет. у нас попкорна много ))
а вот как не надоело еще тем, кто помогает - не знаю. медальки им надо. |
|||
14
Ёпрст
11.04.13
✎
15:11
|
На вот, развлекайся
ТекстЗапроса = " | Табличка.Товар as [Товар $Справочник.ТМЦ] | ,Табличка.Доставка as [Доставка $Справочник.Доставка] | ,Табличка.Адрес as Адрес | ,Табличка.КоличествоВЕд | ,Табличка.Клиент as [Клиент $Справочник.Клиенты] | ,Табличка.Агент as [Агент $Справочник.Агент] |from |( | 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 $Справочник.Доставка Доставка (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 СпрЕдиницы.Владелец = Таб.Товар | group by | Таб.Товар | ,isnull($ДокШН.Доставка, $ДокШ.Доставка) | ,$Доставка.Адрес | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) | ,isnull($ДокШ.Агент, $ДокШН.Агент) |) as Табличка |"; Если ВыбТМЦ.РазмерСписка()>0 тогда ТекстЗапроса = ТекстЗапроса + "where exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))"; ТекстВася =" |( | select | Таб.Товар as Товар | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as Клиент |from | ( | select | $ДокС.ТМЦ as Товар | ,ДокС.iddoc as Документ | from $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | union all | select | $ДокН.ТМЦ | ,ДокН.iddoc | 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 = $ВидДокумента.РасходнаяНакладнаяН |)"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Вася",ТекстВася); КонецЕсли; |
|||
15
Ёпрст
11.04.13
✎
15:12
|
И не вздумай туда ручонками залезть и всё испортить
|
|||
16
bananan
11.04.13
✎
15:17
|
(15) Спасибо! Сейчас попробую... лазить туда не буду :)
|
|||
17
Ёпрст
11.04.13
✎
15:20
|
(12) не трогайте нашего падавана!
А то занятся иногда нечем. |
|||
18
bananan
11.04.13
✎
15:21
|
(15) а у меня там еще проверка на выбраных агентов и клиентов... Ее так оставить как и было? А(14) вставить до: Если ВыбАгент.РазмерСписка()>0 тогда
ТекстЗапроса = ТекстЗапроса + " and (isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов))"; КонецЕсли; Если ВыбКлиент.РазмерСписка()>0 тогда ТекстЗапроса = ТекстЗапроса + " and (isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #СписокКлиентов)) "; КонецЕсли; ТекстЗапроса = ТекстЗапроса + "group by isnull($ДокШ.Агент, $ДокШН.Агент), isnull($ДокШ.Клиент, $ДокШН.Клиент), Таб.Товар, $Доставка.Адрес, isnull($ДокШН.Доставка, $ДокШ.Доставка) | ORDER BY isnull($ДокШ.Агент, $ДокШН.Агент),isnull($ДокШ.Клиент, $ДокШН.Клиент), Таб.Товар"; ?? |
|||
19
Ёпрст
11.04.13
✎
15:22
|
(18) её воткнуть надо в два места - в текст запроса и в Текст запросаВася
|
|||
20
Ёпрст
11.04.13
✎
15:23
|
ну и ордер бай выкинь - он уже есть и где надо и как надо
|
|||
21
bananan
11.04.13
✎
15:24
|
(20) Понял..., но... выдает:
State 42000, native 156, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'as'. |
|||
22
bananan
11.04.13
✎
15:26
|
Пробывал я с коунтом поиграть добавил count(Таб.Товар) в select ну и в GroupBy - не пропускает....
И еще, можно ли в SQL определить сколько юзер выбрал ТМЦ? |
|||
23
bananan
11.04.13
✎
15:28
|
(19)(20) Я твои коды вставил вместо своего ТекстаЗапроса ну и удалил Если ВыбТМЦ.РазмерСписка()>0 тогда
ТекстЗапроса = ТекстЗапроса + "and exists (select from #СписокТМЦ where val not in (select t2.ТМЦ from Таб as t2 where t1.client=t2.client))"; КонецЕсли; |
|||
24
Ёпрст
11.04.13
✎
15:34
|
ТекстЗапроса = "
| Табличка.Товар as [Товар $Справочник.ТМЦ] | ,Табличка.Доставка as [Доставка $Справочник.Доставка] | ,Табличка.Адрес as Адрес | ,Табличка.КоличествоВЕд | ,Табличка.Клиент as [Клиент $Справочник.Клиенты] | ,Табличка.Агент as [Агент $Справочник.Агент] |from |( | 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 1=1 and 2=2 | group by | Таб.Товар | ,isnull($ДокШН.Доставка, $ДокШ.Доставка) | ,$Доставка.Адрес | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) | ,isnull($ДокШ.Агент, $ДокШН.Агент) |) as Табличка |"; Если ВыбТМЦ.РазмерСписка()>0 тогда ТекстЗапроса = ТекстЗапроса + "Where exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))"; ТекстВася =" |( | select | Таб.Товар as Товар | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as Клиент |from | ( | select | $ДокС.ТМЦ as Товар | ,ДокС.iddoc as Документ | from $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | union all | select | $ДокН.ТМЦ | ,ДокН.iddoc | 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 |where 1=1 and 2=2 |)"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Вася",ТекстВася); КонецЕсли; Если ВыбАгент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"1=1","isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов)"); КонецЕсли; Если ВыбКлиент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"2=2","isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #СписокКлиентов)"); КонецЕсли; |
|||
25
Ёпрст
11.04.13
✎
15:37
|
а так, надо хотя бы во временную тз кидать результат запроса
или сте пользовать |
|||
26
Mikeware
11.04.13
✎
15:45
|
Уже ту ветку добили... молодцы!
|
|||
27
bananan
11.04.13
✎
15:47
|
(24) Что - то ... опять таже ошибка.. может я неправильно делаю?
Показіваю код у меня: ТекстЗапроса = " | Табличка.Товар as [Товар $Справочник.ТМЦ] | ,Табличка.Доставка as [Доставка $Справочник.Доставка] | ,Табличка.Адрес as Адрес | ,Табличка.КоличествоВЕд | ,Табличка.Клиент as [Клиент $Справочник.Клиенты] | ,Табличка.Агент as [Агент $Справочник.Агент] |from |( | 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 1=1 and 2=2 | group by | Таб.Товар | ,isnull($ДокШН.Доставка, $ДокШ.Доставка) | ,$Доставка.Адрес | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) | ,isnull($ДокШ.Агент, $ДокШН.Агент) |) as Табличка |"; Если ВыбТМЦ.РазмерСписка()>0 тогда ТекстЗапроса = ТекстЗапроса + "Where exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))"; ТекстВася =" |( | select | Таб.Товар as Товар | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as Клиент |from | ( | select | $ДокС.ТМЦ as Товар | ,ДокС.iddoc as Документ | from $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | union all | select | $ДокН.ТМЦ | ,ДокН.iddoc | 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 |where 1=1 and 2=2 |)"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Вася",ТекстВася); КонецЕсли; Если ВыбАгент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"1=1","isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов)"); КонецЕсли; Если ВыбКлиент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"2=2","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($ДокШ.Клиент, $ДокШН.Клиент), Таб.Товар"; Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ"); |
|||
28
bananan
11.04.13
✎
15:48
|
(25) А что такое сте?
|
|||
29
Ёпрст
11.04.13
✎
15:50
|
(27) пилять..
вот это выкинь нахрен ТекстЗапроса = ТекстЗапроса + "group by isnull($ДокШ.Агент, $ДокШН.Агент), isnull($ДокШ.Клиент, $ДокШН.Клиент), Таб.Товар, $Доставка.Адрес, isnull($ДокШН.Доставка, $ДокШ.Доставка) | ORDER BY isnull($ДокШ.Агент, $ДокШН.Агент),isnull($ДокШ.Клиент, $ДокШН.Клиент), Таб.Товар"; Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ"); |
|||
30
Ёпрст
11.04.13
✎
15:51
|
оставь только
Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ"); |
|||
31
Ёпрст
11.04.13
✎
15:57
|
(28) Common table expression (CTE)
|
|||
32
Масянька
11.04.13
✎
15:58
|
(31) Тебе в учителя надо :)))))
|
|||
33
Ёпрст
11.04.13
✎
15:59
|
(32) нельзя.. одни недоделанные ученики будут
|
|||
34
Масянька
11.04.13
✎
16:01
|
(33) Я тебе указку (металлическую, 150 см) подарю. И ученики будут ... шикарные... :)))
|
|||
35
viktor_vv
11.04.13
✎
16:04
|
(34) Без пальцев :), а код как набирать, носом :) ?
|
|||
36
Масянька
11.04.13
✎
16:07
|
(35) Ну, кто чем может. Можно подумать - в первый раз :)))
|
|||
37
bananan
11.04.13
✎
16:12
|
(29)(30)Странно оставил так:
Н (nolock) on ДокШН.iddoc = Жур.iddoc |where 1=1 and 2=2 |)"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Вася",ТекстВася); КонецЕсли; Если ВыбАгент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"1=1","isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов)"); КонецЕсли; Если ВыбКлиент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"2=2","isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #СписокКлиентов)"); КонецЕсли; Если ВыбАгент.РазмерСписка()>0 тогда ТекстЗапроса = ТекстЗапроса + " and (isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов))"; КонецЕсли; Если ВыбКлиент.РазмерСписка()>0 тогда ТекстЗапроса = ТекстЗапроса + " and (isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #СписокКлиентов)) "; КонецЕсли; Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ"); все-равно відает: Incorrect syntax near the keyword 'as'. |
|||
38
bananan
11.04.13
✎
16:13
|
(33) А по поводу учительства - ты и прада - подумай. И никакие недоделанные не будут!
|
|||
39
Ёпрст
11.04.13
✎
16:16
|
пиляяяяяяяяяяяяяяяяять...
убери к едрени фени свой код, оставь только мой + Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ"); Запрос.УложитьСписокОбъектов(СписокКлиентов, .... Запрос.УложитьСписокОбъектов(СписокАгентов, .... |
|||
40
Ёпрст
11.04.13
✎
16:18
|
вот это вот выкини в первую очередь:
Если ВыбАгент.РазмерСписка()>0 тогда ТекстЗапроса = ТекстЗапроса + " and (isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов))"; КонецЕсли; Если ВыбКлиент.РазмерСписка()>0 тогда ТекстЗапроса = ТекстЗапроса + " and (isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #СписокКлиентов)) "; КонецЕсли; |
|||
41
Масянька
11.04.13
✎
16:19
|
(40) Говорю же, УКАЗКУ подарю :))))))
PS Не психуй! Ты - сильно помогаешь. И за это тебе огромное НАИОГРОМНЕЙШЕЕ СПАСИБО! |
|||
42
Wobland
11.04.13
✎
16:20
|
что, пришёл Ёпрст и зарубил очередную тысячу на корню? или у нас ещё есть шанс?
|
|||
43
Ёпрст
11.04.13
✎
16:58
|
Ну.. автору еще надо постичь курсоры хранимки..триггеры , но для начала, delete,truncate и drop
|
|||
44
bananan
11.04.13
✎
17:09
|
(40) Но там надо выбирать и по выбранным Агентам и Клиентам...
|
|||
45
Wobland
11.04.13
✎
17:11
|
(43) класс! про курсоры и триггеры не знаю. остаюсь ;)
|
|||
46
bananan
11.04.13
✎
17:11
|
+(44) Выкинул - рещультат тот же:
ncorrect syntax near the keyword 'as'. |
|||
47
Mikeware
11.04.13
✎
17:26
|
(42) а почему "шанс"? шанс - это вероятность значительно ниже единицы. а вероятность того, что ветка дотянет до тысячи - единица.
|
|||
48
Ёпрст
11.04.13
✎
17:26
|
(46) ну кидай сюда то, что у тебя есть
|
|||
49
Wobland
11.04.13
✎
17:43
|
>шанс - это вероятность значительно ниже единицы
а не соглашусь. имхо шанс - вероятность строго (не включая границы) между 0 и 1. расхоже выражение "неплохой шанс"; по всей видимости в нём имеется в виду вероятность порядка нескольких десятых. далее. P(дотянет до тысячи)=1. единица - это непременное наступление события. а ведь пророков среди нас нет. поэтому в контексте происходящего можно лишь говорить о величине, бесконечно приближающейся к единице, но всё-таки не равной ей... |
|||
50
Wobland
11.04.13
✎
17:46
|
ну и плюс ко всему я просто не верю, что бананан (@Ёпрст?) не сможет решить заявленную задачу за тысячу постов ;)
|
|||
51
bananan
11.04.13
✎
17:51
|
(48) Весь код:
Процедура Сформировать() Запрос=СоздатьОбъект("ODBCRecordset"); ТекстЗапроса = " | Табличка.Товар as [Товар $Справочник.ТМЦ] | ,Табличка.Доставка as [Доставка $Справочник.Доставка] | ,Табличка.Адрес as Адрес | ,Табличка.КоличествоВЕд | ,Табличка.Клиент as [Клиент $Справочник.Клиенты] | ,Табличка.Агент as [Агент $Справочник.Агент] |from |( | 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 1=1 and 2=2 | group by | Таб.Товар | ,isnull($ДокШН.Доставка, $ДокШ.Доставка) | ,$Доставка.Адрес | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) | ,isnull($ДокШ.Агент, $ДокШН.Агент) |) as Табличка |"; Если ВыбТМЦ.РазмерСписка()>0 тогда ТекстЗапроса = ТекстЗапроса + "Where exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))"; ТекстВася =" |( | select | Таб.Товар as Товар | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as Клиент |from | ( | select | $ДокС.ТМЦ as Товар | ,ДокС.iddoc as Документ | from $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | union all | select | $ДокН.ТМЦ | ,ДокН.iddoc | 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 |where 1=1 and 2=2 |)"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Вася",ТекстВася); КонецЕсли; Если ВыбАгент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"1=1","isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов)"); КонецЕсли; Если ВыбКлиент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"2=2","isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #СписокКлиентов)"); КонецЕсли; Сообщить(ТекстЗапроса); Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ"); Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокАгентов","Агент"); Запрос.УложитьСписокОбъектов(ВыбКлиент, "#СписокКлиентов","Клиенты"); Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС); Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо); Запрос.УстановитьТекстовыйПараметр("ВыбЕдиница", ВыбЕд); //Запрос.Отладка(1); Сообщить(ТекстЗапроса); |
|||
52
bananan
11.04.13
✎
17:51
|
(50) К стати, в прошлой ветке обсуждалось три запроса, а не один, так может быть и с этой...
|
|||
53
Classic
11.04.13
✎
17:53
|
(50)
Ага. Мне кажется, что он просто стебется. Как можно не понять фразу "incorrect syntax near the keyword 'as'." и кинуть вопрос на форум? Как можно взять готовый написанный Ёпрстом рабочий запрос и начинать его дописывать? Это реально стеб |
|||
54
sapphire
11.04.13
✎
17:53
|
(51) Долбобей, а в самом начале волшебныф скулеж
SELECT за тебя кто писать-то буде? |
|||
55
Wobland
11.04.13
✎
17:53
|
(51) ну и какие мысли?
(53) ты новенький? он реально такой |
|||
56
Wobland
11.04.13
✎
17:54
|
(54) гы! а я не заметил ;)
|
|||
57
sapphire
11.04.13
✎
17:54
|
ТекстЗапроса = "SELECT
|
|||
58
Classic
11.04.13
✎
17:54
|
(55)
Не, не новенький. Просто таких тупых реально не бывает. Если человек тупой - он возьмет готовое и не будет трогать. А этот и тупит, и готовое корежит. |
|||
59
sapphire
11.04.13
✎
17:55
|
(56) Уже привычно, что Долбобеюшко очепятки любит
|
|||
60
sapphire
11.04.13
✎
17:55
|
(58) Ему можно - у него образование соответствующее.
|
|||
61
Wobland
11.04.13
✎
17:55
|
(58) новенький в нашем фан-клубе поклонников бананана ;)
|
|||
62
Wobland
11.04.13
✎
17:56
|
(57) надеюсь, обе Е латинские ;))
|
|||
63
sapphire
11.04.13
✎
17:56
|
(61) тсс... Не спугни зверушку :)
|
|||
64
Classic
11.04.13
✎
17:57
|
(60)
Какое? Неужели журналист? |
|||
65
sapphire
11.04.13
✎
17:58
|
(64) Не.. Хореографическое. Говорит даже мол в Киеве...
|
|||
66
Classic
11.04.13
✎
17:59
|
(65)
Такое бывает? Я думал это типа так, вечерком на танцы. За это диплом дают??????? |
|||
67
Classic
11.04.13
✎
18:00
|
(0)
Лучше станцуй клиенту. Будет больше пользы |
|||
68
sapphire
11.04.13
✎
18:00
|
(66) Типа да, типа танцор я так понел
|
|||
69
Ёпрст
11.04.13
✎
18:36
|
Странно, а у меня форум в дауне был всё это время..
|
|||
70
bananan
11.04.13
✎
18:38
|
(70) У меня он переодически сваливался....
|
|||
71
sapphire
12.04.13
✎
09:32
|
(70) см (54).
|
|||
72
be-may
12.04.13
✎
09:50
|
/*читаю уже которую ветку, правда по диагонали, и скажу я вам, что я в поклонницах Ёпрст-а.. Какая выдержка, какое терпение, какая крепкая нервная система..!!! педагогика много потеряла.. :) */
|
|||
73
sapphire
12.04.13
✎
10:25
|
(72) Точняк :)
/* я так, исключительно постебаться*/ |
|||
74
bananan
12.04.13
✎
10:26
|
Всем доброе утро!
Вопрос к Ёпрст: показываю все что у меня есть: ТекстЗапроса = " | Табличка.Товар as [Товар $Справочник.ТМЦ] | ,Табличка.Доставка as [Доставка $Справочник.Доставка] | ,Табличка.Адрес as Адрес | ,Табличка.КоличествоВЕд | ,Табличка.Клиент as [Клиент $Справочник.Клиенты] | ,Табличка.Агент as [Агент $Справочник.Агент] |from |( | 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 1=1 and 2=2 | group by | Таб.Товар | ,isnull($ДокШН.Доставка, $ДокШ.Доставка) | ,$Доставка.Адрес | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) | ,isnull($ДокШ.Агент, $ДокШН.Агент) |) as Табличка |"; Если ВыбТМЦ.РазмерСписка()>0 тогда ТекстЗапроса = ТекстЗапроса + "Where exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))"; ТекстВася =" |( | select | Таб.Товар as Товар | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as Клиент |from | ( | select | $ДокС.ТМЦ as Товар | ,ДокС.iddoc as Документ | from $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | union all | select | $ДокН.ТМЦ | ,ДокН.iddoc | 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 |where 1=1 and 2=2 |)"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Вася",ТекстВася); КонецЕсли; Если ВыбАгент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"1=1","isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов)"); КонецЕсли; Если ВыбКлиент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"2=2","isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #СписокКлиентов)"); КонецЕсли; Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ"); Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокАгентов","Агент"); Запрос.УложитьСписокОбъектов(ВыбКлиент, "#СписокКлиентов","Клиенты"); Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС); Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо); Запрос.УстановитьТекстовыйПараметр("ВыбЕдиница", ВыбЕд); //Запрос.Отладка(1); Сообщить(ТекстЗапроса); Опять же ругается: Server]Incorrect syntax near the keyword 'as'. Я пока тсам так и не смог разобраться. Помоги, пожалуйста! и еще а зачем и к чему проверка |where 1=1 and 2=2? |
|||
75
Wobland
12.04.13
✎
10:26
|
(74) -> (71)
|
|||
76
Wobland
12.04.13
✎
10:27
|
(75) сторно, я не Ёпрст
|
|||
77
Ёпрст
12.04.13
✎
10:29
|
(74)
ТекстЗапроса = " select |
|||
78
Wobland
12.04.13
✎
10:30
|
(77) а закрывающую кавычку куда дел? ;)
|
|||
79
Ёпрст
12.04.13
✎
10:30
|
>>>и еще а зачем и к чему проверка
|where 1=1 and 2=2? чтоб потом, если надо , заменить 1=1 на это в тексте запроса: Если ВыбАгент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"1=1","isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов)"); |
|||
80
bananan
12.04.13
✎
10:36
|
(78)(79) Огромное спасибо!
|
|||
81
bananan
12.04.13
✎
10:42
|
+(80)Запустил - работает, но выдает все что - угодно, ное не те ТМЦ которые выбраны в окне выбора! :(
|
|||
82
sapphire
12.04.13
✎
10:59
|
(81) Код покажи
|
|||
83
sapphire
12.04.13
✎
10:59
|
(81) Все должны угадать, что именно ты там заменил?
|
|||
84
bananan
12.04.13
✎
11:00
|
(82)(83)ТекстЗапроса = " SELECT
| Табличка.Товар as [Товар $Справочник.ТМЦ] | ,Табличка.Доставка as [Доставка $Справочник.Доставка] | ,Табличка.Адрес as Адрес | ,Табличка.КоличествоВЕд | ,Табличка.Клиент as [Клиент $Справочник.Клиенты] | ,Табличка.Агент as [Агент $Справочник.Агент] |from |( | 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 1=1 and 2=2 | group by | Таб.Товар | ,isnull($ДокШН.Доставка, $ДокШ.Доставка) | ,$Доставка.Адрес | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) | ,isnull($ДокШ.Агент, $ДокШН.Агент) |) as Табличка |"; Если ВыбТМЦ.РазмерСписка()>0 тогда ТекстЗапроса = ТекстЗапроса + "Where exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))"; ТекстВася =" |( | select | Таб.Товар as Товар | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as Клиент |from | ( | select | $ДокС.ТМЦ as Товар | ,ДокС.iddoc as Документ | from $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | union all | select | $ДокН.ТМЦ | ,ДокН.iddoc | 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 |where 1=1 and 2=2 |)"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Вася",ТекстВася); КонецЕсли; Если ВыбАгент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"1=1","isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов)"); КонецЕсли; Если ВыбКлиент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"2=2","isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #СписокКлиентов)"); КонецЕсли; Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ"); Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокАгентов","Агент"); Запрос.УложитьСписокОбъектов(ВыбКлиент, "#СписокКлиентов","Клиенты"); Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС); Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо); Запрос.УстановитьТекстовыйПараметр("ВыбЕдиница", ВыбЕд); |
|||
85
sapphire
12.04.13
✎
11:14
|
(84) Where exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))
-- Пусть автор объяснит тебе внятно КАК это работает |
|||
86
bananan
12.04.13
✎
11:20
|
Ёпсрт! Если не трудно объясни мне пожалуста (85).
|
|||
87
bananan
12.04.13
✎
11:33
|
+(86) Когда из ) Where exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент)) убрал not - выдает уже те товары (не факт что именно все) но и плюс еще несколько товаров которых я не выбирал (похоже лишние товары находятся в той же группе, что и те товары, которые я выбрал в окне выбора...
|
|||
88
Ёпрст
12.04.13
✎
12:34
|
(81) нам отчюда не видно, что ты выбрал в окошке выбора ТМЦ.
|
|||
89
Ёпрст
12.04.13
✎
12:38
|
Ну а как работает - читай про разность множеств.
В мойм коде в выборке будут только те клиентосы, для которых есть все товары в твоём списке. |
|||
90
Ёпрст
12.04.13
✎
12:47
|
для проверки, выбери в свой список 2 товара (не группу) и проверяй.
Ну и not in верни на место |
|||
91
bananan
15.04.13
✎
11:05
|
(90) Сейчас not in верну на место и проверю, а почему только два товара (больше можно)?
|
|||
92
Ёпрст
15.04.13
✎
11:09
|
(91)
Дяденька, а можно я с крыши спрыгну ? Можно, но только один раз! |
|||
93
bananan
15.04.13
✎
11:10
|
(92) Ну если тебе надо очень быстро добраться на улицу с сотого этажа, то можно
|
|||
94
bananan
15.04.13
✎
11:13
|
+(93) Сдела как ты и говорил not in вернул на место запустил с лвумя выбранными товарами - отработал вернул, но, опять же в первых 50 строка возвращенных НЕТ НИ ОДНОГО из двух выбраных товаров...
Ну если они там таки есть, - лишние товары можно убрать из таблицы значений 1М, а не SQL... |
|||
95
Ёпрст
15.04.13
✎
11:46
|
(94) и какой запрос сейчас запущаешь ?
|
|||
96
Ёпрст
15.04.13
✎
11:46
|
и че такое 1м ?
|
|||
97
Ёпрст
15.04.13
✎
11:50
|
И вот так спробуй еще
// ТекстЗапроса = ТекстЗапроса + "Where exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))"; ТекстЗапроса = ТекстЗапроса + "Where not exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))"; |
|||
98
Ёпрст
15.04.13
✎
11:50
|
// ТекстЗапроса = ТекстЗапроса + "Where exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))";
ТекстЗапроса = ТекстЗапроса + "Where not exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))"; |
|||
99
bananan
15.04.13
✎
12:05
|
(96) Сори за опечатку 1м - 1 написал так:
Если (ТбЗн.Товар=выбТмц.ПолучитьЗначение(1, "ТМЦ")) ИЛИ (ТбЗн.Товар=выбТмц.ПолучитьЗначение(2, "ТМЦ")) ИЛИ (ТбЗн.Товар=выбТмц.ПолучитьЗначение(2, "ТМЦ")) Тогда Таб.ВывестиСекцию("Документ"); ну и это не выводит невырабнные товары на печать... А по поводу (97) и (98) - не понял во первых в том коде что ты дал так и есть: ТекстЗапроса = ТекстЗапроса + "Where exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))", а во-вторых, не вижу разницы между тем что ты показал // заремаренным и не заремаренным кодом и в-третих не вижу разницы между (97) и (98) |
|||
100
Ёпрст
15.04.13
✎
12:06
|
(99)там две строки, замени ту что выше на ту, что ниже.
|
|||
101
bananan
15.04.13
✎
12:08
|
(100) Вижу что две стороки но они ОДИНАКОВЫЕ (за ислючением того что первая заремарена)...
|
|||
102
Ёпрст
15.04.13
✎
12:13
|
(101) хреново у тебя со зрением.
Копипасти нижнюю строку (та, что без //) к себе в код и наслаждайся |
|||
103
bananan
15.04.13
✎
12:14
|
+(100) К ко всему прочему: запустил с двумя выбранными товарами - вернул правильный результат, запустил и доваил еще третий товар - результат вернулся тот-же, т.е. для трех выбраныых товаров - этот результат НЕПРАВИЛЬНЫЙ!!
|
|||
104
Ёпрст
15.04.13
✎
12:17
|
(103) ты (102) сделал, или нет ?
|
|||
105
cw014
15.04.13
✎
12:18
|
Ребят, отсыпьте попкорна, до магаза далеко бежать, боюсь пропустить что нибудь интересное )))))))))))))0
|
|||
106
bananan
15.04.13
✎
12:18
|
(104) Только что сделал (102) в результате до исправления с одинаковыми товарами он выдал 4 или 6 строк , после исправления - ниодной!!
|
|||
107
Ёпрст
15.04.13
✎
12:19
|
(106) ну и круто - значит, нет таких клиентосов, которые брали эти товары все.
|
|||
108
bananan
15.04.13
✎
12:21
|
(107) До испрвления - они были :)
|
|||
109
bananan
15.04.13
✎
12:22
|
+(106) Когда убрал один из выбраных товаров (оставил один выбраный товар) вернул результат и внем 10 строк (8 из которых - левые товары)...
|
|||
110
Wobland
15.04.13
✎
12:23
|
я ничего в запросе и задаче не понял, но почему-то верю Ёпрсту
|
|||
111
bananan
15.04.13
✎
12:23
|
+(109) Когда запустил запрос только со вторым товаром - тоже вернул результат... Так что последние изменения в коде - НЕПРАВИЛЬНЭЫЕ
|
|||
112
bananan
15.04.13
✎
12:24
|
(110) Ты во много ничего не понимаешь, Ёпрст я тоже верю, но - результат работы запроса - негативный...
|
|||
113
ЧеловекДуши
15.04.13
✎
12:31
|
(38) Будут, ты пример, он за тебя пишет. Но ты буксуешь даже тут на ровном месте :)
|
|||
114
Ёпрст
15.04.13
✎
12:31
|
(112) покажи весь свой код
|
|||
115
ЧеловекДуши
15.04.13
✎
12:32
|
(108) Ты иногда думай :)
|
|||
116
bananan
15.04.13
✎
12:32
|
(113) Тебе из видней как я буксую
|
|||
117
ЧеловекДуши
15.04.13
✎
12:33
|
(116) Ага... Тебе даже на родном языке попытались написать совет, но ты и тут не понял :)
|
|||
118
Mikeware
15.04.13
✎
12:36
|
(105) Можешь даже неторопясь сходить. все равно новая серия будет.
"эта музыка будет вечной"© |
|||
119
Ёпрст
15.04.13
✎
12:36
|
ладно, так еще тогда
ТекстЗапроса = ТекстЗапроса + "Where(Табличка.Товар in (select val from #СписокТМЦ)) and (not exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент)))"; |
|||
120
Wobland
15.04.13
✎
12:37
|
(118) если работодатель не заменит батарейки
|
|||
121
bananan
15.04.13
✎
12:53
|
(120) Тебе опять же - виднеее, но сейчас еслои выбирабю товари т1 и т2 - не выдает ниоднгой строки, если выбираю только т1 - выдает строки, если выбираю т2 - тоже выдает строки а вот когода и е2 и е1 - не выдает (причем в обоих члучаях клиенты - одни и те же)
|
|||
122
Ёпрст
15.04.13
✎
12:57
|
(121)
ты (119) видел, не ? |
|||
123
bananan
15.04.13
✎
13:20
|
(122) Видел - поменял, проверяю (но - лишние (невырабные товары он все-равно выбирает))...
|
|||
124
bananan
15.04.13
✎
13:21
|
(+123) выбираю период - год, два товара - нет ни одной записи - это НЕВОЗМОЖНО...
|
|||
125
Ёпрст
15.04.13
✎
13:23
|
(124) если выбираешь один товар, есть ?
Если выбираешь другой, есть ? Клиентос при этом, одинаковый ? |
|||
126
bananan
15.04.13
✎
13:24
|
(125) Сейчас проверю по разным товарам просто период большщой задал...
|
|||
127
bananan
15.04.13
✎
13:31
|
+ Точно - НЕ РАБОТАЕТ проверял по разным товарам - ничего не ваыбирает, когда не задаю ниодного товара - тоже ничего не показівает, - т.е. ошибка в логике запроса... :( Абидна!
|
|||
128
Ёпрст
15.04.13
✎
13:50
|
(127) еще раз, сымаешь фильтр по товарам, смотришь результат запроса, видишь например, картину:
Клиентос Товар Вася Яблоки Вася Сало Вася Горилка Бананан Сало Бананан Горилка ставишь в Фильтр Сало Должен получить на выходе Вася Сало Бананан Сало ставишь в фильтр Сало,Горилка должен получить на выходе Вася Сало Вася Горилка Бананан Сало Бананан Горилка ставишь в фильтр Сало,Горилка,Яблоки, должне получить на выходе Вася Яблоки Вася Сало Вася Горилка у тебя так, или нет ? А так, нам отсюда не видно, что ты проверяешь и как |
|||
129
bananan
15.04.13
✎
14:05
|
(127) Вроде я все правильно проверяю... т.е. если брать твои данніе если я ничего из товаров не вибрал - то запрос не вернет ни одной строки (а за єтот период продажи - были), если я веберу Горилка то он мне еще вернет и какието бутербробы и колбасу ...
|
|||
130
Ёпрст
15.04.13
✎
14:06
|
больше кода
|
|||
131
Ёпрст
15.04.13
✎
14:07
|
(129) мой код физически не может выдать товар, который не в списке.
|
|||
132
bananan
15.04.13
✎
14:08
|
Значит базируясь на прошлом - нужен такой запрос, который вибирает всех клиентов которые за заданный пеирод времени купили все из выбраных товаров...
Т.е. скажем выбраем всех клиентов которые купили товар1 - таблица 1 выбраем всех клиентов которые купили товар2 - таблица 2 выбраем всех клиентов которые купили товар3 - таблица 3 Далее выбираем записи из таблиц которые совпадают, т.е. в результате мы выбираем всех клиентов которые за заданный пеирод времени купили все из выбраных товаров... |
|||
133
bananan
15.04.13
✎
14:09
|
(131) Не знаю, но какой резон мне тебе врать?
|
|||
134
Ёпрст
15.04.13
✎
14:16
|
(133) еще раз - больше кода.
Нам отсюда не видно твой текст запроса и ка ты его выполняешь |
|||
135
bananan
15.04.13
✎
14:20
|
(133) Запрос по клиентах и товарах - пока отложил, есть запрос который вы мне помогали сделать за несколько прошлых веток - "ошибки" в ценах (три вида ошибки есть)... так вот в нем в результаты выдавали Приходную цену, а надо выдавать цену товара в документе. В табличной части тех документов есть поле ЦенаСНДС, добавил я в запрос и... (как всегда :() выдает:
Invalid column name 'ЦенаСНДС'. Показываю текст запроса: |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($ДокШ.Агент, $ДокШН.Агент) Агеннт | , 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 ($ВидДокумента.РасходнаяНакладная, $ВидДокумента.РасходнаяНакладнаяН) "; Что неправильно с полем ЦенаСЭНДС? |
|||
136
bananan
15.04.13
✎
14:20
|
(134) По запросу клиенты/товары - позже...
|
|||
137
Mikeware
15.04.13
✎
14:20
|
бананан превзошел себя...
|
|||
138
bananan
15.04.13
✎
14:21
|
(137) и тебя тоже...
|
|||
139
Dolly_EV
15.04.13
✎
14:27
|
(135) $ДокС.ЦенаСНДС, $ДокН.ЦенаСНДС
доллАр забыл.... блин, на самом деле поучительно местами... когда до триггеров и курсоров дело дойдет - позовите меня, тоже поучусь bananan, это жесть конечно... как ты сам такую мешанину понимаешь? то алиса, то напрямую обращаешься...или не понимаешь? просто отладка текста на мисте через копи-паст, пока не заработает??))) |
|||
140
Wobland
15.04.13
✎
14:42
|
(139) он немного всё же понимает. как-то без помощи скобки вокруг вложенного запроса догадался поставить..
|
|||
141
Mikeware
15.04.13
✎
14:45
|
(138) а что ты хотел узнать про курсоры и триггеры? :-)
|
|||
142
Mikeware
15.04.13
✎
14:47
|
(139)(140) и все-таки, подход в (132) - редкостный по идиотизму даже для бананана...
|
|||
143
Wobland
15.04.13
✎
14:48
|
(141) у меня вот пробел в знаниях, не прочь ликвидировать ;)
|
|||
144
Mikeware
15.04.13
✎
14:49
|
Ну дык кнышшка есть, так ффсе написано.
если есть вопросы - "спрашивайте, отвечаем" |
|||
145
Wobland
15.04.13
✎
14:50
|
хм, логично ;)
|
|||
146
bananan
15.04.13
✎
14:54
|
(139) Да уж как-то понимаю, про копи-паст здесь уже много говорилось но каогда проще и быстрее сделатьт копи-паст и потом в вставленном исправить один-два символа - то я делаю копи-паст а не набираю по-новой, у каждого свой подход...
|
|||
147
bananan
15.04.13
✎
14:55
|
(142) А какую ельетрнативу моему идиотскому подходу ты предлагаешь? или ты просто как всегда флудишь??
|
|||
148
Dolly_EV
15.04.13
✎
14:59
|
(141) про триггеры - все хочу узнать))) теория есть, на практике не применял, нужен пинок))) вот-вот настанет подходящая задача... про курсоры - только слово такое знаю:-))
|
|||
149
Mikeware
15.04.13
✎
15:01
|
(147) так тебе уже решение дали. готовое.
а у тебя соотношение радиусов стремится к нулю.... |
|||
150
Dolly_EV
15.04.13
✎
15:04
|
(144) кнышки и инструкции - не наш метод! :-)))
|
|||
151
bananan
15.04.13
✎
15:09
|
(149) Но это готовое рещение, увы, НЕРАБОТАЕТ - за год ниодин клиент не купил Два выбраных товара? Абсурд - так не бывает!
|
|||
152
Dolly_EV
15.04.13
✎
15:10
|
(151) Не, такими темпами до триггеров в рамках темы не доберемся)))
|
|||
153
Dolly_EV
15.04.13
✎
15:11
|
(151) может это товар-стояк? ты просто так случайно угадал ? :-))) выбери ДВА других товара?
|
|||
154
bananan
15.04.13
✎
15:18
|
(153) Чтобы я без тебя делал? Выбирал разные товары - результат - ноль!
|
|||
155
Джон Вэйн
15.04.13
✎
15:33
|
так решил или не решид, а то у меня в чулане обработочка пылится, все ждет - найдется ли какой смелый мужчинка и вызволит ее из-заточения за какой-нить троячок
Да и я мучаюсь глядя на твои мучения |
|||
156
Ёпрст
15.04.13
✎
15:37
|
(151) еще раз - покажи запрос и весь свой код и то , что ты в в фильтр задаешь при этом.
|
|||
157
bananan
15.04.13
✎
15:42
|
(156) Сейчас верну твои изменения и покажу...
|
|||
158
bananan
15.04.13
✎
15:48
|
+(157) Выбрал такие товары (3 позиции): Нескафе Рістретто 12*500 г, Нескафе Еспрессо 12*500 г, Чай Нести Лимон 10*1кг
Запрос выдал несколько десятков строк но НИ В ОДНОЙ строке нет Чай Нести Лимон 10*1кг! Теперь код (опять же, изивини, ноя неуверен, что это именно такой код, как давал ты: ТекстЗапроса = " SELECT | Табличка.Товар as [Товар $Справочник.ТМЦ] | ,Табличка.Доставка as [Доставка $Справочник.Доставка] | ,Табличка.Адрес as Адрес | ,Табличка.КоличествоВЕд | ,Табличка.Клиент as [Клиент $Справочник.Клиенты] | ,Табличка.Агент as [Агент $Справочник.Агент] |from |( | 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 1=1 and 2=2 | group by | Таб.Товар | ,isnull($ДокШН.Доставка, $ДокШ.Доставка) | ,$Доставка.Адрес | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) | ,isnull($ДокШ.Агент, $ДокШН.Агент) |) as Табличка |"; Если ВыбТМЦ.РазмерСписка()>0 тогда // ТекстЗапроса = ТекстЗапроса + "Where exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент))"; ТекстЗапроса = ТекстЗапроса + "Where(Табличка.Товар in (select val from #СписокТМЦ)) and (not exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент)))"; ТекстВася =" |( | select | Таб.Товар as Товар | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as Клиент |from | ( | select | $ДокС.ТМЦ as Товар | ,ДокС.iddoc as Документ | from $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | union all | select | $ДокН.ТМЦ | ,ДокН.iddoc | 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 |where 1=1 and 2=2 |)"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Вася",ТекстВася); КонецЕсли; Если ВыбАгент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"1=1","isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов)"); КонецЕсли; Если ВыбКлиент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"2=2","isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #СписокКлиентов)"); КонецЕсли; Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ"); Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокАгентов","Агент"); Запрос.УложитьСписокОбъектов(ВыбКлиент, "#СписокКлиентов","Клиенты"); Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС); Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо); Запрос.УстановитьТекстовыйПараметр("ВыбЕдиница", ВыбЕд); //Запрос.Отладка(1); ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); Таб = СоздатьОбъект("Таблица"); Если Детали = 1 Тогда Таб.ИсходнаяТаблица("Таблица"); Иначе Таб.ИсходнаяТаблица("ТаблицаБез"); КонецЕсли; Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,Таб.ВысотаТаблицы()); ТбЗн.ВыбратьСтроки(); итер = 0; ПредАгент = ""; Пока ТбЗн.Получитьстроку()=1 Цикл Если итер > 1 тогда ПредАгент = ТбЗн.ПолучитьЗначение(итер-1, "Агент"); КонецЕсли; Если ТбЗн.Агент<>ПредАгент Тогда Если ВыбТмц.РазмерСписка()=3 тогда Если (ТбЗн.Товар=выбТмц.ПолучитьЗначение(1, "ТМЦ")) ИЛИ (ТбЗн.Товар=выбТмц.ПолучитьЗначение(2, "ТМЦ")) ИЛИ (ТбЗн.Товар=выбТмц.ПолучитьЗначение(2, "ТМЦ")) Тогда Таб.ВывестиСекцию("Док2"); КонецЕсли; КонеЦесли; Иначе Если ВыбТмц.РазмерСписка()=3 тогда Если (ТбЗн.Товар=выбТмц.ПолучитьЗначение(1, "ТМЦ")) ИЛИ (ТбЗн.Товар=выбТмц.ПолучитьЗначение(2, "ТМЦ")) ИЛИ (ТбЗн.Товар=выбТмц.ПолучитьЗначение(2, "ТМЦ")) Тогда Таб.ВывестиСекцию("Документ"); КонецЕсли; КонецЕсли; КонецЕсли; итер = итер + 1; ну и ву нем, как видещь есть "обработка" невыбраных товаров средствами 1С... |
|||
159
Ёпрст
15.04.13
✎
15:52
|
(157) зачет, ага.. т.е ты всега что-то еще от себя добавляешь каждый раз ?
|
|||
160
Ёпрст
15.04.13
✎
15:55
|
Значит так, делаем
ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); ТбЗн .ВыбратьСтроку(); Возврат; задаем фильтр Чай Нести Лимон 10*1кг Есть че ? |
|||
161
bananan
15.04.13
✎
16:00
|
(160) Извиняюсь, странно, но ничего нет...
|
|||
162
bananan
15.04.13
✎
16:01
|
+(161) Тоесть за заданный период небыло ни одного клиента который купилбы ВСЕ ТРИ товара (см. (158), и значит запрос не должин был не выдать НИОДНОЙ СТРОКи а он выдал
|
|||
163
Ёпрст
15.04.13
✎
16:03
|
(161) значит чай никто не брал, вставляем
Нескафе Рістретто 12*500 г есть че ? |
|||
164
Ёпрст
15.04.13
✎
16:03
|
(162) чего он выдал ?
|
|||
165
bananan
15.04.13
✎
16:03
|
+ И ко всему прочему сейчас даюавил два пердыдущих товара к чаю - возврат - ноль - что за фигня...
|
|||
166
bananan
15.04.13
✎
16:04
|
(164) Ноль ничего не выбрал!
|
|||
167
bananan
15.04.13
✎
16:06
|
+(166) и на експресо ничего нету!
|
|||
168
bananan
15.04.13
✎
16:07
|
(164) Ты гдле пропал?
|
|||
169
vinogradъ
15.04.13
✎
16:08
|
>> задаем фильтр Чай Нести Лимон 10*1кг
>> небыло ни одного клиента который купилбы ВСЕ ТРИ товара и значит запрос не должин был не выдать НИОДНОЙ СТРОКи !а он выдал! >> чего он выдал ? >> Ноль ничего не выбрал! http://rghost.ru/45306873/image.png |
|||
170
Ёпрст
15.04.13
✎
16:08
|
(167) а должно быть ?
Блин, выкини все фильтры - запусти запрос без них и смотри , что есть в результате. Потом добавляй в товары - смотри как фильтрует. |
|||
171
Ёпрст
15.04.13
✎
16:12
|
и период выбери - один день.
|
|||
172
bananan
15.04.13
✎
16:14
|
(170) Должно см (158). Запустил без выбора товарв (выкинул фильтры)- выдал несколько десятков строк..., запустил с Експресо выдал две строки, запустил с Ристето - выдал 5 строк,запустил с чаем - выдал 4 строки...
|
|||
173
bananan
15.04.13
✎
16:15
|
период всегда во всех проверках по этому зхапросу 20.11.12-20.11.12
|
|||
174
Ёпрст
15.04.13
✎
16:15
|
(172) И ?
чего не устраивает ? |
|||
175
bananan
15.04.13
✎
16:16
|
+172 А когда запустил все три Еспресо, РИсото, чай - ответ - НОЛЬ СТРОК
|
|||
176
Ёпрст
15.04.13
✎
16:17
|
(175)
И клиенты одни и те же были, когда ты запускал по отдельности Експресо ,Ристето и нескафе свой ? |
|||
177
bananan
15.04.13
✎
16:18
|
(174) Блин, что то я уж совсем запутался... Сейчас все еще и еще раз перепроверю и тогда скажу что не устраивает..
|
|||
178
Ёпрст
15.04.13
✎
16:18
|
Пиши так:
фильтр Експрессо запрос выдал: Клиентос Товар вася Експрессо ..... фильтр чай запрос выдал: Клиентос Товар Федя чай.. |
|||
179
bananan
15.04.13
✎
16:19
|
(176) А в окне которое вместо таблицы - клиентов нет...
|
|||
180
Ёпрст
15.04.13
✎
16:19
|
Ну и потом думай, что должно выдать, когда три товара сразу..
|
|||
181
Ёпрст
15.04.13
✎
16:20
|
(179) А куды делись ??
:)) Колонки Клиент нема шоле ? :) ты тот хоть запрос то запущаешь ? |
|||
182
bananan
15.04.13
✎
16:23
|
+ Что-то я НИЧЕГО НЕ ПОНИМАЮ, мистика какая-то, или у меня с головой фигня или с сервером сейчас с какм бы товаром (из тех трех ) не запустил - ничего не возвращает!!!
|
|||
183
bananan
15.04.13
✎
16:26
|
(181) Ну да запускаю а колонки клиент там нет... :( Я сола с ума, ах какая досада :(
|
|||
184
Ёпрст
15.04.13
✎
16:38
|
(183) ты там это, закрой все окошки и открой правидьный отчет и запущай.
|
|||
185
bananan
15.04.13
✎
16:43
|
Да тот я запрос запускаю, но онр чего-то .глючит. - то выдает результаты то нет, вот сейчас запустил на период 1 год, без выбраных товаров - не выдал НИЧЕГО, а этого уж никак не может быть!
|
|||
186
Джон Вэйн
15.04.13
✎
16:44
|
Хе-хе, они меня даже не заметили.. Ну нехай мучаются.. За такое отношение не грех и помучаться безрезультатненько..
|
|||
187
bananan
15.04.13
✎
16:46
|
(186) джони - вейнай отсюда!
|
|||
188
bananan
15.04.13
✎
16:48
|
+(185) запустил период 20,11,01-20,11,12, без выбраных товаров - результтат ноль
|
|||
189
vinogradъ
15.04.13
✎
16:49
|
(185) запускай с такими параметрами, которые можешь проверить вручную: 1 день, 1-2 товара, которые были только у определенных клиентов...
|
|||
190
Ёпрст
15.04.13
✎
16:50
|
(186)твоя поделка врят ли поможет аутору, даже за даром.
|
|||
191
bananan
15.04.13
✎
16:50
|
так блин запустил с изменениями в коде есть ТбЗн .ВыбратьСтроку(); ну и есть таблица так вот ТбЗн .ВыбратьСтроку(); в окошке несколько строк а в таблице - ниодной, буду смотреть чего там с таблицей не так...
|
|||
192
vinogradъ
15.04.13
✎
16:56
|
(191) сначала проверь правильность данных в ТбЗн, а потом уже печатную форму рисуй
|
|||
193
Ёпрст
15.04.13
✎
17:05
|
(191) ну дык, ты правильность запроса с фильтром проверил ?
ЗЫ: для отладки, кинь ТЗ на форму и в коде: Запрос.ВыполнитьИнструкцию(ТекстЗапроса).Выгрузить(ТабличкаНаФорме); |
|||
194
bananan
15.04.13
✎
17:13
|
+ Все вроде разобрался - работает как и надо, возник у меня вопрос... вроде так можно, короче надо чтобы был выдан Агент, клиент все товары что клиент брал.. т.е. идет группировка АГент Клиент ТМЦ. Ёпрст, где поставить такую групировку?
|
|||
195
Джон Вэйн
15.04.13
✎
17:23
|
(187) да ты просто мистомоська
|
|||
196
sapphire
15.04.13
✎
17:31
|
(195) Не, он - долбобей :)
|
|||
197
viktor_vv
15.04.13
✎
17:32
|
(191) Копипаст до добра не доводит :)
Если ВыбТмц.РазмерСписка()=3 тогда Если (ТбЗн.Товар=выбТмц.ПолучитьЗначение(1, "ТМЦ")) ИЛИ (ТбЗн.Товар=выбТмц.ПолучитьЗначение(2, "ТМЦ")) ИЛИ (ТбЗн.Товар=выбТмц.ПолучитьЗначение(2, "ТМЦ")) Тогда |
|||
198
viktor_vv
15.04.13
✎
17:34
|
Зачетное условие для вывода секций :)
Если ВыбТмц.РазмерСписка()=3 тогда |
|||
199
Ёпрст
15.04.13
✎
17:36
|
(194) у тебя и так всё это есть ужо в коде
тебе осталось только всё это красиво вывести в Таблицу отчета |
|||
200
bananan
15.04.13
✎
17:42
|
(199) вижу что есть но надо чтобі в первой строке таблиці Агент клиент Товар
дальше вторая строка Агент клиент Товар третья клиент тот же - не выводим Товар другой |
|||
201
bananan
15.04.13
✎
17:44
|
+(200) Это делать кодом 1С?
|
|||
202
viktor_vv
15.04.13
✎
17:46
|
(201) Ну у тебя же есть пример по выводу Агент -> Товар .
|
|||
203
bananan
15.04.13
✎
17:50
|
(202) ТАк и думал делать, но решил лучше спрошу у экспертов...
|
|||
204
viktor_vv
15.04.13
✎
17:54
|
(203) Ну можешь использовать Индексированную таблицу из 1С++, правда это опять обсуждение надолго, наверное.
|
|||
205
bananan
15.04.13
✎
17:57
|
(204) Есть адрес где об такой таблице можно почитать?
|
|||
206
Ёпрст
15.04.13
✎
17:59
|
||||
207
viktor_vv
15.04.13
✎
18:11
|
Ну и на примерную схему для твоего случая
лтзИнд = СоздатьОбъект("ИндексированнаяТаблица") ; ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса,лтзИнд); лтзИнд.Группировать("Агент:Агент*; Клиент:Клиент*;Товар:Товар*","КоличествоВЕд"); лтзИнд.ВыбратьСтроки(); Пока лтзИнд.ПолучитьСтроку() = 1 Цикл // Ввыводим секцию по Агенту // ................ Таб.ВывестиСекцию("Агент"); лтзКлиент = лтзИнд.ТЗПотомки ; лтзКлиент.ВыбратьСтроки(); Пока лтзКлиент.ПолучитьСтроку() = 1 Цикл // Ввыводим секцию по Клиенту // .............. Таб.ВывестиСекцию("Клиент"); лтзТовар = лтзКлиент.ТЗПотомки ; лтзТовар.ВыбратьСтроки(); Пока лтзТовар.ПолучитьСтроку() = 1 Цикл // Ввыводим секцию по Товару // .............. Таб.ВывестиСекцию("Товар"); КонецЦикла ; КонецЦикла ; КонецЦикла ; На всякий случай уточню, имена секций даны для примера и могут не совпадать с твоими :). |
|||
208
bananan
15.04.13
✎
18:29
|
(206)(207) СПАсИБО!
|
|||
209
bananan
15.04.13
✎
18:53
|
(207) а зачем в коде Агент*, а не просто Агент?
|
|||
210
viktor_vv
15.04.13
✎
19:10
|
(209) Так группируется по внутренней ссылке, а не по представлению, так быстрее.
|
|||
211
Wobland
16.04.13
✎
06:41
|
а скажите, как можно проверить пустоту результата? типа Запрос.Выполнить().Пустой()? так лениво документацию копать, прям так лениво ;)
|
|||
212
Mikeware
16.04.13
✎
06:43
|
(211)КоличествоСтрок()=0 ?
|
|||
213
Wobland
16.04.13
✎
06:49
|
(212) так и сделал. для того, чтобы узнать есть/нет, приходится заводить целую ТЗ, выгружать в неё.. думал, мож, проще есть что-то
|
|||
214
Mikeware
16.04.13
✎
06:52
|
(213) А зачем заводить-выгружать?
ну, или у тебя запрос типа "да/нет"? |
|||
215
Wobland
16.04.13
✎
06:54
|
а вообще, у меня методический подход неверен, переобдумал.
бал задача: выяснить, нет ли в документе комиссионного товара. если есть, начинать выгружать. комиссионность определяется статусом партии в регистре партии |
|||
216
Wobland
16.04.13
✎
06:54
|
(215) *была задача
|
|||
217
Mikeware
16.04.13
✎
06:56
|
(215) ну и получай весь комиссионный. Если он есть - обрабатывай.
|
|||
218
Wobland
16.04.13
✎
07:00
|
(217) вот это и есть методически верный подход ;)
|
|||
219
Wobland
16.04.13
✎
07:04
|
ВыполнитьСкалярный можно ж юзать для проверки пустоты, судя по документации
|
|||
220
Mikeware
16.04.13
✎
07:07
|
(219)я к тому и вел в (214) :-)
|
|||
221
bananan
16.04.13
✎
10:28
|
Доброе утро!
Вот вожусь с СоздатьОбъект("ИндексированнаяТаблица"), ну написал (взял из того что мне дал (207) вроде здесь ничего менять не надо: лтзИнд.Группировать("Агент:Агент*; Клиент:Клиент*;Товар:Товар*","КоличествоВЕд"); но, блин, выдает Колонка 'Агент' не найдена! Запускаю таблицу значений, ясно, колонка Агент есть, так в чем проблесма? |
|||
222
Mikeware
16.04.13
✎
10:40
|
в ДНК
|
|||
223
chelentano
16.04.13
✎
10:42
|
(221) не твоё это, смирись
|
|||
224
Гефест
16.04.13
✎
10:42
|
Вы ему уже и индексированную таблицу показали? Беспощадные люди...
|
|||
225
Mikeware
16.04.13
✎
10:43
|
(224) а забавно же...
как мартышке - гранату... |
|||
226
Mikeware
16.04.13
✎
10:44
|
+(225) впрочем, я, похоже, только что этим сравнением сильно обидел и даже оскорбил мартышек...
|
|||
227
chelentano
16.04.13
✎
10:45
|
(224) Вообще звери. Главное, чтобы ему никто про платформу 8.2 ничего не сказал, хотя... будет забавно
|
|||
228
Mikeware
16.04.13
✎
10:47
|
(227) там скрипты не той системы...
|
|||
229
viktor_vv
16.04.13
✎
10:49
|
(221) А где хоть ошибку выдает ? И запрос еще раз покажи, а то у тебя есть привычка постоянно че-то менять там.
|
|||
230
chelentano
16.04.13
✎
10:50
|
(229) Я думал, что только Ёпрст такой терпеливый
|
|||
231
viktor_vv
16.04.13
✎
10:53
|
(230) Ну интересно поэкспериментировать :).
(221) Че-то меня смущает твое "но, блин, выдает Колонка 'Агент' не найдена! Запускаю таблицу значений, ясно, колонка Агент" Попробуй еще так лтзИнд = СоздатьОбъект("ИндексированнаяТаблица") ; Запрос.ВыполнитьИнструкцию(ТекстЗапроса,лтзИнд); |
|||
232
bananan
16.04.13
✎
10:57
|
(226) Мартишки на таких как ты - не обижаются!
(229) лтзИнд.Группировать("Агент:Агент; Клиент:Клиент*;Товар:Товар*","КоличествоВЕд"); {\\SERVER12\VPKTEST$\EXTFORMS\ЗАПРОС _КЛИЕНТ+ТОВАР.ERT(154)}: Колонка 'Агент' не найдена! |
|||
233
bananan
16.04.13
✎
10:58
|
Сейчас попробую (231), хотя мне тоже чем-то не нравится строка:
лтзИнд.Группировать("Агент:Агент*; Клиент:Клиент*; Товар:Товар*","КоличествоВЕд"); |
|||
234
bananan
16.04.13
✎
11:06
|
+(233) Хотя нет, изменил как в (231) и заработало...
|
|||
235
chelentano
16.04.13
✎
11:08
|
(234) Мы все рады за тебя, с нетерпением ждём следующих вопросов
|
|||
236
Wobland
16.04.13
✎
11:23
|
а прикольно. никогда не пробовал плюсы в именах файлов использовать
|
|||
237
bananan
16.04.13
✎
11:31
|
(236) Такое впечатление, что только флудить пробывал всегда, а вот что-то полезное - это тебе слабо...
|
|||
238
Mikeware
16.04.13
✎
11:32
|
(236) и не надо.
|
|||
239
viktor_vv
16.04.13
✎
11:35
|
(237) Ты не отвлекайся, мы ждем результатов :).
|
|||
240
bananan
16.04.13
✎
11:41
|
(239) Результати - нормально все, от "мартышки" - МикнутомуВеру и Тшелентано спасибо.
а от меня лично - спасибо всем кто подсказал мне полезное... |
|||
241
Privalov
16.04.13
✎
11:45
|
Охренеть!!! Это какая серия?
|
|||
242
viktor_vv
16.04.13
✎
11:47
|
(241) Эта музыка будет длиться вечно. Наутилус (с).
|
|||
243
chelentano
16.04.13
✎
11:50
|
(240) Не "подсказал", а "сделал за меня"
|
|||
244
Wobland
16.04.13
✎
11:52
|
(237) у меня за крайние пол-года около сотни скриптов накопилось ;)
|
|||
245
Wobland
16.04.13
✎
11:54
|
(244) и это только внешних. а ещё есть встроенные скрипты и даже одна нетленка
|
|||
246
chelentano
16.04.13
✎
11:56
|
(245) "скриптленка"?
|
|||
247
Wobland
16.04.13
✎
12:03
|
(246) тут кусок есть. кстати, файл не удаляется до сих пор
v8: Отправка почты помогите с примером |
|||
248
bananan
16.04.13
✎
12:14
|
+Что-то странное...
Запускаю запрос (период 1 месяц выбираю товары: Нескафе Еспрессо 12*500 г Нескафе Рістретто 12*500 г выдает Присяжнюк Сергій Яцковець Ігор Вячеславович Нескафе Еспрессо 12*500 г 4.66 Нескафе Еспрессо 12*500 г 4.66 Опанасюк Сергій Данилицький Павло Андрійович Нескафе Еспрессо 12*500 г 1.08 Нескафе Еспрессо 12*500 г 1.08 |
|||
249
bananan
16.04.13
✎
12:16
|
когда выбрал только выдает:
Бреус Юрій Смірнов Дмитро Євгенович Нескафе Рістретто 12*500 г 1.91 Смірнов Дмитро Євгенович Нескафе Рістретто 12*500 г 1.91 Смірнов Дмитро Євгенович Нескафе Рістретто 12*500 г 1.91 Смірнов Дмитро Євгенович Нескафе Рістретто 12*500 г 1.91 Смірнов Дмитро Євгенович Нескафе Рістретто 12*500 г 1.91 Смірнов Дмитро Євгенович Нескафе Рістретто 12*500 г 1.91 Смірнов Дмитро Євгенович Нескафе Рістретто 12*500 г 1.91 Смірнов Дмитро Євгенович Нескафе Рістретто 12*500 г 1.91 Смірнов Дмитро Євгенович Нескафе Рістретто 12*500 г 1.91 Опанасюк Сергій Борис Олена Петрівна Нескафе Рістретто 12*500 г 13.08 Борис Олена Петрівна Нескафе Рістретто 12*500 г 13.08 Борис Олена Петрівна ну там много строк, когда выбираю експрессо - Мохнач Микола Сагома 16436 Нескафе Еспрессо 12*500 г 1.24 Сагома 16436 Нескафе Еспрессо 12*500 г 1.24 Сагома 16436 Нескафе Еспрессо 12*500 г 1.24 Сагома 16436 Нескафе Еспрессо 12*500 г 1.24 Сагома 16436 Нескафе Еспрессо 12*500 г 1.24 Сагома 16436 Нескафе Еспрессо 12*500 г 1.24 Сагома 16436 Нескафе Еспрессо 12*500 г 1.24 Сагома 16436 Нескафе Еспрессо 12*500 г 1.24 Опанасюк Сергій Сагома 16449 Нескафе Еспрессо 12*500 г 1.08 опять же - много строк... |
|||
250
Ёпрст
16.04.13
✎
12:16
|
нам отсюда не видно, что там у тебя в коде написано
|
|||
251
Wobland
16.04.13
✎
12:17
|
>когда выбрал только выдает
только что? какие варианты ответа? |
|||
252
bananan
16.04.13
✎
12:17
|
Почему в первом случае когда было выбрано два товара - запрос выдал на гора только несколько строк в которых только один из выбраных товаров?
Вся беда влтзИнд.Группировать("Агент:Агент*; Клиент:Клиент*; Товар:Товар*","КоличествоВЕд");? |
|||
253
bananan
16.04.13
✎
12:17
|
(250)
лтзИнд = СоздатьОбъект("ИндексированнаяТаблица"); Запрос.ВыполнитьИнструкцию(ТекстЗапроса,лтзИнд); //ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); //ТбЗн .ВыбратьСтроку(); //Возврат; лтзИнд.Группировать("Агент:Агент*; Клиент:Клиент*; Товар:Товар*","КоличествоВЕд"); лтзИнд.ВыбратьСтроки(); Таб = СоздатьОбъект("Таблица"); Таб.ВывестиСекцию("Шапка"); Если Детали = 1 Тогда Таб.ИсходнаяТаблица("ИндексТаблица"); |
|||
254
Ёпрст
16.04.13
✎
12:27
|
(253)И ?
где всё остальное ? |
|||
255
bananan
16.04.13
✎
12:30
|
(254) полный код:
ТекстЗапроса = " SELECT | Табличка.Товар as [Товар $Справочник.ТМЦ] | ,Табличка.Доставка as [Доставка $Справочник.Доставка] | ,Табличка.Адрес as Адрес | ,Табличка.КоличествоВЕд | ,Табличка.Клиент as [Клиент $Справочник.Клиенты] | ,Табличка.Агент as [Агент $Справочник.Агент] |from |( | 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 1=1 and 2=2 | group by | isnull($ДокШ.Агент, $ДокШН.Агент) | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) | , Таб.Товар | ,isnull($ДокШН.Доставка, $ДокШ.Доставка) | ,$Доставка.Адрес |) as Табличка |"; Если ВыбТМЦ.РазмерСписка()>0 тогда ТекстЗапроса = ТекстЗапроса + "Where(Табличка.Товар in (select val from #СписокТМЦ)) and (not exists (select val from #СписокТМЦ where val not in (select t2.Товар from Вася as t2 where t2.Клиент = Табличка.Клиент)))"; ТекстВася =" |( | select | Таб.Товар as Товар | ,isnull($ДокШ.Клиент, $ДокШН.Клиент) as Клиент |from | ( | select | $ДокС.ТМЦ as Товар | ,ДокС.iddoc as Документ | from $ДокументСтроки.РасходнаяНакладная as ДокС (nolock) | union all | select | $ДокН.ТМЦ | ,ДокН.iddoc | 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 |where 1=1 and 2=2 |)"; ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"Вася",ТекстВася); КонецЕсли; Если ВыбАгент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"1=1","isnull($ДокШ.Агент, $ДокШН.Агент) IN (SELECT val FROM #СписокАгентов)"); КонецЕсли; Если ВыбКлиент.РазмерСписка()>0 тогда ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"2=2","isnull($ДокШ.Клиент, $ДокШН.Клиент) IN (SELECT val FROM #СписокКлиентов)"); КонецЕсли; Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ"); Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокАгентов","Агент"); Запрос.УложитьСписокОбъектов(ВыбКлиент, "#СписокКлиентов","Клиенты"); Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС); Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо); Запрос.УстановитьТекстовыйПараметр("ВыбЕдиница", ВыбЕд); //Запрос.Отладка(1); лтзИнд = СоздатьОбъект("ИндексированнаяТаблица"); Запрос.ВыполнитьИнструкцию(ТекстЗапроса,лтзИнд); //ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); //ТбЗн .ВыбратьСтроку(); //Возврат; лтзИнд.Группировать("Агент:Агент*; Клиент:Клиент*; Товар:Товар*","КоличествоВЕд"); лтзИнд.ВыбратьСтроки(); Таб = СоздатьОбъект("Таблица"); Таб.ВывестиСекцию("Шапка"); Если Детали = 1 Тогда Таб.ИсходнаяТаблица("ИндексТаблица"); Иначе Таб.ИсходнаяТаблица("ТаблицаБез"); КонецЕсли; Пока лтзИнд.ПолучитьСтроку() = 1 Цикл // Ввыводим секцию по Агенту // ................ Таб.ВывестиСекцию("Агент"); лтзКлиент = лтзИнд.ТЗПотомки ; лтзКлиент.ВыбратьСтроки(); Пока лтзКлиент.ПолучитьСтроку() = 1 Цикл // Ввыводим секцию по Клиенту // .............. Таб.ВывестиСекцию("Клиент"); лтзТовар = лтзКлиент.ТЗПотомки ; лтзТовар.ВыбратьСтроки(); Пока лтзТовар.ПолучитьСтроку() = 1 Цикл // Ввыводим секцию по Товару // .............. Таб.ВывестиСекцию("Товар"); КонецЦикла ; КонецЦикла ; КонецЦикла ; |
|||
256
Ёпрст
16.04.13
✎
12:32
|
круто.. а в самом макете в секции Агент/Клиент/Менеджер что написано ?
|
|||
257
Ёпрст
16.04.13
✎
12:33
|
ну и ничего, что у тебя еще и Адрес с Доставкой есть ?
|
|||
258
bananan
16.04.13
✎
12:33
|
(256)
секция Агент лтзИнд.Агент секция Клиент лтзИнд.Клиент секция товар лтзИнд.Товар |
|||
259
bananan
16.04.13
✎
12:33
|
(257) об адресе - забыл...
|
|||
260
Ёпрст
16.04.13
✎
12:35
|
(258)
измени на так, для начала секция Агент лтзИнд.Агент секция Клиент лтзКлиент.Клиент секция товар лтзТовар.Товар Количество лтзТовар.КоличествоВЕд |
|||
261
bananan
16.04.13
✎
12:37
|
Количество - это еще одна секция?
Я не точно тебе показал в секции товар у меня (сейчас) лтзИнд.Товар Окр(лтзИнд.КоличествоВЕД, 2,2) лтзИнд.Адрес |
|||
262
Ёпрст
16.04.13
✎
12:41
|
(261) только надо брать значения вложенных ИТЗ, а не как у тебя.
|
|||
263
Ёпрст
16.04.13
✎
12:42
|
в общем, не помешало бы прочитать про метог группировать - там даже мини пример "на пальцах" есть
|
|||
264
viktor_vv
16.04.13
✎
12:58
|
(263) Я наверное поторопился, дав ему пример , надо было подождать, может таки прочитал бы хоть по диагонали :).
|
|||
265
Wobland
16.04.13
✎
12:59
|
(264) я его уже тыкал носом в прочитанного Ицика. без толку
|
|||
266
Ёпрст
16.04.13
✎
13:13
|
Та не, метод копи-паста рулит!
В следующий раз , надо просто почаще пользовать конструкцией truncate в тексте запроса и усё будет пучком |
|||
267
bananan
16.04.13
✎
13:13
|
(262) читал, вернее - бегло посмотрел, но в примере по методу Гриппировать НИЧЕГО НЕТ КАК ОБРАЩАТСЯ К ЗНАЧЕНИЯМ вложенных ИТЗ!...
P.S.Оказывается Mikeware - модератор (или ведущий)! Какая честь для меня что энтот чел меня мартишкой называет! ОГРОМНОЕ спасибо Mikeware за блокировку!!! P.S.P.S. Как тут не вспомнить: "Сила есть - ума НеНАДО!" |
|||
268
Ёпрст
16.04.13
✎
13:15
|
(267) че за блокировка ?
|
|||
269
Wobland
16.04.13
✎
13:16
|
(268) бананан как-то хамил, Майквар размышлял о бане. не знаю
|
|||
270
bananan
16.04.13
✎
13:19
|
(268) Я что-то не додумался скопипастить, но короче дословно не помню, пользователь заблокирован за коверкание ников до 13:08...
А как достучаться до вложеных ИТЗ? |
|||
272
Mikeware
16.04.13
✎
13:21
|
(268) банил на пол-часика за коверканье ников
|
|||
274
viktor_vv
16.04.13
✎
13:22
|
(270) А чего там стучаться. Вот здесь тебе что непонятно, и где ты тут видишь упоминание про лтзИнд ?
|
|||
275
viktor_vv
16.04.13
✎
13:23
|
(274)+ Вот здесь имел ввиду
лтзТовар = лтзКлиент.ТЗПотомки ; лтзТовар.ВыбратьСтроки(); Пока лтзТовар.ПолучитьСтроку() = 1 Цикл // Ввыводим секцию по Товару // .............. Таб.ВывестиСекцию("Товар"); КонецЦикла ; |
|||
276
bananan
16.04.13
✎
13:23
|
(272) А за коверкание моего ника ты кого-нить банил?
|
|||
277
Wobland
16.04.13
✎
13:24
|
(276) а я как-то не припомню. его сложно заковеркать
|
|||
278
viktor_vv
16.04.13
✎
13:24
|
Насчет достучаться, медитируй вот над этой строчкой
лтзТовар = лтзКлиент.ТЗПотомки ; |
|||
279
Mikeware
16.04.13
✎
13:25
|
(276) а кто его коверкал? транслитерация на русский - ковераньем не считается...
|
|||
280
bananan
16.04.13
✎
13:35
|
(275) А что такое: лтзКлиент?
|
|||
281
bananan
16.04.13
✎
13:37
|
(279) Твои возможности, о МОГУЧИЙ модератор, я запомнил, а с коверканием моего ника 99% до конца этой ветки такое будет и не раз...
|
|||
282
Wobland
16.04.13
✎
13:38
|
тут уже ради спортивного интереса хочется исковеркать.. подумаю пока
|
|||
283
bananan
16.04.13
✎
13:39
|
+(280) Догадываюсь что это, но так:
лтзИнд.Группировать("Агент:Агент*; Клиент:Клиент*; Товар:Товар*","КоличествоВЕд"); лтзТовар = лтзКлиент.ТЗПотомки ; лтзИнд.ВыбратьСтроки(); Таб = СоздатьОбъект("Таблица"); не пропускает: Переменная не определена (лтзКлиент) |
|||
284
bananan
16.04.13
✎
13:40
|
(282) Я посмотрю ты на форуме только спортом и занимаешся - пустословием...
|
|||
285
bananan
16.04.13
✎
13:46
|
+ХМ, написал так:
лтзИнд.Группировать("Агент:Агент*; Клиент:Клиент*; Товар:Товар*","КоличествоВЕд"); лтзКлиент = лтзИнд.ТЗПотомки ; лтзТовар = лтзКлиент.ТЗПотомки ; лтзИнд.ВыбратьСтроки(); Таб = СоздатьОбъект("Таблица"); ругается: лтзКлиент = лтзИнд.ТЗПотомки ; {\\SERVER12\VPKTEST$\EXTFORMS\ЗАПРОС _КЛИЕНТ+ТОВАР.ERT(156)}: Нет текущей строки! |
|||
286
Wobland
16.04.13
✎
13:47
|
(284) серьёзно?
|
|||
287
bananan
16.04.13
✎
13:48
|
(286) Хоть один пример твоего сообщения без оскорбления и со стоящим советом?
|
|||
288
Wobland
16.04.13
✎
13:49
|
||||
289
Ёпрст
16.04.13
✎
13:50
|
(285) опять шаловливыми ручонками в код тянешься ?
Тебе же написали, что нужно поменять в макете, чтоб код из (255) стал рабочим (точнее, чтоб твой макет был рабочим) |
|||
290
Mikeware
16.04.13
✎
13:51
|
(281) Ну так приведи пример - номер поста. Или буду вынужден забанить за вранье...
|
|||
291
bananan
16.04.13
✎
13:55
|
(290) - (244), (236), (110), (120), (140)
а теперь бань, пусть все посмотрят какой ты ВСЕМАГУЧИй |
|||
292
Wobland
16.04.13
✎
13:56
|
(290) банить за враньё? кто дятловцев укокошил? обязательно ж кто-то на мисте врёт ;)
|
|||
293
bananan
16.04.13
✎
13:56
|
(289) Не понял. Где мне написали?
|
|||
294
Wobland
16.04.13
✎
13:56
|
(291) ээ.. как-то о коверкании там ни слова
|
|||
295
bananan
16.04.13
✎
13:57
|
(260)?
Что такое: Количество лтзТовар.КоличествоВЕд? |
|||
296
bananan
16.04.13
✎
13:57
|
(294) как всегда - "одни дельные советы"!
|
|||
297
Ёпрст
16.04.13
✎
13:57
|
(293) в (260)
|
|||
298
bananan
16.04.13
✎
13:58
|
(297) псомтри (295)...
|
|||
299
Ёпрст
16.04.13
✎
13:59
|
(295) Это куда там у тебя количество выводится у товара, нужно прописать лтзТовар.КоличествоВЕд?
|
|||
300
Ёпрст
16.04.13
✎
14:00
|
только ты еще забыл про свои адреса и доставку.
|
|||
301
bananan
16.04.13
✎
14:19
|
(299) Не понял со слов, сейчас попробую примерно как ты говоришь...
но код: лтзИнд = СоздатьОбъект("ИндексированнаяТаблица"); Запрос.ВыполнитьИнструкцию(ТекстЗапроса,лтзИнд); //ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); //ТбЗн .ВыбратьСтроку(); //Возврат; лтзИнд.Группировать("Агент:Агент*; Клиент:Клиент*; Товар:Товар*","КоличествоВЕд"); лтзКлиент = лтзИнд.ТЗПотомки ; лтзТовар = лтзКлиент.ТЗПотомки ; лтзИнд.ВыбратьСтроки(); Таб = СоздатьОбъект("Таблица"); Таб.ВывестиСекцию("Шапка"); Если Детали = 1 Тогда Таб.ИсходнаяТаблица("ИндексТаблица"); Выдает: лтзКлиент = лтзИнд.ТЗПотомки ; {\\SERVER12\VPKTEST$\EXTFORMS\ЗАПРОС _КЛИЕНТ+ТОВАР.ERT(156)}: Нет текущей строки! а если убрать лтзКлиент = лтзИнд.ТЗПотомки ; - выдает: лтзТовар = лтзКлиент<<?>>.ТЗПотомки ; {\\SERVER12\VPKTEST$\EXTFORMS\ЗАПРОС _КЛИЕНТ+ТОВАР.ERT(156)}: Переменная не определена (лтзКлиент) Как быть? |
|||
302
Ёпрст
16.04.13
✎
14:22
|
(301) читать мануал вестимо.
У какой строки ты хоть берешь свою ТЗПотмоки ? :)) |
|||
303
Ёпрст
16.04.13
✎
14:22
|
у тя же был рабочий код.. нафига ты его портишь ?
|
|||
304
bananan
16.04.13
✎
14:24
|
(301) В мануале об этом я что-то ничего не нашел...
|
|||
305
bananan
16.04.13
✎
14:25
|
(304) потомки на сколько я понимаю надо искать у строки агент, и строки клиент...
|
|||
306
Ёпрст
16.04.13
✎
14:26
|
(304) а ты его хоть открывал/читал ?
|
|||
307
Ёпрст
16.04.13
✎
14:26
|
http://www.1cpp.ru/docum/icpp/html/IndexedTable.html#group
там есть всё - даже пример |
|||
308
Ёпрст
16.04.13
✎
14:26
|
в картинках
|
|||
309
Wobland
16.04.13
✎
14:27
|
(307) номер строки, куда читать, скажи
|
|||
310
bananan
16.04.13
✎
14:27
|
(307) Открывал и читал, прмер? И где же там как достучаться до Потомков?
|
|||
311
bananan
16.04.13
✎
14:28
|
(309) Опять дельный совет!
|
|||
312
Zhuravlik
16.04.13
✎
14:28
|
(310) ИТЗ.тзПотомки
|
|||
313
Wobland
16.04.13
✎
14:29
|
(311) а то! ты ж самостоятельно даже с чтением не справляешься
|
|||
314
Zhuravlik
16.04.13
✎
14:29
|
(310) + и получаем таблицу такого вида (в *колонке тзПотомки* показано содержимое таблицы тзПотомки):
|
|||
315
bananan
16.04.13
✎
14:30
|
(312) Группировать / Group
Синтаксис: Группировать(стрГруппировки, стрКолонкиСумм, [чРасшифровкаПоследнегоУровня = 0]) Параметры: стрГруппировки - тип: Строка. Строка, описывающая требуемую структуру группировки. Задаётся в виде <ИмяИндекса1>: <ИндексноеВыражение1> [; <ИмяИндекса2>: <ИндексноеВыражение2> ... ]. ИндексноеВыражение - строка в том же формате, что и для метода ДобавитьИндекс(), с одним дополнением: если в списке модификаторов колонки присутствует символ '&', то по этой колонке будут посчитаны итоги по группам справочника. Колонка с таким модификатором может быть только одна на каждом уровне группировки. стрКолонкиСумм - тип: Строка. Строка с колонками, по которым нужно считать суммы. чРасшифровкаПоследнегоУровня - тип: Число. 1 - в каждой строке последнего уровня группировки будет таблица с расшифровкой, содержащая строки исходной таблицы в нетронутом виде. 0 - последний уровень будет свёрнут. Описание: формирует таблицу с древовидной структурой в соответствии с группировками. На каждом уровне группировки остаются только уникальные значения по соответствующему индексу. В колонки сумм записываются суммы по всем строкам с совпадающим значением ключа. Строки с совпадающими значениями ключа записываются в таблицу, которая помещается в колонку тзПотомки - эта колонка создаётся в процессе группировки. Пример: на входе имеем таблицуФамилия Имя Сумма Иванов Иван 100 Иванов Сергей 120 Петров Пётр 130 Петров Александр 200 группируем её: ТЗ.Группировать("Фамилия: Фамилия; Имя: Имя", "Сумма"); и получаем таблицу такого вида (в колонке тзПотомки показано содержимое таблицы тзПотомки):Фамилия Имя Сумма тзПотомки Фамилия Имя Сумма Иванов Иван 220 Иванов Иван 100 Иванов Сергей 120 Петров Пётр 330 Петров Пётр 130 Петров Александр 200 При группировке возможно также подсчитывать суммы по группам справочников - для этого в списке модификаторов индекса нужно указать '&'. Если в таблице есть колонка с именем '<ИмяКолонкиСправочника>_Родитель', то родитель для элемента будет браться из этой колонки - это уменьшает количество обращений к базе, и заметно увеличивает производительность. Итоговая таблица будет организована в виде дерева, в точности повторяющего структуру справочника. Следующий уровень группировки располагается в листьях этого дерева (т.е. в строках, не являющихся группами). Для удобства работы с полученным деревом в таблицу добавляется колонка '__ЭтоГруппа__', в которую записывается 1 для всех групп, и ПустоеЗначение для элементов. Также добавляется колонка '__Уровень__', которая заполняется значением уровня групп справочника (нумерация начинается с 1). Для элементов в колонку '__Уровень__' записывается ПустоеЗначение. И где здесь ИТЗ.тзПотомки???? |
|||
316
Zhuravlik
16.04.13
✎
14:31
|
(315) CTRL + F -> "Потомки"
|
|||
317
viktor_vv
16.04.13
✎
14:31
|
(314) Не поможет, на предыдущей странице все это есть, и оно даже работало у него, немного неправильно, и объяснили в чем косяк, а не выходит каменный цветок.
|
|||
318
viktor_vv
16.04.13
✎
14:32
|
(315) По слогам читай
"и получаем таблицу такого вида (в колонке тзПотомки показано содержимое таблицы тзПотомки):Фамилия Имя Сумма тзПотомки" |
|||
319
Zhuravlik
16.04.13
✎
14:32
|
(315) ИТЗ - это объект "ИндексированнаяТаблица"
|
|||
320
viktor_vv
16.04.13
✎
14:33
|
(318)+ И это тоже
"Строки с совпадающими значениями ключа записываются в таблицу, которая помещается в колонку тзПотомки - эта колонка создаётся в процессе группировки." |
|||
321
bananan
16.04.13
✎
14:33
|
(316) ИТЗ.тзПотомки где? нет! Мануал криво написан с офигенным примером, который то примером назвать нельзя...
|
|||
322
bananan
16.04.13
✎
14:34
|
(318)(320) вроде суть понял - сейчас буду пробывать...
|
|||
323
viktor_vv
16.04.13
✎
14:35
|
(322) Да не надо пробовать, возьми начальный вариант, который работал, и поменяй макет как Ёпрст написал.
|
|||
324
Zhuravlik
16.04.13
✎
14:35
|
(321) Да...
Если по примеру в (301), то можно написать лтзИнд.тзПотомки. Смысл в том, что моя "ИТЗ", или "лтзИНД" из (301) - это суть одно и тоже. Просто ИТЗ - понятнее обычно, ИТЗ - "индексированная таблица значений". |
|||
325
viktor_vv
16.04.13
✎
14:37
|
(324) Как это одно и тоже, если буковки разные :). Это я шучу так.
Но в данном случае это актуально, насчет разных буковок. |
|||
326
bananan
16.04.13
✎
14:38
|
(323) Начальный вариант это (207) ? А совет Ёпрст к нему какой?
|
|||
327
Zhuravlik
16.04.13
✎
14:39
|
(325) Я уже понял)
|
|||
328
bananan
16.04.13
✎
14:39
|
+(326) Ко всему вариант (207) не работает ...
|
|||
329
viktor_vv
16.04.13
✎
14:39
|
(326) Начальный вариант (255), а совет (260).
|
|||
330
Mikeware
16.04.13
✎
14:40
|
(314) лтз - локальная таблица значений.
тоже все понятно |
|||
331
viktor_vv
16.04.13
✎
14:41
|
(328) Такое ощущение, что у тебя дольше 5 минут в голове ничего не держится, ты уж извини.
|
|||
332
Mikeware
16.04.13
✎
14:43
|
(331)"а если у вас вместо головы жопа - заведите себе записную книжку!"©
|
|||
333
bananan
16.04.13
✎
14:46
|
332 Еще один абуриген вспомнил умные слова... Да, не ту страну назвали Гондурасом...
|
|||
334
Mikeware
16.04.13
✎
14:51
|
(333) сходи к депутату вашей рады, и выдвинь инициативу назвать гондурасом именно вашу страну. ты как абориген имеешь полное право на такую инициативу.
|
|||
335
Mikeware
16.04.13
✎
14:52
|
+(334) ну хотя бы область или город.
"бананан из гондураса" - это звучит! |
|||
336
ЧеловекДуши
16.04.13
✎
14:52
|
(334) Ему там самое место, думать не надо, помнить не надо.
Жимкай кнопку "Да", "Нет" по взмаху куратора и все будет Хорошо :) |
|||
337
Wobland
16.04.13
✎
14:54
|
в общем, исковеркать имя не получилось. тупая замена гласных - так себе вариант. так что не было и не будет
|
|||
338
bananan
16.04.13
✎
15:03
|
(334) Украину надо называть Янебляндия ну или Зонблядния
|
|||
339
bananan
16.04.13
✎
15:04
|
+ Ну и в совете Ёпрест я на понял "секция товар лтзТовар.Товар Количество лтзТовар.КоличествоВЕд"
Количество лтзТовар.КоличествоВЕд - это что? |
|||
340
bananan
16.04.13
✎
15:10
|
+(339) ну и в сеции Товар у меня было и есть поле Окр(лтзИнд.КоличествоВЕД, 2,2).
Так что надо чтобы он правильно выдавл результаты?? |
|||
341
viktor_vv
16.04.13
✎
15:11
|
(339) Ну что ж ты на ровном месте буксуешь?
Ну вместо Окр(лтзИнд.КоличествоВЕД, 2,2). напиши Окр(лтзТовар.КоличествоВЕД, 2,2). |
|||
342
Ёпрст
16.04.13
✎
15:12
|
(340) надо в секции Товар заменить Окр(лтзИнд.КоличествоВЕД, 2,2). на лтзТовар.КоличествоВЕд
|
|||
343
viktor_vv
16.04.13
✎
15:12
|
(341) Именно в секции Товар. Вместо лтзИнд.Товар напиши лтзТовары.Товар .
|
|||
344
bananan
16.04.13
✎
15:15
|
(343) я написал (не читая еще то что вы советуете? Окр(лтзТовар.КоличествоВЕД, 2,2) - выдает все-равно не то что должен был бы выдавать. Сейчас попробую так как вы советуете, но ведь вы же мне тоже самое советуете?
|
|||
345
viktor_vv
16.04.13
✎
15:15
|
(343)* лтзТовар.Товар .
|
|||
346
viktor_vv
16.04.13
✎
15:16
|
(344) Тут уже зависит от того, а что тебе там надо выдавать.
|
|||
347
bananan
16.04.13
✎
15:19
|
(345) Спасибо, вроде заработало правильно сейчас отнесу нашей агенту пусть проверят
|
|||
348
Mikeware
16.04.13
✎
15:22
|
(347) Бобру?
|
|||
349
bananan
16.04.13
✎
15:46
|
Странно макет таблицы такой: http://us.ua/1093992/, а выдает на экран: http://us.ua/1093993/
Почему? |
|||
350
Ёпрст
16.04.13
✎
15:56
|
(349) потому, что в адресе косъяк
|
|||
351
bananan
16.04.13
✎
16:01
|
(350) В самих данных или в лтзИнд.Адрес?
|
|||
352
viktor_vv
16.04.13
✎
16:06
|
(349) А что тебе там не нравится ?
|
|||
353
viktor_vv
16.04.13
✎
16:07
|
И как этот адрес выглядит в карточке ?
Там в глобальнике должна быть функция для нормального представления адреса. |
|||
354
Mikeware
16.04.13
✎
16:08
|
(352) "Мохнач Микола" - эта пять! особенно если вспомнить, что обычно называют "мохнаткой"...
|
|||
355
bananan
16.04.13
✎
16:12
|
(354) До коверкания ника ты еще не дорос?
(353) Сейчас поищу в глобалье... |
|||
356
bananan
16.04.13
✎
16:13
|
+ (355) А как хоть примерно она называется?
|
|||
357
viktor_vv
16.04.13
✎
16:14
|
(355) Долго ж ты будешь глобальник лопатить.
(356) :). Карточку клиента в конфигураторе не судьба посмотреть. |
|||
358
Mikeware
16.04.13
✎
16:14
|
(355) кстати, да... ты предъявил факт коверканья твоего ника? или тебя все-таки наказать за вранье?
|
|||
359
Ёпрст
16.04.13
✎
16:16
|
(351) в выводе.
Адрес и доставку нужно либо в отдельную свёртку (если нужно для каждого товара в отдельности видеть) или в индекс товара воткнуть.. |
|||
360
bananan
16.04.13
✎
16:18
|
(351) Сейчас попробую... хотя не понимаю...
(358) Ты мое имя коверкаешь еще и добавляещь манду свою... |
|||
361
bananan
16.04.13
✎
16:23
|
(359) В таблице написал : лтзТовар.Адрес - таже байда... :(
|
|||
362
Mikeware
16.04.13
✎
16:26
|
(360)это как раз твоя манда - на второй картинке по ссылке из (349). :-)
|
|||
363
bananan
16.04.13
✎
16:26
|
+(361) А как откнуть индекс товара?
|
|||
364
bananan
16.04.13
✎
16:28
|
(362) Ну куда уж мне "мартышке" спорить с виликим и магучим мандераторам...
|
|||
365
Ёпрст
16.04.13
✎
16:33
|
Ё...
в коде воткнешь так: Таб = СоздатьОбъект("Таблица"); Если Детали = 1 Тогда Таб.ИсходнаяТаблица("ИндексТаблица"); Иначе Таб.ИсходнаяТаблица("ТаблицаБез"); КонецЕсли; Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,ТабюВысотаТаблицы()); лтзИнд.Группировать("Агент:*Агент; Клиент:*Клиент; Товар:*Товар; АдресИДоставка:*Адрес,*Доставка","КоличествоВЕд"); лтзИнд.ВыбратьСтроки(); Пока лтзИнд.ПолучитьСтроку() = 1 Цикл ПечАгент = лтзИнд.Агент; ПечКоличество = лтзИнд.КоличествоВЕд; Таб.ВывестиСекцию("Агент"); лтзКлиент = лтзИнд.ТЗПотомки ; лтзКлиент.ВыбратьСтроки(); Пока лтзКлиент.ПолучитьСтроку() = 1 Цикл ПечКлиент = лтзКлиент.Агент; ПечКоличество = лтзКлиент.КоличествоВЕд; Таб.ВывестиСекцию("Клиент"); лтзТовар = лтзКлиент.ТЗПотомки ; лтзТовар.ВыбратьСтроки(); Пока лтзТовар.ПолучитьСтроку() = 1 Цикл ПечТовар = лтзТовар.Товар; ПечКоличество = лтзТовар.КоличествоВЕд; Таб.ВывестиСекцию("Товар"); лтзДоставкаАдрес= лтзТовар.ТЗПотомки ; лтзДоставкаАдрес.ВыбратьСтроки(); Пока лтзДоставкаАдрес.ПолучитьСтроку() = 1 Цикл ПечДоставка = лтзДоставкаАдрес.Доставка; ПечАдрес = лтзДоставкаАдрес.Адрес; ПечКоличество = лтзДоставкаАдрес.КоличествоВЕд; Таб.ВывестиСекцию("ДоставкаАдрес"); КонецЦикла; КонецЦикла ; КонецЦикла; КонецЦикла; Таб.ТолькоПросмотр(1); Таб.Показать("Бананама на"); макет слепишь такой: http://s1.ipicture.ru/uploads/20130416/3LuO68KP.jpg наслаждайся |
|||
366
bananan
16.04.13
✎
16:46
|
(365) Видно я код не так или не туда вставил:
лтзИнд = СоздатьОбъект("ИндексированнаяТаблица"); Запрос.ВыполнитьИнструкцию(ТекстЗапроса,лтзИнд); //ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); //ТбЗн .ВыбратьСтроку(); //Возврат; лтзИнд.Группировать("Агент:Агент*; Клиент:Клиент*; Товар:Товар*","КоличествоВЕд"); лтзИнд.ВыбратьСтроки(); Таб = СоздатьОбъект("Таблица"); Если Детали = 1 Тогда Таб.ИсходнаяТаблица("ИндексТаблица"); Иначе Таб.ИсходнаяТаблица("ТаблицаБез"); КонецЕсли; Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,Таб.ВысотаТаблицы()); выдает: лтзИнд.Группировать("Агент:*Агент; Клиент:*Клиент; Товар:*Товар; АдресИДоставка:*Адрес,*Доставка","КоличествоВЕд"); {\\SERVER12\VPKTEST$\EXTFORMS\ЗАПРОС _КЛИЕНТ+ТОВАР.ERT(166)}: Колонка тзПотомки уже есть! |
|||
367
Ёпрст
16.04.13
✎
16:50
|
ААААААА... ПОМОГИТЕ!!!!!!!!!
|
|||
368
viktor_vv
16.04.13
✎
16:50
|
(366) Ты два раза группируешь.
И таки объясни, что не нравится в выводе адреса. |
|||
369
Ёпрст
16.04.13
✎
16:50
|
:)))
|
|||
370
Ёпрст
16.04.13
✎
16:51
|
Замени свой вывод таблицы на мой.
|
|||
371
Ёпрст
16.04.13
✎
16:51
|
и наслаждайся.. и макет поменяй.
|
|||
372
viktor_vv
16.04.13
✎
16:52
|
(367) Похоже он уже даже самого терпеливого достал :).
|
|||
373
bananan
16.04.13
✎
16:53
|
(368) Гдн я ДВА раза группирую? А не нравится то что на макете скажем в шапке есть надпись, а вот в уже "готовой" таблице этой надписи - НЕТ...
|
|||
374
bananan
16.04.13
✎
16:54
|
(370) Да я вроде так и сделал, привожу полный код:
Запрос.УложитьСписокОбъектов(ВыбТМЦ, "#СписокТМЦ","ТМЦ"); Запрос.УложитьСписокОбъектов(ВыбАгент, "#СписокАгентов","Агент"); Запрос.УложитьСписокОбъектов(ВыбКлиент, "#СписокКлиентов","Клиенты"); Запрос.УстановитьТекстовыйПараметр("НачДата", ДатаС); Запрос.УстановитьТекстовыйПараметр("КонДата", ДатаПо); Запрос.УстановитьТекстовыйПараметр("ВыбЕдиница", ВыбЕд); //Запрос.Отладка(1); лтзИнд = СоздатьОбъект("ИндексированнаяТаблица"); Запрос.ВыполнитьИнструкцию(ТекстЗапроса,лтзИнд); //ТбЗн = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); //ТбЗн .ВыбратьСтроку(); //Возврат; лтзИнд.Группировать("Агент:Агент*; Клиент:Клиент*; Товар:Товар*","КоличествоВЕд"); лтзИнд.ВыбратьСтроки(); Таб = СоздатьОбъект("Таблица"); Если Детали = 1 Тогда Таб.ИсходнаяТаблица("ИндексТаблица"); Иначе Таб.ИсходнаяТаблица("ТаблицаБез"); КонецЕсли; Таб.ВывестиСекцию("Шапка"); Таб.Опции(0,0,Таб.ВысотаТаблицы()); лтзИнд.Группировать("Агент:*Агент; Клиент:*Клиент; Товар:*Товар; АдресИДоставка:*Адрес,*Доставка","КоличествоВЕд"); лтзИнд.ВыбратьСтроки(); Пока лтзИнд.ПолучитьСтроку() = 1 Цикл ПечАгент = лтзИнд.Агент; ПечКоличество = лтзИнд.КоличествоВЕд; Таб.ВывестиСекцию("Агент"); лтзКлиент = лтзИнд.ТЗПотомки ; лтзКлиент.ВыбратьСтроки(); Пока лтзКлиент.ПолучитьСтроку() = 1 Цикл ПечКлиент = лтзКлиент.Агент; ПечКоличество = лтзКлиент.КоличествоВЕд; Таб.ВывестиСекцию("Клиент"); лтзТовар = лтзКлиент.ТЗПотомки ; лтзТовар.ВыбратьСтроки(); Пока лтзТовар.ПолучитьСтроку() = 1 Цикл ПечТовар = лтзТовар.Товар; ПечКоличество = лтзТовар.КоличествоВЕд; Таб.ВывестиСекцию("Товар"); лтзДоставкаАдрес= лтзТовар.ТЗПотомки ; лтзДоставкаАдрес.ВыбратьСтроки(); Пока лтзДоставкаАдрес.ПолучитьСтроку() = 1 Цикл ПечДоставка = лтзДоставкаАдрес.Доставка; ПечАдрес = лтзДоставкаАдрес.Адрес; ПечКоличество = лтзДоставкаАдрес.КоличествоВЕд; Таб.ВывестиСекцию("ДоставкаАдрес"); КонецЦикла; КонецЦикла ; КонецЦикла; КонецЦикла; Таб.ТолькоПросмотр(1); Таб.Показать("Бананама на"); |
|||
375
viktor_vv
16.04.13
✎
16:55
|
(374) Теперь читай по строчкам и считай количество методов Группировать().
|
|||
376
viktor_vv
16.04.13
✎
16:55
|
И оно тебе оказывается нахрен не надо :).
|
|||
377
viktor_vv
16.04.13
✎
16:58
|
Ты просто оба макета смотри, и смотри какой выводишь.
|
|||
378
bananan
16.04.13
✎
16:58
|
(375) Оба - как я не заметил этого раньше? Извеняюсь...
а какой из методов Группировать убрать? Первый? И все? |
|||
379
viktor_vv
16.04.13
✎
16:58
|
Вот эти твои два макета
Если Детали = 1 Тогда Таб.ИсходнаяТаблица("ИндексТаблица"); Иначе Таб.ИсходнаяТаблица("ТаблицаБез"); КонецЕсли; |
|||
380
bananan
16.04.13
✎
16:59
|
(377) Я свой макет уже грохнул, оставил макет Ёпрст; его и вывожу...
|
|||
381
bananan
16.04.13
✎
16:59
|
(379) по умолчанию вывожу первый макет "ИндексТаблица"...
|
|||
382
viktor_vv
16.04.13
✎
17:01
|
(380) Это ты поторопился, но оно конечно ломать, не строить.
|
|||
383
viktor_vv
16.04.13
✎
17:01
|
(381) Меня терзают смутные сомнения :).
|
|||
384
bananan
16.04.13
✎
17:03
|
(383) И зря они тебя терзают.. - все уже нормально! СПАСИБО Ёпрст и viktor_vv!!!!!!!
ну и неспасибо мудератору... |
|||
385
Wobland
16.04.13
✎
17:59
|
(367) Ёпрст, ты прекрасен ;)
|
|||
386
Wobland
16.04.13
✎
18:02
|
(358) у него уже ОЗУ обнулилось, отстань от человека ;)
|
|||
387
bananan
17.04.13
✎
10:49
|
(386) ОЗУ у меня практически никогда не обноляется. Возник такой вопрос цену в документе я беру так:
| , isnull($ДокС.ЦенаСНДС, $ДокН.ЦенаСНДС) ЦенаВДок В таблице поле показываю так: Окр(ТбРазом.ЦенаВДок, 2) Так вот если в даних цена равна 1.0, 2.0 и т.д. то на выводи идет 1, а не 1.0. Что сделать чтобы на экране / принтере было 1.0 а не 0? |
|||
388
Wobland
17.04.13
✎
10:50
|
(387) врёшь ты всё
ОбщаяСумма#Ч15.2 |
|||
389
Wobland
17.04.13
✎
10:51
|
или вот (в конце пробел): Результат.ИтогПродаж#Ч15.2.
|
|||
390
bananan
17.04.13
✎
10:53
|
(388) Что я вру все?
|
|||
391
bananan
17.04.13
✎
10:53
|
+(390) Показать скриншот?
|
|||
392
Wobland
17.04.13
✎
10:54
|
(390) врёшь про длинной время жизни памяти
(391) смотря какой |
|||
393
bananan
17.04.13
✎
11:11
|
(392) Докажи! Не пустословь..
Ешще вопрос вывожу я процент наценки ну или там чего.... процент вычисляется так: (Запрос.СуммаСНДС / Запрос.Количество)/Запрос.Цена_Прих-1)*100 as Проц Так вот часто-густо когда цена в документе меньше от приходний цены процент (который в данной ситуации должен бытьт отрицательным) Положительный, конкретный пример Цена в документе минЦена % 8.00 8.01 19.83 |
|||
394
Wobland
17.04.13
✎
11:14
|
я только напомню о том, что ты часто задаёшь вопросы, на которые уже получал ответы
|
|||
395
bananan
17.04.13
✎
11:15
|
(394) И сейчас я задал вопрос на который цже получал ответ???!
|
|||
396
Wobland
17.04.13
✎
11:16
|
(395) ложь. //ещё и обобщать не умеешь. ну прям как дитё малое
|
|||
397
Ёпрст
17.04.13
✎
11:17
|
мот еще с чем его "складываешь"
|
|||
398
bananan
17.04.13
✎
11:19
|
(397) вот код из запроса, который и возвращает %:
(Запрос.СуммаСНДС / Запрос.Количество)/Запрос.Цена_Прих-1)*100 end as Проц |
|||
399
Wobland
17.04.13
✎
11:20
|
(398) синтаксически неверен или просто неполон
|
|||
400
bananan
17.04.13
✎
11:20
|
(396) А что тебе обобщить? Твои пустые слова? Дак пустота - не обобщается!
|
|||
401
Wobland
17.04.13
✎
11:21
|
"енд" прибавился. опять руки шаловливые?
|
|||
402
viktor_vv
17.04.13
✎
11:21
|
(398) Еще вывод в отчет показывай.
|
|||
403
bananan
17.04.13
✎
11:21
|
(399) Чем он синтаксически не верен или неполон?
|
|||
404
bananan
17.04.13
✎
11:22
|
(402) ТбРазом = СоздатьОбъект("ТаблицаЗначений");
ТбЗн.Выгрузить(ТбРазом); ТбРазом.КоличествоСтрок(ТбРазом.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+ТбЗн3.КоличествоСтрок()); //Сообщить("Строк в ТбЗн="+ТбЗн.КоличествоСтрок()+"Строк в ТбЗн2="+ТбЗн2.КоличествоСтрок()); Если ТбЗн2.КоличествоСтрок()>0 тогда ТбРазом.Заполнить(ТбЗн2, ТбЗн.КоличествоСтрок()+1); КонецЕсли; Если ТбЗн3.КоличествоСтрок()>0 тогда ТбРазом.Заполнить(ТбЗн3, ТбЗн.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+1); КонецЕсли; ТбРазом.ВыбратьСтроку(); ТбРазом.ВыбратьСтроки(); Таб = СоздатьОбъект("Таблица"); Таб.ИсходнаяТаблица("Таблица1"); |
|||
405
bananan
17.04.13
✎
11:22
|
Поле % в таблице:
Окр(ТбРазом.Проц, 2) |
|||
406
Wobland
17.04.13
✎
11:22
|
(403) скобками, ендами
|
|||
407
bananan
17.04.13
✎
11:24
|
(406) Скобки и енд? Сейяас тебе покажу полный вариант:
|, case Данные.Цена_Прих | WHEN 0 then 0 | ELSE ((Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц |
|||
408
viktor_vv
17.04.13
✎
11:24
|
И ты бы (398) уточнил. Или дай кусок пошире, а то может там case имеется.
|
|||
409
chelentano
17.04.13
✎
11:26
|
(387) я так понимаю, что имеется ввиду "никогда не обноВляется"
|
|||
410
Wobland
17.04.13
✎
11:26
|
(407) как дитё, чесслово ;) зачем ты пол-формулы показал сначала?
|
|||
411
bananan
17.04.13
✎
11:26
|
(408) Ок тут идет три отдельных запроса - каждый скидывает в отдельну ТЗ.
Показываю % из второго (из первого (407) запроса: |, case Запрос.Цена_Прих | WHEN 0 then 0 | ELSE ((Запрос.СуммаСНДС / Запрос.Количество)/Запрос.Цена_Прих-1)*100 end as Проц третий: |, case Запрос.Цена_Прих | WHEN 0 then 0 | ELSE ((Запрос.СуммаСНДС / Запрос.Количество)/Запрос.Цена_Прих-1)*100 end as Проц |
|||
412
Wobland
17.04.13
✎
11:27
|
и куда ушёл енд в (393)?
|
|||
413
Ёпрст
17.04.13
✎
11:28
|
(411) а потом все три ТЗ складываешь в одну ?
:)) И процент свой поди тоже ? :) |
|||
414
bananan
17.04.13
✎
11:28
|
(410) А какая разница? Первая половина формулы в кейсе тебе что-то дала?
|
|||
415
bananan
17.04.13
✎
11:28
|
(413) Ну да
|
|||
416
viktor_vv
17.04.13
✎
11:31
|
Какая-то каша.
Вот тут ты похоже неправильно начальную строку даешь, да и дальше. ТбРазом.Заполнить(ТбЗн2, ТбЗн.КоличествоСтрок()+1); |
|||
417
bananan
17.04.13
✎
11:31
|
(413) Там во всех ТЗ разные значения и процент не суммируется же.
Т.е. если в ТЗ1 - 10 строк, в Тз2- 20 то в итоговой ТЗ 30 строк и проценты там не складываются! |
|||
418
viktor_vv
17.04.13
✎
11:32
|
(416) Хотя не, нормально.
|
|||
419
bananan
17.04.13
✎
11:33
|
(416) Почему неправильную? Значений из второй таблицы идут после значени2й из первой - так что значени из второй таблицы начинаются со троки с номером ТбЗн.КоличествоСтрок()+1
|
|||
420
Ёпрст
17.04.13
✎
11:34
|
(417) тогда выводи по-отдельности
Запрос.СуммаСНДС / Запрос.Количество и Запрос.Цена_Прих и потом посмотри, верно ли вычисляется твоя формула. |
|||
421
bananan
17.04.13
✎
11:36
|
(420) Аба поля выводятся то есть именно их я и показал, а формула почемуто неправильно вычисляется...
|
|||
422
Ёпрст
17.04.13
✎
11:48
|
аа.. ну вот так сделай :
ELSE ((1.0*Запрос.СуммаСНДС / Запрос.Количество)/Запрос.Цена_Прих-1)*100 end as Проц |
|||
423
bananan
17.04.13
✎
11:55
|
(422) попробывал вроде ничего не изменилось:
8.00 8.01 19.83 |
|||
424
Ёпрст
17.04.13
✎
11:56
|
везде поменял то хоть ?
Должно работать |
|||
425
bananan
17.04.13
✎
11:57
|
+ И, кстати, я вывожу предварительно ТЗ1 - там все как и оно попадает в таблицу - так что с объединением ТЗ - все нормально работает
|
|||
426
Ёпрст
17.04.13
✎
11:57
|
ну или на так
ELSE ((1.00*Запрос.СуммаСНДС / Запрос.Количество)/Запрос.Цена_Прих-1)*100 end as Проц |
|||
427
bananan
17.04.13
✎
12:02
|
(426)
8.00 8.01 19.83 Что за лажа, блин? |
|||
428
Ёпрст
17.04.13
✎
12:04
|
(427) открой QA
напиши это, посмотри, что возвращает: select (1.00*100/20/8-1)*100 , (100/20/8-1)*100 |
|||
429
Wobland
17.04.13
✎
12:24
|
||||
430
bananan
17.04.13
✎
12:42
|
(428) В конце-концов решил это скорее математически % вычисляю так:
|, case Данные.Цена_Прих | WHEN 0 then 0 | /*ELSE ((Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц*/ | /*ELSE ((1.0*Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц*/ | ELSE (((Данные.СуммаСНДС/Данные.Количество)/ (Данные.Цена_Прих * (1+Данные.Ставка)))-1)*100 end as Проц |
|||
431
Wobland
17.04.13
✎
12:59
|
на всякий случай даю справку. умножение на 1.0 - неявное преобразование int во float
|
|||
432
Ёпрст
17.04.13
✎
13:02
|
дас ис так. иначе 8/10 будет 0 всегда
|
|||
433
bananan
17.04.13
✎
15:17
|
(432) Дас ис так - украиноско-немецое Ес! :)
|
|||
434
Wobland
17.04.13
✎
19:19
|
а дельфисты в принципе понимают разницу между целым и вещественным?
|
|||
435
Wobland
17.04.13
✎
19:53
|
мужик, ты - не программист (доказывать не буду за очевидностью). это не плохо и не хорошо, это так есть. ты зря занимаешь своё место - не твоя профессия. просто поверь, если не можешь осмыслить рационально. и вот этими своими тысячепостовыми несколькомесячными трипами ты уже всех залюбил (возможно, кроме Ёпрста). займись, блин, своим делом, а не этим онанизмом. танцуй, рисуй, пиши, но только не бери в руки клавиатуру.
|
|||
436
bananan
18.04.13
✎
11:30
|
(435) Только после ВАС, СЭР!
Добрый день в запросе у меня |, Запрос.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен] приведение типов есть, а в таблицу выдает какието числа вместо: Категория 1 и т.д. Что может быть? |
|||
437
bananan
18.04.13
✎
11:46
|
+(436) В таблице это поле тоже правильно , Смотрел Таблицу Значений - В таблице значений значение поля ЦенаКатегории - правильное, а в экранную Таблицу почему-то идут числа...
|
|||
438
bananan
18.04.13
✎
11:53
|
+(437) Люди добрые! Помогите, подскажите!!! В чем у меня проблема с выводом на экран?
|
|||
439
bananan
18.04.13
✎
12:12
|
Неужели все на футболе?
я нашел когда он вместо текстового поля Категорияцены вставляет циисла: ТбЗн.Выгрузить(ТбРазом); ТбРазом.КоличествоСтрок(ТбРазом.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+ТбЗн3.КоличествоСтрок()); Если ТбЗн2.КоличествоСтрок()>0 тогда ТбРазом.Заполнить(ТбЗн2, ТбЗн.КоличествоСтрок()+1); Сообщить("2-е"); ТбРазом.ВыбратьСтроку(); КонецЕсли; Если ТбЗн3.КоличествоСтрок()>0 тогда ТбРазом.Заполнить(ТбЗн3, ТбЗн.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()+1); Сообщить("3-е"); ТбРазом.ВыбратьСтроку(); КонецЕсли; ТбРазом.ВыбратьСтроки(); Если посмотреть Таблицу Значений до Сообщить("2-е"); - то там в поле КатегорияЦены - идут правильные данные,а после ТбРазом.Заполнить(ТбЗн2, ТбЗн.КоличествоСтрок()+1); в ТбРазом в поле КатегорияЦены - числа!! Почему?! |
|||
440
bananan
18.04.13
✎
12:54
|
большое спасибо за поддержку и, главное - за попомощь!
|
|||
441
Ёпрст
18.04.13
✎
13:20
|
Объедини 3 запроса в один через юнион и выкини заполнение ТЗ из кода.
|
|||
442
bananan
18.04.13
✎
13:23
|
(441) Я уже понял и увидел что ошибка происходит именно при заполнении /*вернее объединеии трех ТЗ..
А вотк как эти три запроса втыкнут ь в один - не знаю... а блин задача ГОРИТ!! :( |
|||
443
Ёпрст
18.04.13
✎
13:25
|
(442)
пример select a ,b ,c from table1 union all select a ,b ,c from table2 select a ,b ,c from table3 |
|||
444
bananan
18.04.13
✎
13:32
|
(443) Сейчас попробую, с обединением ТЗ уже 4 часа вожусь - ничего толком не получается..
|
|||
445
bananan
18.04.13
✎
13:47
|
А у меня там к каждому из запросов идет:
Если ВыбАгент.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Агент, $ДокШ.Агент) IN (SELECT Val FROM #СписокАгентов)"; КонецЕсли; Если ВыбСклад.РазмерСписка()>0 Тогда ТекстЗапроса = ТекстЗапроса +" and isnull($ДокШН.Склад, $ДокШ.Склад) IN (SELECT Val FROM #СписокСкладов)"; КонецЕсли; Это как надо сделать, Понятно, что один раз Но... А делаю текст Запроса потоп добавляю "выбранных, потом в ТекстЗапроса пишу union all так же с Текстом Запроса№2 так же с Текстом Запроса№3 Да? |
|||
446
bananan
18.04.13
✎
14:03
|
+(445) У меня там в одном из трех запросов Group By, а в других двох его нет... Блин, это теперь надо Group By в два других запроса вставлять?
Абидна.... Бляха муха, почти месяц работы - и теперь коту под хвост... Но, непонятно почему он ТЗ обэединяет с глюком, именно после обэдинений трех ТЗ - вылазят числа вместо строк!!! ЁПрст можешь посмотреть как я сделал Объединение 3 ТЗ в одну ТЗ? Код: ТбРазом = СоздатьОбъект("ТаблицаЗначений"); ТбРазом.КоличествоСтрок(ТбЗн.КоличествоСтрок()); Если ТбЗн.КоличествоСтрок()>0 тогда ТбЗн.Выгрузить(ТбРазом,1,,); ТбРазом.ВыбратьСтроку(); КонецЕсли; Если ТбЗн2.КоличествоСтрок()>0 тогда ТбРазом.КоличествоСтрок(ТбРазом.КоличествоСтрок()+ТбЗн2.КоличествоСтрок()); ТбРазом.Заполнить(ТбЗн2, ТбЗн.КоличествоСтрок()+1,,); ТбРазом.ВыбратьСтроку(); КонецЕсли; Если ТбЗн3.КоличествоСтрок()>0 тогда ТбРазом.КоличествоСтрок(ТбРазом.КоличествоСтрок()+ТбЗн3.КоличествоСтрок()); ТбРазом.Заполнить(ТбЗн3, ТбЗн.КоличествоСтрок()+ТбЗн2.КоличествоСтрок(),,); Сообщить("После послденего"); ТбРазом.ВыбратьСтроку(); КонецЕсли; ТбРазом.ВыбратьСтроки(); |
|||
447
viktor_vv
18.04.13
✎
14:11
|
(446) У тебя там имена колонок перепутаны наверное. Вот у тебя в колонку с категорией цен залетает какое-нибудь поле с числом.
|
|||
448
bananan
18.04.13
✎
14:16
|
(447) Смотрел - вроде там все нормально... А 3 ТаблицыЗначений я сливаю в одну правильно?
|
|||
449
viktor_vv
18.04.13
✎
14:17
|
(447)+ Потому как вот эта твоя фраза очень смущает
"В таблице значений значение поля <<ЦенаКатегории>> - правильное, а в экранную Таблицу почему-то идут числа" А тут ты пишешь |, Запрос.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен] |
|||
450
viktor_vv
18.04.13
✎
14:19
|
Показывай уже все три select'a верхних из своих запросов.
|
|||
451
bananan
18.04.13
✎
14:20
|
(450) Первы:
|SELECT | Данные.IDDoc as [Документ $Документ] |, Данные.IdDocDef as Документ_вид |, Данные.ТМЦ as [ТМЦ $Справочник.ТМЦ] |, Данные.lineno_ as НомерСтроки_ |, Данные.Автор as [Автор $Справочник.Сотрудники] |, Данные.Клиент [Клиент $Справочник.Клиенты] |, Данные.ЦенаВДок |, (Данные.Цена_Прих * (1+Данные.Ставка)) as МинЦена |, (Данные.СуммаСНДС/Данные.Количество) as ЦенаТовара |, 'прихідна' as КатегорияЦены |, Данные.ИдентификаторИсторииЦены |, case Данные.Цена_Прих | WHEN 0 then 0 | /*ELSE ((Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц*/ | /*ELSE ((1.0*Данные.СуммаСНДС / Данные.Количество)/Данные.Цена_Прих-1)*100 end as Проц*/ | ELSE (((Данные.СуммаСНДС/Данные.Количество)/ (Данные.Цена_Прих * (1+Данные.Ставка)))-1)*100 end as Проц |, 'ціна нижча прихідної' Ошибка |
|||
452
bananan
18.04.13
✎
14:21
|
2-й
|SELECT | IDDoc [Документ $Документ] | ,IdDocDef Документ_вид | ,ТМЦ [ТМЦ $Справочник.ТМЦ] | ,lineno_ НомерСтроки_ | ,Автор [Автор $Справочник.Сотрудники] |, Запрос.Клиент [Клиент $Справочник.Клиенты] |, Запрос.ЦенаВДок |, 0 as МинЦена |, ROUND(Запрос.СуммаСНДС/Запрос.Количество, 2) as ЦенаТовара |, Запрос.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен] |, Запрос.ИдентификаторИсторииЦены |, case Запрос.Цена_Прих | WHEN 0 then 0 | ELSE ((Запрос.СуммаСНДС / Запрос.Количество)/Запрос.Цена_Прих-1)*100 end as Проц | , 'Не встановлена ціна' as Ошибка |FROM ( |
|||
453
bananan
18.04.13
✎
14:21
|
3-й
|SELECT | IDDoc [Документ $Документ] | ,IdDocDef Документ_вид | ,ТМЦ [ТМЦ $Справочник.ТМЦ] | ,lineno_ НомерСтроки_ | ,Автор [Автор $Справочник.Сотрудники] |, Запрос.Клиент [Клиент $Справочник.Клиенты] |, Запрос.ЦенаВДок |, ROUND(Запрос.Цена_Прих * (1+Запрос.Ставка),2) as МинЦена |, ROUND(Запрос.СуммаСНДС/Запрос.Количество, 2) as ЦенаТовара |, Запрос.КаналСбыта as КаналСбыта |, Запрос.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен] |, Запрос.ИдентификаторИсторииЦены |, case Запрос.Цена_Прих | WHEN 0 then 0 | ELSE ((Запрос.СуммаСНДС / Запрос.Количество)/Запрос.Цена_Прих-1)*100 end as Проц | ,'ціна нижча допустимої =' | +cast(cast(Запрос.СуммаСНДС / Запрос.Количество as numeric(15,2)) as varchar(255)) | +' мінімальна=' | +cast(cast(Запрос.МинЦена*(1+Запрос.Скидка/100) as numeric(15,2)) as varchar(255)) |FROM ( |
|||
454
bananan
18.04.13
✎
14:21
|
Все - больше запросов НЕТ (сегодня :(
|
|||
455
viktor_vv
18.04.13
✎
14:25
|
Из-за этого
|, 'прихідна' as КатегорияЦены |, Запрос.КатегорияЦены [КатегорияЦены $Перечисление.ТипыЦен] в одной ТЗ у тебя тип значения строка, в другой Перечисление, вот оно и приводится к внутреннему идентификатору перечисления. |
|||
456
viktor_vv
18.04.13
✎
14:26
|
У тебя в твоем пеерчислении ТипыЦен есть элемент "прихідна" ?
|
|||
457
Mikeware
18.04.13
✎
14:27
|
он реально тупой.
|
|||
458
bananan
18.04.13
✎
14:27
|
(455) А Как это исправить? Дело в том что мне в первом запросе надо чтобы он возврашал строку, а во вторых двух : Перечисление ТипыЦен
|
|||
459
Privalov
18.04.13
✎
14:28
|
(457) Всё-таки это большой проект какого-то тролля. Нельзя быть таким тупым и при этом работать.
|
|||
460
viktor_vv
18.04.13
✎
14:29
|
(458) Ну извини.
Разве что создай итоговую таблицу руками, для колонки Категория цен тип не определяй, тогда по идее можно туда впихнуть разные типы. |
|||
461
bananan
18.04.13
✎
14:29
|
(459) А свою желч выливать на нормальных людей можно??!
|
|||
462
viktor_vv
18.04.13
✎
14:30
|
(458)+ А почему такая строгость со строкой, чем тебя там не устроит перечисление, оно легко в строку потом приводится.
|
|||
463
bananan
18.04.13
✎
14:35
|
(462) А как мне в первом запросе выдать что мол ЦенаКатегории - призыдна?
Т.е. как эту строку втиснуть в перечисление в SQL? |
|||
464
viktor_vv
18.04.13
✎
14:35
|
(459) Я думаю троллю быстро надоело столько строчить, и за столько постов таки прокололся бы :).
А тут незавидно постоянство IQ. |
|||
465
viktor_vv
18.04.13
✎
14:37
|
(463) Идентификатор у этого значения перечисления "прiхидна" какой в конфигураторе ?
вместо |, 'прихідна' as КатегорияЦены пишешь |, $Перечисление.ТипыЦен.ИдентификаторТвоегоЗначения as [КатегорияЦены $Перечисление.ТипыЦен] |
|||
466
Ёпрст
18.04.13
✎
14:39
|
(463)
// |, 'прихідна' as КатегорияЦены |, :Парам as КатегорияЦены ......... Запрос.УстановитьТекстовыйПараметр("Парам",Перечисление.нужныйВид.НужноеЗначение); |
|||
467
bananan
18.04.13
✎
14:39
|
(465) Спасибо! Сейчас попробую так...
|
|||
468
Ёпрст
18.04.13
✎
14:39
|
или так
|
|||
469
viktor_vv
18.04.13
✎
14:40
|
(465) Хотя не уверен, может я с SQlite спутал.
Если не получится можешь параметром закинуть в запрос. |
|||
470
bananan
18.04.13
✎
14:40
|
(465) Но делов в том что вПеречислении ТипыЦен нет значения прихыдна...
|
|||
471
viktor_vv
18.04.13
✎
14:42
|
(470) Засада :).
|
|||
472
bananan
18.04.13
✎
14:43
|
(471) И что никак это обойти нельзя?
Добавлять новый пункт в перечисление - НЕЛЬЗЯ.... |
|||
473
viktor_vv
18.04.13
✎
14:44
|
(470) Может там "закупочная" есть ?
|
|||
474
bananan
18.04.13
✎
14:45
|
нету там Только Категори 1.. 9, ну и еще поару Кеш категорий...
|
|||
475
Mikeware
18.04.13
✎
14:45
|
(472) создать временную таблицу, и уложить туда пары {ИдПеречисления, СтроковоеПредставление}
ну и джойнить с ним во втором и третьем... |
|||
476
bananan
18.04.13
✎
14:47
|
А можно не объединять ТЗ в одну а выводить каждую из ТЗ последовательно: вывел ТЗ1, вывел ТЗ2, вывел ТЗ3 и потом уж показал Таблицу на экран?
|
|||
477
Mikeware
18.04.13
✎
14:48
|
твое право. можешь даже на экран не выводить - сразу на печать.
а еще лучше - стирай сразу. |
|||
478
viktor_vv
18.04.13
✎
14:49
|
(475) Меня терзают смутные сомнения :)) насчет понимания ТС написанного тобой :)).
|
|||
479
bananan
18.04.13
✎
14:50
|
(478) Что такое ТС?
|
|||
480
viktor_vv
18.04.13
✎
14:50
|
(476) Если тебе с объединенной таблице больше никаких манипуляций делать не надо, кроме вывода, то вперед.
|
|||
481
bananan
18.04.13
✎
14:51
|
(480) Сейчас попробую так сделать...
|
|||
482
Mikeware
18.04.13
✎
14:55
|
(478) с учетом (479) - посты (456), (459) и (464) засияли новыми красками...
|
|||
483
viktor_vv
18.04.13
✎
14:59
|
(482) Думаешь прокол :)? Мне почему-то кажется, что пока вполне гармонично.
|
|||
484
bananan
18.04.13
✎
15:14
|
Ничего не понимаю взял тупо без цикла скажем по первой ТаблицеЗначений:
Пока(ТбЗн.ПолучитьСтроку()=1) Цикл Документ = ТбЗн.Документ; Если Подр = 1 тогда Если ТбЗн.Документ<>Предыдущий тогда Предыдущий = ТбЗн.Документ; Таб.ВывестиСекцию("ДокументИТовар"); Конецесли; Иначе Если ТбЗн.Документ<>Предыдущий тогда Предыдущий = ТбЗн.Документ; Таб.ВывестиСекцию("Документ"); Конецесли; КонецЕсли; Если Подр = 1 тогда Таб.ВывестиСекцию("ОшибкаТ"); ИНАЧЕ Таб.ВывестиСекцию("Ошибка"); КонецЕсли; КонецЦикла; Пока(ТбЗн2.ПолучитьСтроку()=1) Цикл Ну и дальше - аналогично... А на экран выходит пустая таблица в которой только шапка есть... Или это надо делать не в конце скрипта, а после выполнени каждого из запросов? |
|||
485
bananan
18.04.13
✎
15:18
|
+(484) "Это делать" подразумевается обход Таблицы Значений в цикле...
|
|||
486
bananan
18.04.13
✎
15:21
|
(485) Пробывл выводить ТаблицуЗначений в Таблицу сразу же после формирования ТЗ, - резудльтат тот же - выводится только шапка Таблицы....
:( |
|||
487
vinogradъ
18.04.13
✎
15:22
|
bananan, зачем ты этим занимаешься?
|
|||
488
bananan
18.04.13
✎
15:30
|
(487) Жить за что-то надо...
|
|||
489
bananan
18.04.13
✎
15:32
|
Блин а в цикл обхода первой же ТЗ он не входит почему-то...
|
|||
490
vinogradъ
18.04.13
✎
15:34
|
выбратьстроки
|
|||
491
bananan
18.04.13
✎
15:35
|
(490) Точно! Выбрать строки из каждой ТЗ забыл!
|
|||
492
ЧеловекДуши
18.04.13
✎
15:36
|
(488) Иди в Политики, там смыслу будет больше :)
И жить есть За что, за страну :) |
|||
493
bananan
18.04.13
✎
15:48
|
Блин, ЗАРАБОТАЛО!! Виноградарь - БОЛЬШОЕ СПАСИБО, в этой кутерьме я обо многом забыл напрояь!
|
|||
494
bananan
18.04.13
✎
15:48
|
(492) Прикинь, а у меня и программить получается!
|
|||
495
Джон Вэйн
18.04.13
✎
16:00
|
(494) деточка, ты льстишь себе.. совсем..
|
|||
496
bananan
18.04.13
✎
16:00
|
+ Ребята вопрос на будущее,
Скажем как мне в данном (первом) Запросе создать временную таблицу типа Перечисление и заполнить ее одним значением ? |
|||
497
bananan
18.04.13
✎
16:00
|
(494) Совсем - не совсем - а роезультат на экране!
|
|||
498
viktor_vv
18.04.13
✎
16:02
|
(496) Для одного значения нафик не нужна временная таблица. Или ты имел ввиду одни вид перечисления ?
(497) Ты уж извини, но то что на экране не совсем ты напрограммировал. |
|||
499
bananan
18.04.13
✎
16:05
|
(498) А я и не говорю, что это я сам напрограммировал, - в данных трех запросах 90% помощь вашего форума...!
|
|||
500
Mikeware
18.04.13
✎
16:07
|
(496) ТКВ:Анахуа?
|
|||
501
viktor_vv
18.04.13
✎
16:08
|
(500) Ну типа надо развиваться дальше :).
|
|||
502
bananan
18.04.13
✎
16:09
|
(500) А щоб была Дохуа!
|
|||
503
Mikeware
18.04.13
✎
16:17
|
(502) Тебе советы - как молоко негру. "не поможет".
|
|||
504
bananan
18.04.13
✎
16:51
|
(503) И что же ТЫ советовал???
Сейчас вот вылезло: выдает и много раз (я так понимаю в каждой итерации обхода ТЗ): 1 Поле агрегатного объекта не обнаружено (КатегорияЦены) Поле агрегатного объекта не обнаружено (Автор) Поле агрегатного объекта не обнаружено (Ошибка) Поле агрегатного объекта не обнаружено (КатегорияЦены) Поле агрегатного объекта не обнаружено (Автор) Поле агрегатного объекта не обнаружено (Ошибка) Код именно этого куска такой: ТбЗн.ВыбратьСтроки(); Пока(ТбЗн.ПолучитьСтроку()=1) Цикл Документ = ТбЗн.Документ; Клиент = ТбЗн.Клиент; ТМЦ = ТбЗн.ТМЦ; ЦенаВДок = ТбЗн.ЦенаВДок; МинЦена = ТбЗн.МинЦена; КатегорияЦены = ТбЗн.КатегорияЦены; Проц = ТбЗн.Проц; Автор = ТбЗн.Автор; Ошибка = ТбЗн.Ошибка; Сообщить("1"); Если Подр = 1 тогда Если ТбЗн.Документ<>Предыдущий тогда Предыдущий = ТбЗн.Документ; Таб.ВывестиСекцию("ДокументИТовар"); Конецесли; Иначе Если ТбЗн.Документ<>Предыдущий тогда Предыдущий = ТбЗн.Документ; Таб.ВывестиСекцию("Документ"); Конецесли; КонецЕсли; Если Подр = 1 тогда Таб.ВывестиСекцию("ОшибкаТ"); ИНАЧЕ Таб.ВывестиСекцию("Ошибка"); КонецЕсли; КонецЦикла; |
|||
505
bananan
18.04.13
✎
16:52
|
Все эти поля агрегатного объекта относятся к текущей таблице Значений или к Таблице (та что потом выводится на экран)?
|
|||
506
bananan
18.04.13
✎
16:55
|
Когда в коде по первой ТЗ закоментировал строки с этими полями - все-равно выдает все тоже, и.. по первой ТЗ - так ведь там
оле агрегатного объекта не обнаружено (КатегорияЦены) а потом еще раз оле агрегатного объекта не обнаружено (КатегорияЦены) Почему? |
|||
507
bananan
18.04.13
✎
16:57
|
+ Обявил я в начале процедуры эти пермеменные, но все-равно поле агрегатного объкьа необнаружено!!!
|
|||
508
bananan
18.04.13
✎
16:59
|
+ Хотя .. в неоторых итерация он только Один раз ругается что поле не обнаружено....
В чем глюк? (Просьба о ДНК не писать...) |
|||
509
bananan
18.04.13
✎
17:05
|
Судя по тому что в одних итерациях одно и тоэе поле "ругается" дважды - а в других только ОДИН раз ...
Как мне програмно определить есть ли такое поле у агрегатного объекта: |
|||
510
Ёпрст
18.04.13
✎
17:09
|
Открой тз и посмотри, что в ней.
|
|||
511
Ёпрст
18.04.13
✎
17:09
|
есть ли колонки с такими именами
|
|||
512
bananan
18.04.13
✎
17:10
|
Открывал, смотрел ТАМ есть данные поля (ну и потом на экране они тоже есть и с адекватными значениями)!!!
|
|||
513
bananan
18.04.13
✎
17:10
|
(511) Почему в одной итерации на одно и тоже поле ругается ДВА раза, а в другой - только раз?
|
|||
514
bananan
18.04.13
✎
17:14
|
код:
Пока(ТбЗн.ПолучитьСтроку()=1) Цикл Документ = ТбЗн.Документ; Клиент = ТбЗн.Клиент; ТМЦ = ТбЗн.ТМЦ; ЦенаВДок = ТбЗн.ЦенаВДок; МинЦена = ТбЗн.МинЦена; КатегорияЦены = ТбЗн.КатегорияЦены; Проц = ТбЗн.Проц; Автор = ТбЗн.Автор; Ошибка = ТбЗн.Ошибка; Сообщить("1 !!!"); Возврат; Выдает: 1 !!! Когда заремарил обращение к полям ТбЗн - все равно выдает 1 !!! |
|||
515
bananan
18.04.13
✎
17:15
|
Тоесть в данном случае нет несуществующего поля! В чем тогда проблема??? Чего она, зараза ругается!!!
|
|||
516
bananan
18.04.13
✎
17:17
|
+ когда написал так:
Пока(ТбЗн.ПолучитьСтроку()=1) Цикл //Документ = ТбЗн.Документ; //Клиент = ТбЗн.Клиент; //ТМЦ = ТбЗн.ТМЦ; //ЦенаВДок = ТбЗн.ЦенаВДок; //МинЦена = ТбЗн.МинЦена; //КатегорияЦены = ТбЗн.КатегорияЦены; //Проц = ТбЗн.Проц; //Автор = ТбЗн.Автор; //Ошибка = ТбЗн.Ошибка; // Сообщить("1 !!!"); Если Подр = 1 тогда Если ТбЗн.Документ<>Предыдущий тогда Предыдущий = ТбЗн.Документ; Таб.ВывестиСекцию("ДокументИТовар"); Возврат; Конецесли; Иначе Если ТбЗн.Документ<>Предыдущий тогда Предыдущий = ТбЗн.Документ; Таб.ВывестиСекцию("Документ"); Конецесли; КонецЕсли; Возврат; выдает: 1 !!! 1 !!! 1 !!! Поле агрегатного объекта не обнаружено (КатегорияЦены) Поле агрегатного объекта не обнаружено (Автор) Поле агрегатного объекта не обнаружено (Ошибка) Все 6 строк показал. В чем фиигня?? |
|||
517
bananan
18.04.13
✎
17:22
|
Ларчик просто открывался у меня у всех этих полей в таблице была Расшифровка ТбРазом....
|
|||
518
Wobland
18.04.13
✎
18:21
|
пля, я тоже был таким идиотом. через пару месяцев прошло. с восьмёркой буксовал, правда, с полгода. с УФ тоже пару месяцев. теперь обратно буксую с семёркой зачастую. вывод: максимум - полгода
|
|||
519
bananan
18.04.13
✎
18:23
|
еще один вопрос, он давно просто сейчас вспомнил вывожу я секции, кажадя секция имеет горизонтальную рамку с лева скажем
так вот, есть часто-густо удет секция с левой рамкой, а потом пустая (без ничего) строка небольшой высоты, потом секция опять таже (это в цикле). Почему возникают зазоры межде секциями при итерациях и как этого избежать? |
|||
520
bananan
18.04.13
✎
18:24
|
(518) А вот попробуй не забуксуй когда запрос "горит" а на форуме тебе всякие пля советуют!
|
|||
521
Wobland
18.04.13
✎
18:28
|
(520) есть конкретный момент, буксую. не ною на мисте, а разбираю вопрос/запрос на мелкие задачи, дроблю, делю, упрощаю, снимаю группировки, чтоб найти конкретного п...са (документ) с нетрадиционными движениями
|
|||
522
Wobland
18.04.13
✎
18:28
|
+(521) а горит
|
|||
523
Wobland
18.04.13
✎
18:31
|
||||
524
Wobland
18.04.13
✎
18:55
|
а нашёл я конкретного п..са в частном случае. человек приходит в магазин и выражает желание приобрести одну штуку шпательной лопатки. в регистре продажи делается две записи:
количество -1, продстоимость 0 количество 2, продстоимость 49.90 а в запросе получаю ПродСтоимость 0 | sum(ISNULL(Продажи.ПродСтоимость, 0)) as ПродажиПродСтоимость, ... | LEFT JOIN | (SELECT | $регПродажи.Номенклатура AS Номенклатура, | SUM($регПродажи.Количество) AS Количество, | SUM($регПродажи.ПродСтоимость) AS ПродСтоимость, | SUM($регПродажи.ПродСтоимостьВ) AS ПродСтоимостьВ, | SUM($регПродажи.ПродСтоимость)/SUM(CASE WHEN $регПродажи.Количество=0 THEN 1 ELSE $регПродажи.Количество END) AS ЦенаПродажи | FROM | $Регистр.Продажи AS регПродажи | WHERE | регПродажи.IDDoc=:Источник | GROUP BY | $регПродажи.Номенклатура) AS Продажи завтра поговорим, если не найду баг, буду спрашивать у мисты |
|||
525
Wobland
18.04.13
✎
19:00
|
(524) описался
Номенклатура: тот_шпатель, количество -1, продстоимость 49.90; шпатель; количество 2; продстоимость 0 почему Сумма(исНулл(ПродСтоимость, 0)) говорит, что 0? |
|||
526
Wobland
18.04.13
✎
19:02
|
ну и так.. в качестве воспитывания ТС
| SUM(ISNULL(Продажи.ЦенаПродажи, 0)*(CASE WHEN ISNULL(ПартииО.Количество, 0)=0 THEN ОтчётыККМ.Количество ELSE ПартииО.Количество END)) | -SUM(ISNULL(ПродажиВ.ЦенаПродажи, 0)*ISNULL(ПартииВ.Количество, 0)) AS ИтогПродаж, из этого я раздробил и вывел нулевую сумму в регистре продаж |
|||
527
bananan
18.04.13
✎
19:04
|
Воблан - у тебя, как всегда пустые слова. а вопросы что я задавл перед твоим ..сом, я уже решил сам. Без тебя о, виликай и мандучий админь! :)
|
|||
528
Wobland
18.04.13
✎
19:05
|
(527) ты не обзывайся, админстовать я бросил лет 6 назад
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |