|
v7: Черный запрос на нулевые остатки | ☑ | ||
---|---|---|---|---|
0
Злопчинский
18.12.13
✎
16:25
|
дано: ТиС, Спр.номенклатура, реквизит "Активен", число
требуется: получить запросом список всех позиций номенклатуры, по которым остаток (Регистр.ОстаткиТМЦ по конкретному складу) = 0 и Активен=2. . не получается..? можно ли..? |
|||
63
Ёпрст
18.12.13
✎
17:20
|
мот ты не тот запрос смотришь ?
:) |
|||
64
КонецЦикла
18.12.13
✎
17:20
|
(57) Так ему ж действительно нужны нулевые остатки, а ты к регистру запрос делаешь
|
|||
65
Злопчинский
18.12.13
✎
17:20
|
Исходный запрос
. ТекстЗапроса = " |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; |Склад = Регистр.ОстаткиТМЦ.Склад; |Количество = Регистр.ОстаткиТМЦ.Количество; |Активен = Регистр.ОстаткиТМЦ.Номенклатура.wms_Активен; |Функция КоличествоКонОст = КонОст(Количество); |Группировка Номенклатура Без Групп; |Условие(Активен = 2); |Условие(Склад в ВыбСклад); |"; Дает Ненулевые остатки. . надо получить нулевые |
|||
66
Diter
18.12.13
✎
17:21
|
я так правил один отчет а проверял другой как то.. было дело.
|
|||
67
Ёпрст
18.12.13
✎
17:21
|
(62) та не, там же в группировке ВСЕ указано..должен быть весь справочник..
|
|||
68
Diter
18.12.13
✎
17:21
|
(65) теперь второй запрос по справочнику с невхождением номенклатуры в результаты первого ;)
|
|||
69
NS
18.12.13
✎
17:22
|
(67) ВСЕ - это весь регистр, вся таблица остатков. У тебя в запросе нет справочника.
|
|||
70
Ёпрст
18.12.13
✎
17:22
|
(65) блин, по активен фильтр есть в этом запросе ????
Если есть, отфильтруешь по количеству на выходе и привет.. |
|||
71
NS
18.12.13
✎
17:22
|
Чтоб появился справочник, его через запятую нужно добавить в переменную запроса.
|
|||
72
NS
18.12.13
✎
17:24
|
Вообще, по остатку можно легко отфильтровав выгрузив в ТЗ (две сортировки), либо просто в процессе перебора.
|
|||
73
Diter
18.12.13
✎
17:25
|
(69( нет все это все которые есть в справочнике
|
|||
74
Злопчинский
18.12.13
✎
17:25
|
Вариант со "Все"
. ТекстЗапроса = " |Номенклатура = Регистр.ОстаткиТМЦ.Номенклатура; |Склад = Регистр.ОстаткиТМЦ.Склад; |Количество = Регистр.ОстаткиТМЦ.Количество; |Активен = Регистр.ОстаткиТМЦ.Номенклатура.wms_Активен; |Функция КоличествоКонОст = КонОст(Количество); |Группировка Номенклатура Без Групп Все; |Условие(Активен = 2); |Условие(Склад в ВыбСклад); |"; . дает лабуду, попадают записи не удовлетворяющие условию Активен=2 |
|||
75
NS
18.12.13
✎
17:26
|
(73) В запросе нет справочника! Или 1С уже искусственным разумом обзавелась?
|
|||
76
Ёпрст
18.12.13
✎
17:26
|
(69) ошибаешься
|
|||
77
Ёпрст
18.12.13
✎
17:27
|
(75) :))
всё то ты позабывать начал. давно бы слепил тест на демке торговли.. |
|||
78
Diter
18.12.13
✎
17:27
|
(73) а номенклатура это не элемент справочника? ты стал забывать 7.7
|
|||
79
Ёпрст
18.12.13
✎
17:28
|
(74) одна из черепашек врёт
..блин Чебур, из-за тебя придётся пофигуратор открыть |
|||
80
NS
18.12.13
✎
17:28
|
(78) Никогда в таком контексте оно не отрабатывало. Во всяком случае я ни разу не видел.
|
|||
81
Diter
18.12.13
✎
17:28
|
(80) всегда.
|
|||
82
Злопчинский
18.12.13
✎
17:28
|
ну так может кто из спецов (мнящих себя таковым) подцепиться по тиму вживую глянуть?
. а то пока ни один вариант не работает |
|||
83
Diter
18.12.13
✎
17:29
|
отчет остатки товаров режим "все товары" в нашей типовой
|
|||
84
NS
18.12.13
✎
17:29
|
Почитал доку - по доке действительно да. Вообщем хз :)
Но с условием, противоречащие условию - ну никак попадать не должны. |
|||
85
Diter
18.12.13
✎
17:29
|
(82) два запроса или при обходе или вы ТЗ сортировкой. тоже не работают?
|
|||
86
Злопчинский
18.12.13
✎
17:29
|
(79) ну так цепляйся по тиму, блин вживую ко мне.
|
|||
87
Злопчинский
18.12.13
✎
17:30
|
(85) да давно уже сделал.
. фишка-то - хочется одним запросом |
|||
88
Злопчинский
18.12.13
✎
17:31
|
идея у мну какая была -
1. номенклатуру определить как регистр+справочник 2. активен определить как регистр+справочник 2. врубить "все" 3. отфильтровать Запрос.КоличествоКоност=0 . а нифига не выходит |
|||
89
Злопчинский
18.12.13
✎
17:32
|
ну, пока Епрст майстрячит у себя в пофигураторе - я отвлекусь минут на 10...
|
|||
90
Diter
18.12.13
✎
17:32
|
Запрос.КоличествоКоност=0 действительно не всегда срабатывает.
|
|||
91
NS
18.12.13
✎
17:33
|
(25) У тебя переменной модуля или формы "Активен" случайно нет?
|
|||
92
Diter
18.12.13
✎
17:34
|
мля.... я пока мониторил ветку вместо того чтобы на флешку записать новую версию md клиента сделал наоборот и на компе затер те изменения что сегодня вносил.... твою....
|
|||
93
Злопчинский
18.12.13
✎
17:38
|
(91) нет
|
|||
94
Злопчинский
18.12.13
✎
17:39
|
(92) это на тебе карма отыгралась, что ты мен ягнобил как фикся... так что следующий раз будь пердельно бздителен
|
|||
95
Ёпрст
18.12.13
✎
17:40
|
Действительно, ВСЕ ..убивает все фильтры к едрени фени :)
|
|||
96
Ёпрст
18.12.13
✎
17:41
|
Ну делай 2-мя запросами.. куле
:) |
|||
97
Ёпрст
18.12.13
✎
17:41
|
не выёживайся..
или прямым запросом |
|||
98
Diter
18.12.13
✎
17:44
|
(94) ;)~
копия осталась в newstru ;) |
|||
99
Ёпрст
18.12.13
✎
17:46
|
Так Пробуй, по заветам Гука
ТекстЗапроса = " |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент,Регистр.ОстаткиТМЦ.Номенклатура; |Склад = Регистр.ОстаткиТМЦ.Склад; |Активен= Справочник.Номенклатура.Активен,Регистр.ОстаткиТМЦ.Номенклатура.Активен; |Количество = Регистр.ОстаткиТМЦ.Количество; |Функция КоличествоКонОст = КонОст(Количество); |Группировка Номенклатура Без Групп Все ВошедшиеВЗапрос; |Условие Активен =2; вроде работает |
|||
100
Злопчинский
18.12.13
✎
17:47
|
(98) это потому что я просто добрый и не мстительный
|
|||
101
Злопчинский
18.12.13
✎
17:48
|
(96) ну, блин, так не интересно, так я давно сделал уже
|
|||
102
Ёпрст
18.12.13
✎
17:48
|
Хотя не, не работает
.. кажет только, если номенклатурка участвовала в расчете регистра.. |
|||
103
Злопчинский
18.12.13
✎
17:50
|
а Если фильтр сделать самопальной функцией..?
|
|||
104
Ёпрст
18.12.13
✎
17:52
|
А ёпта.. всомнил я, как обходить это г.. делал же когда-то, обход регистров с нулевыми ресурсами..от жешь склероз.. на вот, наслаждайся:
ТекстЗапроса = " |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент,Регистр.ОстаткиТМЦ.Номенклатура; |Склад = Регистр.ОстаткиТМЦ.Склад; |Активен= Справочник.Номенклатура.Активен,Регистр.ОстаткиТМЦ.Номенклатура.Активен; |Количество = Регистр.ОстаткиТМЦ.Количество; |Функция КоличествоКонОст = КонОст(Количество); |Функция Вася = Сумма(1); |Группировка Номенклатура Без Групп ; |Условие Активен =2; |
|||
105
Злопчинский
18.12.13
✎
17:58
|
(104) и впихнуть условие на отсев ненулевых остатков?
|
|||
106
Ёпрст
18.12.13
✎
18:00
|
(105) это врят ли..
|
|||
107
Ёпрст
18.12.13
✎
18:01
|
можно сделать через ж..у во внешней функции, но это уже запрос в запросе будет..
|
|||
108
Ёпрст
18.12.13
✎
18:01
|
:)
|
|||
109
Ёпрст
18.12.13
✎
18:01
|
смысла нет, проще уж выгрузить итоги тогда, вс1ё быстрее
|
|||
110
Злопчинский
18.12.13
✎
18:02
|
(106) а нахрена ненулевые остатки? их бы сразу в запросе исключить...
|
|||
111
Злопчинский
18.12.13
✎
18:03
|
(109) ну и что в итогах тогда будет - остатки, потом по номенклатуре бежать и фильтровать..?
|
|||
112
Ёпрст
18.12.13
✎
18:03
|
(111) ага, только так..
Тебе же группы не нужны, отфильтруешь быстро |
|||
113
Злопчинский
18.12.13
✎
18:05
|
(112) if проверю товй вариант.
. самое интересное, что пожожую фичу мы уже обсуждали какую-то родственную, и я втой ветке был... а уже и не помнишь всего |
|||
114
Злопчинский
18.12.13
✎
18:14
|
Проверил (104)
. нулевые сотатки выдаются, но выдаются и ненулевые остатки. От ненулевых избавиться внутри запроса не получается... бяка.. |
|||
115
Злопчинский
18.12.13
✎
18:17
|
С выгрузкой итогов - тоже не сильно кузяво.
Выгрузив итоги - надо ТЗ свернуть по номенклатуре и количеству. В результате свертки может получиться нулевое количество. это значит надо ТЗ дополнительно фильтровать. |
|||
116
Злопчинский
18.12.13
✎
18:24
|
Впрочем и запрос такую же хрень даст, так что все равно даже результат запроса надо фильтровать...
|
|||
117
Ёпрст
19.12.13
✎
08:39
|
(115) в выгрузитьИтоги ТЗ всегда свёрнута.
|
|||
118
Ёпрст
19.12.13
✎
08:40
|
(114) ну и че ? на выходе отфильтруешь..
Можно и..во внешней функции фильтровать, но это будет.. "запрос в запросе." |
|||
119
Ёпрст
19.12.13
✎
08:41
|
А на ТА.. попробуйц воткнуть через Запрос.КонОст..там должно верно казать (надо проверить)
|
|||
120
Злопчинский
19.12.13
✎
13:23
|
(119) поздно. перепилил уже на выгрузку итогов и запрос к справочнику.
. Резюме - спецов вагон, а никто ничего не знает... |
|||
121
Ёпрст
19.12.13
✎
13:24
|
ой-ой-ой
|
|||
122
Ёпрст
19.12.13
✎
13:25
|
никто не пишет чорные запросы давно просто.
|
|||
123
Diter
19.12.13
✎
13:28
|
(120) ну здрасьте..... тут мозговой штурм был а ты так... ладно запишем в свою маленькую книжечку "бяки на форуме" ;)
|
|||
124
Diter
19.12.13
✎
13:29
|
(122) я пишу. они мне больше чем бухзапросы нравятся. правда в последнее время все больше на 1с++ но они там тоже черные
|
|||
125
Злопчинский
19.12.13
✎
13:41
|
(122) пишут, но простые ;-)
я в прямых запросах слаб, но блин когда текст вижу - хоть понимаю о чем там. когда блин в чорном запросе переменная как и регистр и справочник, количество - из регистра, КонСот - к количеству - у меян мозг наичнет ломаться... ;-) |
|||
126
Злопчинский
19.12.13
✎
13:41
|
(123) какой на мозговой штурм. так ничего и не выпилилось
|
|||
127
Ёпрст
19.12.13
✎
13:43
|
(126) прям таки и ничего ?
Я те дал рабочий код, на выходе нужно было убрать только ненулевые останки и привет, или, проверить его с функцией Запрос.КонОст<>0 |
|||
128
Ёпрст
19.12.13
✎
13:44
|
Проверил (раз запрос на ТА, должен был корректно вернуть)
|
|||
129
Ёпрст
19.12.13
✎
13:44
|
?
|
|||
130
selenat
19.12.13
✎
13:52
|
(125) вот именно. Сам механизм запросов в 7 изначально кривой и непредсказуемый. Может ну их нафиг такие запросы? :)
|
|||
131
Diter
19.12.13
✎
14:18
|
(128) а я что говорил? но меня вчера закидали тапками. при некоторых условия (дата запроса и число группировок) условие на функцию в теле запроса отрабатывает корректно
|
|||
132
Ёпрст
19.12.13
✎
14:20
|
(131) это вопрос.. чебуру, чтоб он проверил
:)) |
|||
133
NS
19.12.13
✎
14:35
|
(131) И меня тоже. Требую сатисфакции! :)
|
|||
134
Diter
19.12.13
✎
14:41
|
(133) тебя правильно закидали. ты про "все" тупил ;)
|
|||
135
Злопчинский
19.12.13
✎
14:45
|
(132) ща проверю.
|
|||
136
Diter
19.12.13
✎
14:46
|
(135) группировка только одна, без фильтра по "Активность" с "все"
|
|||
137
NS
19.12.13
✎
14:47
|
(134) то есть "все" работает? Или все-таки нет? :)
|
|||
138
Diter
19.12.13
✎
14:51
|
(137) "все" обрезает фильтр по реквизиту но нулевые остатки попадают в общую выборку
|
|||
139
Злопчинский
19.12.13
✎
15:01
|
(132) Епрст, вот не получается у мну!!
. ТекстЗапроса = " |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент,Регистр.ОстаткиТМЦ.Номенклатура; |Артикул = Справочник.Номенклатура.Артикул,Регистр.ОстаткиТМЦ.Номенклатура.Артикул; |Склад = Регистр.ОстаткиТМЦ.Склад; |Активен = Справочник.Номенклатура.wms_Активен,Регистр.ОстаткиТМЦ.Номенклатура.wms_Активен; |Количество = Регистр.ОстаткиТМЦ.Количество; |Функция КоличествоКонОст = КонОст(Количество); |Функция Вася = Сумма(1); |Группировка Номенклатура Без Групп ; |Условие (Активен= 2); |Условие (КакОтсеятьНеНулевыеостатки); |"; . Что поставить в |Условие (КакОтсеятьНеНулевыеостатки); . чтобы в запросе остались только нулевые остатки? |
|||
140
Ёпрст
19.12.13
✎
15:03
|
(139) ну втыкай туда
|Условие(Запрос.КонОст=0); |
|||
141
Ёпрст
19.12.13
✎
15:04
|
точнее
|Условие(Запрос.КоличествоКонОст =0); в твоём случае.. смотри, мот и выйдет аленький цветочек. |
|||
142
Злопчинский
19.12.13
✎
15:09
|
(141) а не выходит!!!
. вот твой исходный запрос, все нормально - выводятся ненулевые и нулевые остатки . http://content.screencast.com/users/Che66/folders/Jing/media/358e8402-539b-4b1c-8cb5-5938a9e6be4f/2013-12-19_1508.png |
|||
143
Злопчинский
19.12.13
✎
15:10
|
последние две позиции на рсунке - это то что надо иметь в результатах запроса
|
|||
144
Злопчинский
19.12.13
✎
15:10
|
Добавляем в твой запрос условие
|Условие(Запрос.КоличествоКонОст =0); |
|||
145
Ёпрст
19.12.13
✎
15:12
|
Это финальная табличка, которую надо поиметь ? Или ради примера ?..
|
|||
146
Злопчинский
19.12.13
✎
15:12
|
||||
147
Ёпрст
19.12.13
✎
15:12
|
если финальная, то не понимаю, в чем проблема не выводить секцию по условию :)
|
|||
148
Злопчинский
19.12.13
✎
15:12
|
(145) это живая таблица. В финальной, которую хочется получить - должны остаться только две строки, последние
|
|||
149
Злопчинский
19.12.13
✎
15:13
|
(147) ну, это не интересно... Хочется итогом запроса получить готовый результат
|
|||
150
Diter
19.12.13
✎
15:14
|
значит не повезло - не работает. тогда только при обходе тем более что "ступенек" у тебя все одно нет
|
|||
151
Ёпрст
19.12.13
✎
15:14
|
(148) т.е в таком виде её пользователь получит, так ?
Тогда бери первый запрос и на выходе не выводи секцию.. делов то :) |
|||
152
Злопчинский
19.12.13
✎
15:28
|
(151) ну блин! это понятно.
вопрос-то в том, можно ли получить запросом сразу готовое, не отсеивая при выводе... |
|||
153
Duke1C
19.12.13
✎
15:31
|
(151)+Добавить в Группировку по Номенклатуре
упорядочить по КоличествоКонОст и прерывать Цикл при обходе группировки, когда КоличествоКонОст станет > 0 |
|||
154
NS
19.12.13
✎
15:33
|
(149) Вместо условия по складу, в функцию напиши "когда"
|
|||
155
Ёпрст
19.12.13
✎
16:07
|
Запрос..запрос.. вот ты нудный :))
Ну на: Перем ТЗ; Функция Вася(Номенклатурка) Если ТипЗначенияСтр(ТЗ)<>"ТаблицаЗначений" Тогда Рег = СоздатьОбъект("Регистр.ОстаткиТМЦ"); Рег.ВыгрузитьИтоги(ТЗ); КонецЕсли; Возврат ТЗ.НайтиЗначение(Номенклатурка,,"Номенклатура") КонецФункции ..... ТекстЗапроса = " |Номенклатура = Справочник.Номенклатура.ТекущийЭлемент; |Артикул = Справочник.Номенклатура.Артикул; |Активен = Справочник.Номенклатура.wms_Активен; |Группировка Номенклатура Без Групп ; |Условие (Активен= 2); |Условие (Вася(Номенклатура)=0); |"; |
|||
156
Ёпрст
19.12.13
✎
16:08
|
склад свой еще в фильтр выгрузить итоги запихай.
|
|||
157
Злопчинский
19.12.13
✎
20:00
|
9155) ну блин ты типа хитрый, фигня это а не нормальный запрос.
|
|||
158
Злопчинский
19.12.13
✎
20:01
|
(153) это более кузявое решение, но все равно изврат
|
|||
159
Ёпрст
20.12.13
✎
08:23
|
(157) А чем не нравится ?
:)) |
|||
160
Ёпрст
20.12.13
✎
08:23
|
отработает быстро.
|
|||
161
Ёпрст
20.12.13
✎
08:24
|
можно сказать, это будет почти максимум, для чорного запроса, тем более, итоги не надо рассчитывать.
Ну , разве что поиск в ТЗ не айс.. можно заменить на поиск в ИТЗ, к примеру. |
|||
162
Ёпрст
20.12.13
✎
08:25
|
Зато и итоги по группам можно поиметь .. и всё такое..
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |