Имя: Пароль:
1C
1С v8
Язык запросов
,
0 Касандер72
 
25.01.12
12:59
Как на восьмерке можно реализовать в запросе суммирование при определенных условиях, например семерочная КОГДА не прокатывает:

Запрос.Текст =
       "ВЫБРАТЬ
       |    ДокументПеремещения.ОбъектСдачи КАК ОбъектСдачи,
       |    ДокументПеремещения.ОбъектПриема КАК ОбъектПриема,
       |    ПеремещениеУпаковок.НоменПряжи КАК НоменПряжи,
       |    ПеремещениеУпаковок.ПартияПряжи КАК ПартияПряжи,
       |    ПеремещениеУпаковок.ПартияПряжи.ТексПряжи КАК ТексПряжи,
       |    ПеремещениеУпаковок.ПартияПряжи.ЦветПряжи КАК ЦветПряжи,
       |    ПеремещениеУпаковок.ИспытаниеПряжи.СортПряжи КАК СортПряжи,
       |    СУММА(ПеремещениеУпаковок.КондМасса) КАК ПереданоМасса
       |        КОГДА (ОбъектСдачи = &ПоОбъектуСдачи) И (ОбъектПриема = &ПоОбъектуПриема),
       |    СУММА(ПеремещениеУпаковок.КондМасса) КАК ВозвращеноМасса
       |        КОГДА (ОбъектСдачи = &ПоОбъектуПриема) И (ОбъектПриема = &ПоОбъектуСдачи)
       |ИЗ
       |    Документ.ПеремещениеУпаковок КАК ДокументПеремещения,
       |    Документ.ПеремещениеУпаковок.Упаковки КАК ПеремещениеУпаковок
       |ГДЕ
       |    ((ОбъектСдачи = &ПоОбъектуСдачи) И(ОбъектПриема = &ПоОбъектуПриема)) ИЛИ
       |    ((ОбъектСдачи = &ПоОбъектуПриема) И (ОбъектПриема = &ПоОбъектуСдачи)) И
       |    (ДокументПеремещения.Дата МЕЖДУ &НачДата И &КонДата))
       |
       |СГРУППИРОВАТЬ ПО
       |    ПеремещениеУпаковок.НоменПряжи,
       |    ПеремещениеУпаковок.ПартияПряжи.ТексПряжи,
       |    ПеремещениеУпаковок.ПартияПряжи.ЦветПряжи,
       |    ПеремещениеУпаковок.ПартияПряжи,
       |    ПеремещениеУпаковок.ИспытаниеПряжи.СортПряжи,
       |    ДокументПеремещения.ОбъектСдачи,
       |    ДокументПеремещения.ОбъектПриема";
   Запрос.УстановитьПараметр("НачДата", НачПериода);
   Запрос.УстановитьПараметр("КонДата", КонПериода);
   Запрос.УстановитьПараметр("ПоОбъектуПриема", ПоОбъектуПриема);
   Запрос.УстановитьПараметр("ПоОбъектуСдачи", ПоОбъектуСдачи);
1 depthzer0
 
25.01.12
13:00
Выбор Когда Условие Тогда Данные Иначе 0 Конец
2 Касандер72
 
25.01.12
13:02
спс огромный!
3 Wobland
 
25.01.12
13:05
приколюсь-ка над семёрочником ;)
каков результат запроса: ВЫБРАТЬ ВЫБОР КОГДА NULL=NULL ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ
4 Касандер72
 
25.01.12
13:07
(3) из чего выбор то? по идее ИСТИНА
5 Spieluhr
 
25.01.12
13:08
(4) NULL - это не значение, это операнд
6 Wobland
 
25.01.12
13:08
(4) а ни из чего, так можно. вот второй запрос:
ВЫБРАТЬ ВЫБОР КОГДА NULL<>NULL ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ
7 Spieluhr
 
25.01.12
13:09
поддержу (3)
чем отличается NULL от Неопределено и от ПустаяСсылка()
:)
8 depthzer0
 
25.01.12
13:09
а ни из чего, так можно - прикольно, спс ))
9 Wobland
 
25.01.12
13:10
(7) щас придёт @Ненавижу1С и всё расскажет.
для наглядности в одном флаконе:
ВЫБРАТЬ ВЫБОР КОГДА NULL=NULL ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ ВЫБОР КОГДА NULL<>NULL ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ
10 Живой Ископаемый
 
25.01.12
13:13
2(9) рисуй картинки, ну... :) может он еще с консолью не знаком
11 Spieluhr
 
25.01.12
13:14
(9) добавлю в набор вопросов к кандидату на собеседовании.
Действительно наглядно!!!
12 fisher
 
25.01.12
13:15
(4) Это стандартная подъебка. В терминах СУБД значение NULL обозначает отсутствие значения и любые логические операции с ним возвращают ЛОЖЬ. Для проверки NULL есть специальные операторы.
Но это только в запросе, т.к. СУБД по этим правилам работает. А в языке 1С при обработке выборки Null уже подчиняется общим правилам. Вот такой корпускулярно-волновой дуализм.
13 Wobland
 
25.01.12
13:16
(10) я как ты не умею. http://s018.radikal.ru/i512/1201/84/c7f99f6c64fa.jpg
14 Shurjk
 
25.01.12
13:16
(3) Ложь.
15 Shurjk
 
25.01.12
13:17
(6) Тоже ложь.
16 depthzer0
 
25.01.12
13:17
лажь
17 Касандер72
 
25.01.12
13:18
все страдаете? по мне так NULL - потерянная ссылка)
18 Maxus43
 
25.01.12
13:19
(17) заклюют веть щас)
19 Spieluhr
 
25.01.12
13:20
Сообщение (17) - это вброс говна на вентилятор
20 Касандер72
 
25.01.12
13:20
(18) это точно)
21 Shurjk
 
25.01.12
13:21
Да ладно понимаю новички путаются в понятиях, а ведь иногда и матерые люди попадаются на непонимании этого вопроса.
22 Касандер72
 
25.01.12
13:27
Тогда объясните: если в справочнике "Номенклатура", допустим в реквизите "ТипПродукции" - ссылка на справочник "ТипыПродукции" было
выбрано некое значение, которое впоследствии НЕПОСРЕДСТВЕННО удалили,
будет ли значение реквизита "ТипПродукции" равно NULL?
23 Maxus43
 
25.01.12
13:27
(22) небудет
24 ДенисЧ
 
25.01.12
13:27
(22) нет
25 Wobland
 
25.01.12
13:28
(22) NULL - это когда нет в принципе. а там ссылка, хоть и битая
26 Maxus43
 
25.01.12
13:28
(23) + ты увидиш - <Объект не найден (его ГУИД)>
27 depthzer0
 
25.01.12
13:28
а ТипПродукции.Ссылка?
28 Касандер72
 
25.01.12
13:28
а чему? ведь это не неопределено и не пустая ссылка по идее.
29 Spieluhr
 
25.01.12
13:29
(25) прав
30 Живой Ископаемый
 
25.01.12
13:29
31 pumbaEO
 
25.01.12
13:29
(28) Это ссылка, другой вопрос, что ее в базе нет.
32 Wobland
 
25.01.12
13:29
(28) ссылке
33 Живой Ископаемый
 
25.01.12
13:30
2(28) и не НУЛЛ
это ссылка, объект которой удалили... или он например в другой базе
34 Wobland
 
25.01.12
13:30
(30) ты это к чему?
35 Живой Ископаемый
 
25.01.12
13:31
2(34) пока не знаю.. слабая попытка спровоцировать автора...
36 Касандер72
 
25.01.12
13:32
то бишь NULL - когда переменную зарезервировали, но не определии значение?
37 Spieluhr
 
25.01.12
13:32
38 depthzer0
 
25.01.12
13:33
39 H A D G E H O G s
 
25.01.12
13:33
Счаст договоритессь до того, что призовете князя NULL, в миру @Ненавижу1С
40 Wobland
 
25.01.12
13:33
(36) а это уже Неопределено ;))
41 Wobland
 
25.01.12
13:34
@Ненавижу1C - цэ латинская?
42 Wobland
 
25.01.12
13:34
(41) плин, а чо не работает?
43 Касандер72
 
25.01.12
13:40
40) так когда у переменной флаг "NULL" и когда "Неопределено" ?
44 ДенисЧ
 
25.01.12
13:41
(43) Нул в запросах, неопределено - вне их
45 Живой Ископаемый
 
25.01.12
13:42
2(43) это не флаг, это значение... Когда мы пишем в коде:
МояПеременная = NULL; - тогда НУЛЛ
Когда
МояПеременная = Неопределено; - тогда неопределено...
это что касается переменных.. в запросах значение полей результата зависит от информации в ИБ
46 Wobland
 
25.01.12
13:46
(44) NULL вне:
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ NULL";
Выборка=Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Сообщить(Выборка.Поле1=NULL);
47 Wobland
 
25.01.12
13:46
http://allk.ru/book/143/1207.html

Есть лишь единая вселенная, образованная эманациями (энергиями) Орла. Для понимания этой истины древние толтеки ввели понятия «известного» («ведомо¬го»), «неизвестного» («неведомого») и «непознаваемого» («непостижимого»). Однако они допустили ошибку, отож¬дествив два последних понятия. Новые «видящие» испра¬вили эту ошибку, определив границы этих понятий и чет¬ко сформулировав категории.
«Неизвестным» они назвали то, что скрыто от человека неким подобием занавеса из ткани бытия, имеющей ужа¬сающую фактуру, однако находится в пределах досягае¬мости. В некоторый момент времени «неизвестное» стано¬вится «известным».
«Непознаваемое» же суть нечто неописуемое и не под¬дающееся ни осмыслению, ни осознанию. «Непознавае¬мое» никогда не перейдет в разряд «известного», но, тем не менее, оно всегда где то рядом, восхищая нас своим ве¬ликолепием. Однако его грандиозность и бесконечность приводят в ужас. «Непознаваемое», в отличие от «неизвестного», не дает человеку надежды и ощущения счастья. Напротив, столкнувшись с «непознаваемым», «видящий» чувствует себя истощенным и запутанным. Его тело теря¬ет тонус. Ясность и уравновешенность улетучиваются, так как «непознаваемое» не дает, а забирает энергию. Иссле¬дователи не только поняли это, но и нашли способы обезо¬пасить себя.
Приведенные определения понятий позволяют сделать вывод, что «известное» и «неизвестное» – суть одно и то же, поскольку и то, и другое находится в пределах воз¬можного для человеческого восприятия. Используя кон¬тролируемое видение, маги пытаются сделать «неизвест¬ное» доступным нашему восприятию.
========
NULL - это "непознаваемое"... Неопределено - это "неизвестное"
48 Касандер72
 
25.01.12
13:53
(45) Возможно, неправильно  выразился, я имел ввиду этот случай:

Функция трррррр()
  Перем А;

А=NULL или А=Неопределено?
49 hhhh
 
25.01.12
13:54
null - это в запросах.
50 Wobland
 
25.01.12
13:55
(48) Неопределено. ты ведь ничего туда не положил. последствия мягкой типизации
51 depthzer0
 
25.01.12
13:55
(47) ггг
52 Касандер72
 
25.01.12
13:55
(47) а непознаваемое как и неизвестное разве не может стать познаваемым в будущем?
53 Wobland
 
25.01.12
13:57
(52) если непознаваемое может стать познаваемым, то это не есть непознаваемое. по определению
54 Rovan
 
гуру
25.01.12
13:59
(7) что непонятного ?
ПустаяСсылка() обычно иммет тип ...например СправочникСсылка.Номенклатура
NULL - неопределенно значение в результатет запроса
Неопределено - неопределенное значение (переменной) в коде языка 1С
55 Rovan
 
гуру
25.01.12
14:00
(52) если стало познаваемым - значит это было неизвестное
56 Касандер72
 
25.01.12
14:02
(53) (55) так как различить на текущий момент непознаваемое от неизвестное? )
57 Wobland
 
25.01.12
14:04
(56) яблоко в моём кармане непознаваемо. количество сигарет в кармане неизвестно ;)