|
1С82 ЛЕВОЕ СОЕДИНЕНИЕ | ☑ | ||
---|---|---|---|---|
0
sergey0703ua
18.02.13
✎
17:56
|
Помогите пожалуйста разобраться:
Запрос.Текст = " |ВЫБРАТЬ | ОтчетПроизводстваЗаСмену.Номенклатура Как Номенклатура, | ЕСТЬNULL(ЗатратыНаПродукцию.СуммаЗатрат,0) как СуммаЗатрат | ИЗ | Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСмену | ЛЕВОЕ СОЕДИНЕНИЕ | РегистрСведений.НормыЗатратНаПродукцию как ЗатратыНаПродукцию | ПО | ОтчетПроизводстваЗаСмену.Номенклатура.НоменклатурнаяГруппа = ЗатратыНаПродукцию.НоменклатурнаяГруппа |ГДЕ |((ОтчетПроизводстваЗаСмену.Ссылка.Дата МЕЖДУ &ДатаН И &ДатаК) И (ЗатратыНаПродукцию.Период =&ДатаН )) Выбирает только те "Номенклатуры" из документа "ОтчетПроизводстваЗаСмену" по которым находит записи в РегистреСведений "ЗатратыНаПродукцию", как доработать код чтобы выбирались и те "Номенклатуры" из документа "ОтчетПроизводстваЗаСмену" по которым НЕТ записей в РегистреСведений ? |
|||
1
rotting
18.02.13
✎
17:57
|
полное
|
|||
2
Волшебник
18.02.13
✎
17:58
|
Лучше правое
|
|||
3
Naumov
18.02.13
✎
17:59
|
Добавь поле со значением 1 в запрос, например
|
|||
4
Reset
18.02.13
✎
18:04
|
Вот это условие отрезает записи, которых нет в регистре
И (ЗатратыНаПродукцию.Период =&ДатаН )) |
|||
5
alexkv_m
18.02.13
✎
18:04
|
Условие (ЗатратыНаПродукцию.Период =&ДатаН ) обрубает их.
Запрос.Текст = " |ВЫБРАТЬ | ОтчетПроизводстваЗаСмену.Номенклатура Как Номенклатура, | ЕСТЬNULL(ЗатратыНаПродукцию.СуммаЗатрат,0) как СуммаЗатрат | ИЗ | Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСмену | ЛЕВОЕ СОЕДИНЕНИЕ | РегистрСведений.НормыЗатратНаПродукцию как ЗатратыНаПродукцию | ПО | ОтчетПроизводстваЗаСмену.Номенклатура.НоменклатурнаяГруппа = ЗатратыНаПродукцию.НоменклатурнаяГруппа И (ЗатратыНаПродукцию.Период =&ДатаН ) |ГДЕ |(ОтчетПроизводстваЗаСмену.Ссылка.Дата МЕЖДУ &ДатаН И &ДатаК) так попробуй... |
|||
6
hhhh
18.02.13
✎
18:06
|
ГДЕ
|((ОтчетПроизводстваЗаСмену.Ссылка.Дата МЕЖДУ &ДатаН И &ДатаК) И (ЗатратыНаПродукцию.Период =&ДатаН ИЛИ ЗатратыНаПродукцию.Период ЕСТЬ NULL)) |
|||
7
Darklight
18.02.13
✎
18:07
|
Не знаю как там с правым соединение (2), но я бы написал вот так
ВЫБРАТЬ ЕСТЬNULL(ОтчетПроизводстваЗаСмену.Номенклатура,неопределено), КАК Номенклатура, ЕСТЬNULL(ЗатратыНаПродукцию.СуммаЗатрат, 0) КАК СуммаЗатрат ИЗ Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСмену ПОЛНОЕ СОЕДИНЕНИЕ РегистрСведений.НормыЗатратНаПродукцию КАК ЗатратыНаПродукцию ПО ОтчетПроизводстваЗаСмену.Номенклатура.НоменклатурнаяГруппа = ЗатратыНаПродукцию.НоменклатурнаяГруппа И ЗатратыНаПродукцию.Период = &ДатаН ГДЕ ОтчетПроизводстваЗаСмену.Ссылка.Дата МЕЖДУ &ДатаН И &ДатаК Правда есть загвоздка (не известна структура регистра ЗатратыНаПродукцию), точнее две 1. В регистре нет Номенклатуры, а в результате запроса выводится номенклатура (в первом поле) - когда в т.ч. не будет номенклатуры - результат в поле будет "неопределено" (можно подставить номенклатурную группу - но это всё же не номенклатура) 2. Если регистр "ЗатратыНаПродукцию" периодический (и поле "Период" - это период, а не реквизит, ресурс, измерение), то и обращаться тогда видимо нужно через срезпоследнего к виртуальной таблице. |
|||
8
Darklight
18.02.13
✎
18:10
|
(7)Виноват - поспешил - не так понял задачу - видимо всё же вместо полного - нужно левое соединение ;)
|
|||
9
Волшебник
18.02.13
✎
18:10
|
(7) ЗатратыНаПродукцию - это оборотный регистр накопления
|
|||
10
Darklight
18.02.13
✎
18:10
|
как в (5)
|
|||
11
Darklight
18.02.13
✎
18:11
|
(9)в (0) написано так - РегистрСведений.НормыЗатратНаПродукцию
|
|||
12
GANR
18.02.13
✎
18:14
|
(0) Фильтрацию ЗатратыНаПродукцию.Период = &ДатаН сделать ПЕРЕД левым соединением, т. е. во вложенном запросе. Ты его рубишь и превращаешь во внутреннее.
|
|||
13
GANR
18.02.13
✎
18:15
|
(2) нельзя-ли ТелепатБот приучить к этой ошибке?
|
|||
14
GANR
18.02.13
✎
18:23
|
ошибка на самом деле неимоверно банальная
v8: v8: Объясните принцип ЛЕВОЕ соединение v8: Помогите плиз с запросом. |
|||
15
sergey0703ua
18.02.13
✎
20:45
|
Спасибо ОГРОМНОЕ!!! Все выбирается как нужно, как и посоветовал alexkv_m
Перенес условие "(ЗатратыНаПродукцию.Период =&ДатаН )" Запрос.Текст = " |ВЫБРАТЬ | ОтчетПроизводстваЗаСмену.Номенклатура Как Номенклатура, | ЕСТЬNULL(ЗатратыНаПродукцию.СуммаЗатрат,0) как СуммаЗатрат | ИЗ | Документ.ОтчетПроизводстваЗаСмену.Продукция КАК ОтчетПроизводстваЗаСмену | ЛЕВОЕ СОЕДИНЕНИЕ | РегистрСведений.НормыЗатратНаПродукцию как ЗатратыНаПродукцию | ПО | ОтчетПроизводстваЗаСмену.Номенклатура.НоменклатурнаяГруппа = ЗатратыНаПродукцию.НоменклатурнаяГруппа И (ЗатратыНаПродукцию.Период =&ДатаН ) |ГДЕ |(ОтчетПроизводстваЗаСмену.Ссылка.Дата МЕЖДУ &ДатаН И &ДатаК) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |