|
v7: Запросы и построительи ДБФ и Скул | ☑ | ||
---|---|---|---|---|
0
Slaventiya
06.04.12
✎
22:58
|
Столкнулся с вот таким запросом в отчете под ДБФ вариантом
ЗапросОборот = СоздатьОбъект("Запрос"); ТекстЗапросаОборот =" |Период с ДатаНачало по ДатаКонец; |ОбрабатыватьДокументы Проведенные; |Товар = Документ.РасходнаяРозничная.Товар, Документ.РасходнаяНакладнаяТ.Товар, Документ.РасходнаяНакладнаяВозвратТ.Товар; |Док = Документ.РасходнаяРозничная.ТекущийДокумент, Документ.РасходнаяНакладнаяТ.ТекущийДокумент, Документ.РасходнаяНакладнаяВозвратТ.ТекущийДокумент; |Контрагент = Документ.РасходнаяРозничная.Клиент, Документ.РасходнаяНакладнаяТ.Клиент, Документ.РасходнаяНакладнаяВозвратТ.Клиент; |Менеджер = Документ.РасходнаяРозничная.Менеджер, Документ.РасходнаяНакладнаяТ.Менеджер, Документ.РасходнаяНакладнаяВозвратТ.Менеджер; |Кол = Документ.РасходнаяРозничная.Количество, Документ.РасходнаяНакладнаяТ.Количество, Документ.РасходнаяНакладнаяВозвратТ.Количество; |Коэф = Документ.РасходнаяРозничная.Коэффициент, Документ.РасходнаяНакладнаяТ.Коэффициент, Документ.РасходнаяНакладнаяВозвратТ.Коэффициент; |Сумма = Документ.РасходнаяРозничная.СуммаБезНалогов, Документ.РасходнаяНакладнаяТ.Сумма, Документ.РасходнаяНакладнаяВозвратТ.Сумма; |НДС = Документ.РасходнаяРозничная.НДСпоСтроке, Документ.РасходнаяНакладнаяТ.НДСпоСтроке, Документ.РасходнаяНакладнаяВозвратТ.НДС; |Нал = Документ.РасходнаяРозничная.Нал, Документ.РасходнаяНакладнаяТ.Нал, Документ.РасходнаяНакладнаяВозвратТ.Нал; |НП = Документ.РасходнаяРозничная.НППоСтроке, Документ.РасходнаяНакладнаяВозвратТ.СуммаНП; |Режим = Документ.РасходнаяРозничная.РежимРезерв; |Функция РасходКол = РасходКол) Когда (Док.Вид() <> ""РасходнаяНакладнаяВозвратТ""); |Функция Расход = Расход(Сумма) Когда (Док.Вид() <> ""РасходнаяНакладнаяВозвратТ""); |Функция РасходКолВз = Расход(Кол) Когда (Док.Вид() = ""РасходнаяНакладнаяВозвратТ""); |Функция РасходВз = Расход(Сумма) Когда (Док.Вид() = ""РасходнаяНакладнаяВозвратТ""); |Функция СуммаНПВз = Расход(НП) Когда (Док.Вид() = ""РасходнаяНакладнаяВозвратТ""); |Функция СуммаНП = Расход(НП) Когда (Док.Вид() <> ""РасходнаяНакладнаяВозвратТ""); |Функция СуммаНДСВз = Расход(НДС) Когда (Док.Вид() = ""РасходнаяНакладнаяВозвратТ""); |Функция СуммаНДС = Расход(НДС) Когда (Док.Вид() <> ""РасходнаяНакладнаяВозвратТ""); |Функция СумНал = Сумма(Нал); |Условие (Товар в ВыбТовары); |Условие (Контрагент в ВыбКлиент); |Условие (Менеджер в ВыбМен); |Условие (Режим = РежПровед); |Группировка Контрагент без групп; |Группировка Док упорядочить по Док.ДатаДок, Док.ВремяДок; |Группировка Товар без групп; |"; Он работает, в скуле сие в функции возращает 0 без исправления Расход на Сумма, интересует почему.... |
|||
1
Damash
06.04.12
✎
23:03
|
Функция РасходКол = РасходКол)
пропущена "(" - это опечатка? |
|||
2
Slaventiya
06.04.12
✎
23:05
|
(1) Опечатка
|
|||
3
andrewks
06.04.12
✎
23:06
|
а какой может быть Расход в накладных?
|
|||
4
Slaventiya
06.04.12
✎
23:09
|
Суть в том что...
Расход (Credit) - расход значений параметра-ресурса Регистра; - Взято из СП |
|||
5
Slaventiya
06.04.12
✎
23:11
|
(3) Вот и мне интересно как
|
|||
6
andrewks
06.04.12
✎
23:18
|
(5) тебя удивляет, что кривой запрос в кривой программе криво отработал? забей ужо, иди пить пиво, шаббат на дворе
|
|||
7
Slaventiya
06.04.12
✎
23:22
|
(6) ))) А как же акжем. интерес... но ведь бред жаш
|
|||
8
Инквизитор
06.04.12
✎
23:24
|
Запрос.ВключитьSQL(1) не пробовали?
|
|||
9
andrewks
06.04.12
✎
23:25
|
угу, и Запрос.ВключитьБаги(0)
|
|||
10
Slaventiya
06.04.12
✎
23:25
|
(8) Нет
|
|||
11
Slaventiya
06.04.12
✎
23:30
|
ИНтересно было бы услышать мнение господина Ёпрст3 по этому поводу
|
|||
12
andrewks
06.04.12
✎
23:36
|
(11) а что ты хочешь от него услышать?
"Замечание: Типы функций НачОст, КонОст, Приход, Расход можно использовать только с параметрами, указывающими на ресурсы регистров остатков. Для ресурсов регистров остатков другие типы функций вызывать нельзя." |
|||
13
Slaventiya
06.04.12
✎
23:40
|
(12)Я уже писал об этом... но сам проверил... работает сволочь
|
|||
14
andrewks
06.04.12
✎
23:41
|
(13) и что? Форма.ОбработкаОжидания() тоже работает. предлагаешь застрелиться?
|
|||
15
Slaventiya
06.04.12
✎
23:44
|
(14) Ничего я не предлогают, отстань (ничего личного), мне имнтересно почему
|
|||
16
AlexNew
06.04.12
✎
23:56
|
(15) По секрету, это для регистров, в терминологии 8 - виртуальных таблиц.
|
|||
17
Slaventiya
07.04.12
✎
00:06
|
(15) Адуреть ) Секрет ))) Рад, а то что тема про 7, это наверное так...
|
|||
18
AlexNew
07.04.12
✎
00:11
|
(17) Что такое план запроса наверно знаете? Я про это говорил..
|
|||
19
viktor_vv
07.04.12
✎
00:14
|
(16) и (18) Ты кажись путаешь теплое с мягким. И такое ощущение, что ты вообще не понимаешь о чем говоришь.
|
|||
20
Slaventiya
07.04.12
✎
00:17
|
Вот блин... Спросил на свою голову, причем вразумительного ответа я пока не увидел
|
|||
21
AlexNew
07.04.12
✎
00:22
|
(19) Правда? Как это выглядеть будет, функции оставим, возьмем только "," в начале.
|
|||
22
AlexNew
07.04.12
✎
00:26
|
(19) Можно проще, пример что значит это запрос в SQL или как бы он в 8 выглядел?
|
|||
23
Slaventiya
07.04.12
✎
00:29
|
(20) Ты прокоментировать тему можешь или нет ? Мы не про 8 говорим, а про 7 запролс... причем выполяемый в скуле и дбф варианте...
А читать лекции на тему 8 это к Чистову... |
|||
24
Slaventiya
07.04.12
✎
00:31
|
(23) в (22)
|
|||
25
viktor_vv
07.04.12
✎
00:35
|
(22) Виртуальные таблицы-то причем здесь? Сходсто только в том (и то очень отдаленное), что и этот запрос и виртуальная таблица развернется в более сложный запрос к БД.
А вот план запроса вообще не в тему, потому как это понятие уже уровня СУБД. |
|||
26
viktor_vv
07.04.12
✎
00:36
|
(25)+ Причем прочитав (16) у меня сложилось впечатление, что ты ставишь знак равенства между регистром и виртуальной таблицей для регистра.
|
|||
27
AlexNew
07.04.12
✎
00:37
|
(25) Домой.
(0) Не пойму как они не 0 возвращают??? |
|||
28
Slaventiya
07.04.12
✎
00:39
|
(27) Понимали бы не спрашивали и не обсуждали
|
|||
29
AlexNew
07.04.12
✎
00:42
|
(28) Чем тебе сумма не нравится? Это интерпретатор, объяснять долго.
|
|||
30
Slaventiya
07.04.12
✎
00:44
|
(29) Ты читал тему ? СУММА я поставил, чтобы в скуле работало... до этого было РАСХОД, а запрос к документу обращается....
|
|||
31
AlexNew
07.04.12
✎
00:47
|
(30) Меня опять обмануть пытаются...
|
|||
32
Slaventiya
07.04.12
✎
00:49
|
(31) Ой ли ? Зачем ?
|
|||
33
AlexNew
07.04.12
✎
00:55
|
(32) Сам не понял, но смотреть, извини,не буду.
|
|||
34
Slaventiya
07.04.12
✎
00:59
|
(33) Ладно... нада спать.. а то пятницой и работой перегруженный мозг бунтует )
|
|||
35
viktor_vv
07.04.12
✎
01:07
|
Ну чего мучаться, запусти его в скуле, в профайлере посомтри что уходит на сервер.
Вот для документов с функцией расход: 'select max(SC126.DESCR), max(SC126.PARENTID),DH1157.SP2641,0, min(DT1157.SP1178 ) from _1SJOURN(NOLOCK) join DH1157(NOLOCK) on _1SJOURN.IDDOC=DH1157.IDDOC left outer join SC126(NOLOCK) on DH1157.SP2641=SC126.ID left outer join DT1157(NOLOCK) on _1SJOURN.IDDOC=DT1157.IDDOC where _1SJOURN.IDDOCDEF = 1157 and _1SJOURN.DATE_TIME_IDDOC >= ''20111001 0 0 '' and _1SJOURN.DATE_TIME_IDDOC <= ''20111027FHML6O 0 '' and _1SJOURN.CLOSED&1 = 1 Вот там где в select'e 0 стоит это и есть то, во что функция расход превратилась. А вот для регистра с функцией расход. select max(SC124.DESCR), max(SC124.PARENTID),RA1051.SP1052,sum(case when DEBKRED = 1 then RA1051.SP1055 else 0 end), min(RA1051.SP1055 ) from _1SJOURN(NOLOCK) left outer join RA1051(NOLOCK) on _1SJOURN.IDDOC=RA1051.IDDOC left outer join SC124(NOLOCK) on RA1051.SP1052=SC124.ID where _1SJOURN.RF1051 = 1 and _1SJOURN.DATE_TIME_IDDOC >= ''20111001 0 0 '' and _1SJOURN.DATE_TIME_IDDOC < ''20111028 0 0 '' and _1SJOURN.CLOSED&1 = 1 group by RA1051.SP1052 ' Здесь уже расход стал case when DEBKRED = 1 then RA1051.SP1055 else 0 end Во что там в ДБФ это все транслируется я не знаю. |
|||
36
Slaventiya
07.04.12
✎
01:19
|
По хорошему запрос при исполнении вообще ругнуться должен был имхо, ввиду неправильного обращения к функции по регистру по при переменной по документам, но возможн о- при таком исполнении
Кол = Докумен..., Докуент..., Документ... не ругается... |
|||
37
AlexNew
07.04.12
✎
01:29
|
(0) Не надо с функцией в методических указаниях есть, что обращаться к данным регистра, теперь ТИИ и - вперед, А то дальше полезет.
|
|||
38
Slaventiya
07.04.12
✎
01:32
|
(37) Расшифруй )
|
|||
39
viktor_vv
07.04.12
✎
01:34
|
(37) Ну ТИИ-то тут при чем ? Что полезет ?
Причем здесь косяк с трансляцией текста запроса к корректоности данных в таблицах ? |
|||
40
Slaventiya
07.04.12
✎
01:35
|
(37) (39) Извените ха глупый вопрос, что есть ТИИ ?
|
|||
41
viktor_vv
07.04.12
✎
01:37
|
(40) Тестирование И Исправление .
|
|||
42
Slaventiya
07.04.12
✎
01:40
|
(41) Спсб, Да уж, причем тут ТИИ вообще не ясно, бред, учитывая что Запрос это чтение ....
Без обид (37) А вы батенька похоже изрядно поднабрались, завязывайте чуш молоть |
|||
43
AlexNew
07.04.12
✎
01:42
|
(42) а и Shrink не лечит.
|
|||
44
viktor_vv
07.04.12
✎
01:50
|
(43) Забыл еще выгрузить и загрузить предложить.
(42) Если есть желание разбираться, для (35) тексты запросов 1С. Для первого ТекстЗапроса = " |Период с фдДатаНач по фдДатаКон ; |Менеджер = Документ.РасходнаяНакладная.Менеджер ; |СуммаПрод = Документ.РасходнаяНакладная.СуммаСНДС ; |Группировка Менеджер без групп ; |Функция СуммаПродОборот = Расход(СуммаПрод) ; |"; Для второго ТекстЗапроса = " |Период с фдДатаНач по фдДатаКон ; |Склад = Регистр.Остатки.Склад ; |Кол = Регистр.Остатки.Кво ; |Группировка Склад без групп ; |Функция КолРасход = Расход(Кол) ; |"; |
|||
45
Slaventiya
07.04.12
✎
01:53
|
Во блин поговорили... Аж 2 часа уже почти ни о чем, похоже это действительно проблема трансляции, причем характерного исключительно в ДБФ варианте, а ля документ делает движения в регистре, значит будем разрешать пользоваться функцией регистра для обращения к документу делающего движение в регистры.
|
|||
46
AlexNew
07.04.12
✎
01:56
|
(44) Ты - адназначна - маладец!
(45) Читай из регистра, или спроси тех, пачиму ТИИ. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |