|
Выбор документов с заданными товарами 🠗 (длинная ветка 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? |
|||
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 назад
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |