Имя: Пароль:
1C
1С v8
Тип данных в левом соединении
0 GOshaSaveiko
 
13.03.12
14:49
Колупаю все тот же запрос. Многие вопросы порешал, остался последний.
ВЫБРАТЬ
   ЗаказыПокупателей.ЗаказПокупателя.Контрагент.Ссылка КАК ЗаказПокупателяКонтрагент,
   ЗаказыПокупателей.Номенклатура.Ссылка КАК НоменклатураСсылка,
   ЗаказыПокупателей.ЗаказПокупателя.Ссылка КАК ЗаказПокупателяСсылка,
   ХарактеристикиНоменклатуры.Комплектация КАК Комплектация,
   Производство.ДатаУчастка КАК ДатаНаСклад,
   СРЕДНЕЕ(ЦеныНоменклатуры.Цена) КАК Цена,
   СУММА(ЗаказыПокупателей.КоличествоПриход) КАК Количество,
   СУММА(ЗаказыПокупателей.КоличествоПриход * ЦеныНоменклатуры.Цена) КАК СуммаВЦенах
ИЗ
   РегистрНакопления.ЗаказыПокупателей.Обороты КАК ЗаказыПокупателей
       ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаХарактеристик КАК ХарактеристикиНоменклатуры
       ПО ЗаказыПокупателей.Номенклатура = ХарактеристикиНоменклатуры.Номенклатура
           И ЗаказыПокупателей.ХарактеристикаНоменклатуры = ХарактеристикиНоменклатуры.Характеристика
       ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаЦен КАК ЦеныНоменклатуры
       ПО ЗаказыПокупателей.Номенклатура = ЦеныНоменклатуры.Номенклатура
           И ЦеныНоменклатуры.Комплектация = ХарактеристикиНоменклатуры.Комплектация
           И ЦеныНоменклатуры.Группа = ХарактеристикиНоменклатуры.Группа
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.емПроизводство КАК Производство
       ПО ЗаказыПокупателей.ЗаказПокупателя.Ссылка = Производство.ЗаказПокупателя
           И ЗаказыПокупателей.Номенклатура = Производство.Номенклатура
           И ЗаказыПокупателей.ХарактеристикаНоменклатуры = Производство.ХарактеристикаНоменклатуры
           И ЗаказыПокупателей.СерияНоменклатуры = Производство.СерияНоменклатуры
           И ЗНАЧЕНИЕ(Перечисление.емУчасткиПроизводства.Склад) = Производство.Участок                  

ГДЕ

ЗаказыПокупателей.ЗаказПокупателя.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ)
И
ЗаказыПокупателей.ЗаказПокупателя.Контрагент.Ссылка = &Контрагент
И
Производство.ДатаУчастка = &ПустаяДата

СГРУППИРОВАТЬ ПО
   ЗаказыПокупателей.ЗаказПокупателя.Контрагент,
   ЗаказыПокупателей.Номенклатура.Ссылка,
   ХарактеристикиНоменклатуры.Комплектация,
   ЗаказыПокупателей.ЗаказПокупателя.Ссылка,
   Производство.ДатаУчастка

УПОРЯДОЧИТЬ ПО
   ЗаказыПокупателей.ЗаказПокупателя.Контрагент.Наименование,
   ЗаказыПокупателей.Номенклатура.Наименование,
   ХарактеристикиНоменклатуры.Комплектация,
   ЗаказыПокупателей.ЗаказПокупателя.Дата
ИТОГИ
   СРЕДНЕЕ(Цена),
   СУММА(Количество),
   СУММА(СуммаВЦенах)
ПО
   ОБЩИЕ,
   ЗаказПокупателяКонтрагент,
   НоменклатураСсылка,
   Комплектация,
   ЗаказПокупателяСсылка

Далее указываю, что
Запрос.УстановитьПараметр("ПустаяДата", Дата(1,1,1));

Получаю пустую выборку. Если выбирать все - без условия - получается 18 единиц, если ставить <> &ПустаяДата - получаются 10 единиц, а если ставить = &ПустаяДата - получается 0. Записи в регистре сведений по которому устанавливаю параметр - отсутствуют, но, насколько я понимаю, строки с отсутствующим соответствием должны быть Null в выборке, однако их там нет. Причем пробовал уже и = Null, = 0, =Неопределено. Скажите, пожалуйста, как выбрать записи, по которым отсутствуют данные в регистре сведений производство.
1 ptrtss
 
13.03.12
14:58
(NULL = ДАТАВРЕМЯ(1,1,1)) = NULL
(NULL <> ДАТАВРЕМЯ(1,1,1)) = NULL
2 ptrtss
 
13.03.12
14:59
(NULL = NULL) = NULL
3 ptrtss
 
13.03.12
14:59
(ЕСТЬNULL(NULL, ДАТАВРЕМЯ(1,1,1)) = ДАТАВРЕМЯ(1,1,1)) = ИСТИНА
4 Ненавижу 1С
 
гуру
13.03.12
15:00
И
Производство.ДатаУчастка = &ПустаяДата

перенести в условия соединения
5 Ненавижу 1С
 
гуру
13.03.12
15:00
(1)(2) ну зачем ты так? ))
6 ptrtss
 
13.03.12
15:02
А, ну и пользуем

ЕСТЬ NULL <Значение>
7 GOshaSaveiko
 
13.03.12
15:25
(4) - Во второй таблице нет данных по заказу. Перенос в условия соединения ничего не даст.
(6) - подробнее, пожалуйста, попробовал так:

ВЫБРАТЬ
   ЗаказыПокупателей.ЗаказПокупателя.Контрагент.Ссылка КАК ЗаказПокупателяКонтрагент,
   ЗаказыПокупателей.Номенклатура.Ссылка КАК НоменклатураСсылка,
   ЗаказыПокупателей.ЗаказПокупателя.Ссылка КАК ЗаказПокупателяСсылка,
   ХарактеристикиНоменклатуры.Комплектация КАК Комплектация,
   ЕСТЬNULL(Производство.ДатаУчастка , ДАТАВРЕМЯ(1, 1, 1)) КАК ДатаНаСклад,
   СРЕДНЕЕ(ЦеныНоменклатуры.Цена) КАК Цена,
   СУММА(ЗаказыПокупателей.КоличествоПриход) КАК Количество,
   СУММА(ЗаказыПокупателей.КоличествоПриход * ЦеныНоменклатуры.Цена) КАК СуммаВЦенах
ИЗ
   РегистрНакопления.ЗаказыПокупателей.Обороты КАК ЗаказыПокупателей
       ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаХарактеристик КАК ХарактеристикиНоменклатуры
       ПО ЗаказыПокупателей.Номенклатура = ХарактеристикиНоменклатуры.Номенклатура
           И ЗаказыПокупателей.ХарактеристикаНоменклатуры = ХарактеристикиНоменклатуры.Характеристика
       ЛЕВОЕ СОЕДИНЕНИЕ ТаблицаЦен КАК ЦеныНоменклатуры
       ПО ЗаказыПокупателей.Номенклатура = ЦеныНоменклатуры.Номенклатура
           И ЦеныНоменклатуры.Комплектация = ХарактеристикиНоменклатуры.Комплектация
           И ЦеныНоменклатуры.Группа = ХарактеристикиНоменклатуры.Группа
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.емПроизводство КАК Производство
       ПО ЗаказыПокупателей.ЗаказПокупателя.Ссылка = Производство.ЗаказПокупателя
           И ЗаказыПокупателей.Номенклатура = Производство.Номенклатура
           И ЗаказыПокупателей.ХарактеристикаНоменклатуры = Производство.ХарактеристикаНоменклатуры
           И ЗаказыПокупателей.СерияНоменклатуры = Производство.СерияНоменклатуры
           И ЗНАЧЕНИЕ(Перечисление.емУчасткиПроизводства.Склад) = Производство.Участок

ГДЕ

ЗаказыПокупателей.ЗаказПокупателя.Дата МЕЖДУ НАЧАЛОПЕРИОДА(&ДатаНач, ДЕНЬ) И КОНЕЦПЕРИОДА(&ДатаКон, ДЕНЬ)
И
ЗаказыПокупателей.ЗаказПокупателя.Контрагент.Ссылка = &Контрагент
И
Производство.ДатаУчастка = ДАТАВРЕМЯ(1, 1, 1)

СГРУППИРОВАТЬ ПО
   ЗаказыПокупателей.ЗаказПокупателя.Контрагент,
   ЗаказыПокупателей.Номенклатура.Ссылка,
   ХарактеристикиНоменклатуры.Комплектация,
   ЗаказыПокупателей.ЗаказПокупателя.Ссылка,
   Производство.ДатаУчастка

УПОРЯДОЧИТЬ ПО
   ЗаказыПокупателей.ЗаказПокупателя.Контрагент.Наименование,
   ЗаказыПокупателей.Номенклатура.Наименование,
   ХарактеристикиНоменклатуры.Комплектация,
   ЗаказыПокупателей.ЗаказПокупателя.Дата
ИТОГИ
   СРЕДНЕЕ(Цена),
   СУММА(Количество),
   СУММА(СуммаВЦенах)
ПО
   ОБЩИЕ,
   ЗаказПокупателяКонтрагент,
   НоменклатураСсылка,
   Комплектация,
   ЗаказПокупателяСсылка
8 GOshaSaveiko
 
13.03.12
15:31
ПОБЕДИЛ!
(Производство.ДатаУчастка) ЕСТЬ NULL
Отсюда: v8: Как обманчивы Null-ы
СПАСИБО!
9 Ненавижу 1С
 
гуру
13.03.12
16:00
NULL это вам не дешевое Неопределено!
10 GOshaSaveiko
 
13.03.12
16:45
(9) А то!
Ошибка? Это не ошибка, это системная функция.