Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Чёрный запрос - как отфильтровать лишнее

v7: Чёрный запрос - как отфильтровать лишнее
Я
   Злопчинский
 
02.11.16 - 16:48
77, файловая
Есть Регистр.Заказы, оборотный
есть запрос
    |Период с ДатаН; 
    |
    |Заказ         = Регистр.Заказы.Заказ;
    |Номенклатура     = Регистр.Заказы.Номенклатура;
    |КолЗаказано     = Регистр.Заказы.Заказано;
    |КолОтгружено     = Регистр.Заказы.Отгружено;
    |
    |Функция Заказано = Сумма(КолЗаказано);
    |Функция НеОтгружено = Сумма(КолЗаказано-КолОтгружено);
    |
    |Группировка Номенклатура Без Упорядочивания Без Групп;
    |Условие(Заказ в ВыбДок);

вот это: Функция Заказано = Сумма(КолЗаказано);
введено потому что иначе результат запроса получается пустой.

в результате в итоге запроса имеем все записи по заказу, в т.ч. и отгруженные полностью (это вообщем-то понятно): http://screencast.com/t/yfQT7hm3W

вопрос: как сделать запрос, чтобы остались только те записи где НеОтгружено<>0
??
 
 
   Волшебник
 
Модератор
1 - 02.11.16 - 16:49
Переходи на восьмёрку, там это реализовано
   aka AMIGO
 
2 - 02.11.16 - 16:51
(0) зачем загромождать запрос? ИМХО - обработка в цикле решит проблему..

(1) ты забыл копирайт: © :)
   aka AMIGO
 
4 - 02.11.16 - 16:53
(0) извини, конец рабочего дня, туплю..
   aka AMIGO
 
5 - 02.11.16 - 16:54
Еще раз ступлю:

|Условие((Заказ в ВыбДок) И (НеОтгружено<>0));

И - домой :)
   Злопчинский
 
6 - 02.11.16 - 16:57
(5) проверял?
   Злопчинский
 
7 - 02.11.16 - 16:58
(1) не нужен пока мне этот ваш неповоротливый и глючный монстр
   Волшебник
 
Модератор
8 - 02.11.16 - 16:58
(7) Да, восьмёрка ещё сыровата...
   Джинн
 
9 - 02.11.16 - 17:00
Применение Когда в функции не помогает? Забыл уже это окаменелое дерьмо мамонта :(
   Злопчинский
 
10 - 02.11.16 - 17:00
(5) не прокатит, поле не определено
 
 Рекламное место пустует
   Злопчинский
 
11 - 02.11.16 - 17:02
(9) а куда и какое (по смыслу) когда впихивать?

Ёпрст, ты где...?!
   Slypower
 
12 - 02.11.16 - 17:02
(6) я проверят так: брал сумму из дока в запросе и пихал в условие: (сумма<>0). Обрабатывает. Только отдельным условием писал
   Slypower
 
13 - 02.11.16 - 17:03
(11) пример
|Функция КонОстП = КонОст(Сумма)Когда((ПустоеЗначение(ДатаОплаты(КредДокумент)) = 0)и(ДатаОплаты(КредДокумент) < ДатаКонца));";
   Slypower
 
14 - 02.11.16 - 17:05
|Функция НеОтгружено = Сумма(КолЗаказано-КолОтгружено)Когда(КолЗаказано<>КолОтгружено);
   Злопчинский
 
15 - 02.11.16 - 17:07
(14) попробую...
   Ёпрст
 
16 - 02.11.16 - 17:14
(0) тебе условие это нужно для группировки по номенклатуре ?
Не сделаешь просто так. В запросе нет havinga, там простое where будет для каждого движения регистра.

Делай прямой запрос. и там - что угодно
   Ёпрст
 
17 - 02.11.16 - 17:16
даже
|Условие(Запрос.Неотгруженно<>0);
не спасёт, ибо это условие вычисляется при каждом вычислении функции
   Злопчинский
 
18 - 02.11.16 - 17:20
(16) нет, просто для получения "признака" что заказ отгружен не полностью - для этого смотрю еслт ли неотгруженное
   Злопчинский
 
19 - 02.11.16 - 17:20
(17) это я в самом начале выяснил
   Ёпрст
 
20 - 02.11.16 - 17:21
в любом случая, в запросе не выйдет. Ну попробуй (17), так, на шару.
   Ёпрст
 
21 - 02.11.16 - 17:21
а у тя там, примитивный select ...from group by having
   Ёпрст
 
22 - 02.11.16 - 17:21
делай прямой запрос или фильтруй ТЗ.
   Ёпрст
 
23 - 02.11.16 - 17:22
или ИТЗ
   Джинн
 
24 - 02.11.16 - 17:22
(18) Структура регистра изначально неправильная. Достаточно было одного ресурса и приход/расход. Тогда КонОст по регистру выдал бы не отгруженные.
   Злопчинский
 
25 - 02.11.16 - 17:22
(14) не взлетело
   Злопчинский
 
26 - 02.11.16 - 17:25
(24) думал над этим в самом начале. но там еще ресурсы - запланировано, отобрано, промаркировано - все придется выводить в ноль, геморно имхо.
   Злопчинский
 
27 - 02.11.16 - 17:25
(20) это я еще в самом начале попробовал...
   Злопчинский
 
28 - 02.11.16 - 17:28
другой вопрос - нахрена в этом запросе из (0) обязательно должна быть
Функция Заказано = Сумма(КолЗаказано);
???
вопрос этот я уже подымал,
судя по всему если нет "прямой" функции как эта - которая вычисляется "на сервере", то есть при извлечении данных - то получается нулевой запрос, так как "сложные" функции типа
Функция НеОтгружено = Сумма(КолЗаказано-КолОтгружено);

вычисляются уже в темпах над полученным итогом запроса...
???
   Злопчинский
 
29 - 02.11.16 - 17:28
(22) так и пришлось в итоге...
   Ёпрст
 
30 - 02.11.16 - 17:33
(28)в клюшках, при запросе к регистру всегда должна быть функция, к оборотному Сумма, к останковому одна из НачОст/КонОст/Приход/Расход .. иначе считать нечего. Просто так записей запрос не выгребает
   Ёпрст
 
31 - 02.11.16 - 17:34
ибо там идёт group by всегда (ибо обязательна группировка в тексте запроса), соответственна нужна функция. Ну, как-то так.
   Злопчинский
 
32 - 02.11.16 - 17:38
(30) эээ в этом запросе (0) если выкинуть функцию 
Функция Заказано = Сумма(КолЗаказано); 

останется еще функция с Сумма - но при этом результат будет нулевой... условие наличия функции Сумма - не катит...
??
   Джинн
 
33 - 02.11.16 - 17:39
(26) Одно измерение со статусом. И движения - ушло с одним-пришло с другим. В итоге в ноль выйдет.
 
 
   Ёпрст
 
34 - 02.11.16 - 17:41
(32) нулевой, это какой? Когда что в запросе оставляешь ?
   Злопчинский
 
35 - 02.11.16 - 17:42
(34)     |Период с ДатаН;
    |
    |Заказ         = Регистр.Заказы.Заказ;
    |Номенклатура     = Регистр.Заказы.Номенклатура;
    |КолЗаказано     = Регистр.Заказы.Заказано;
    |КолОтгружено     = Регистр.Заказы.Отгружено;
    |
    |Функция НеОтгружено = Сумма(КолЗаказано-КолОтгружено);
    |
    |Группировка Номенклатура Без Упорядочивания Без Групп;
    |Условие(Заказ в ВыбДок);


дает нулевой итог, что неверно
   Ёпрст
 
36 - 02.11.16 - 17:46
И без условия Условие(Заказ в ВыбДок); тоже ?
Странно, должны быть данные
   Ёпрст
 
37 - 02.11.16 - 17:47
Хотя не помню я уже, можно в профайлере посмотреть, какой запрос будет. Там усё понятно, почему так или иначе :)
   Slypower
 
38 - 02.11.16 - 17:48
(35) Заказ - это документ? Может нужно
Заказ         = Регистр.Заказы.Заказ.ТекущийДокумент();
т.к. выбдок-явно реквизит Документ
   Злопчинский
 
39 - 02.11.16 - 17:51
(38) не, тут все норм
   Злопчинский
 
40 - 02.11.16 - 17:53
(36) можно и услвие по документу заремить, нулевой итог.
   Злопчинский
 
41 - 02.11.16 - 17:53
дбфная база, не скульная. фиг ты там чего профайлером посмотришь... (?)
   Кокос
 
42 - 02.11.16 - 17:57
вдруг неожиданно понял что забыл 77 :)
   Злопчинский
 
43 - 02.11.16 - 18:06
(42) это свойственно людям. все ошибаются.. ;-)
   Кокос
 
44 - 15.11.16 - 10:07
(43) эх. а были времена )


Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь во втором сообщении вам дадут решение, а в двадцатом дадут правильное решение. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует