Имя: Пароль:
1C
1С v8
Вопрос по запросу. Уже крыша едет 8))
, ,
0 e2v
 
13.12.13
12:42
Делаю левое соединение. Должно же быть так :
берется вся таблица левая и к ней присоединяется правая по условию.
Так вот отдельно таблицы выводят одни данные , а при соединении данные выводятся не все. Где ошибка? Уже на грани помешательства.8)))
Первая таблица
****************************************************************
ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Номенклатура,
    СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
    И ПоступлениеТоваровУслугТовары.Ссылка.Организация = &Организация
    И ПоступлениеТоваровУслугТовары.Ссылка.Склад = &Склад

СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслугТовары.Номенклатура
***************************************************************
Выводит:
Товар1 20
Товар2 30


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

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстатки.Субконто1
АВТОУПОРЯДОЧИВАНИЕ
*******************************************************************
Выводит:
Товар2 15

А вместе:

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

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

******************************************************************
Выводят:
Товар2  30  15

Где непонятки?
1 hhhh
 
13.12.13
12:44
(0) ну всё правильно пишет. В чем вопрос?
2 e2v
 
13.12.13
12:46
Как правильно???? Должно же быть:
Товар1  20  0
Товар2  30  15

Или как?
Ведь из левой же все берем.
3 Wobland
 
13.12.13
12:47
ПО ПоступлениеТоваровУслугТовары.Номенклатура.Ссылка = ХозрасчетныйОстатки.Субконто1
4 Конфигуратор1с
 
13.12.13
12:47
(2) если ты накладываешь условие на правую таблицу в левом соединении то оно превращается в внутреннее соединеие
5 Wobland
 
13.12.13
12:48
и организацию в хозрасчётном в параметры пересунуть
6 Конфигуратор1с
 
13.12.13
12:48
(2) перенеси " И ХозрасчетныйОстатки.Организация = &Организация
" в параметры вирутальной таблицы остатков и испытаешь счастье
7 Avganec
 
13.12.13
12:48
(2) И ХозрасчетныйОстатки.Организация = &Организация
это условие на уже соединение, а не на только правую таблицу
8 Конфигуратор1с
 
13.12.13
12:50
а в общем случае нужно писать в соединении
ПО ПоступлениеТоваровУслугТовары.Номенклатура.Ссылка = ХозрасчетныйОстатки.Субконто1.Ссылка и ХозрасчетныйОстатки.Организация = &Организация
9 Конфигуратор1с
 
13.12.13
12:51
а вообще в тебя щас какашками бросать будем

ВЫБРАТЬ
    ПоступлениеТоваровУслугТовары.Номенклатура,
    СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество
ИЗ
    Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
ГДЕ
    ПоступлениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаКонца
    И ПоступлениеТоваровУслугТовары.Ссылка.Организация = &Организация
    И ПоступлениеТоваровУслугТовары.Ссылка.Склад = &Склад

СГРУППИРОВАТЬ ПО
    ПоступлениеТоваровУслугТовары.Номенклатура.
воттут лучше переписать на соединение таблицы документов с их табчастью
10 e2v
 
13.12.13
12:52
Гы-гы-гы.
Заработало.
А пояснить тупому.
Почему так надо??
8))))
11 Конфигуратор1с
 
13.12.13
12:52
ПО ПоступлениеТоваровУслугТовары.Номенклатура.Ссылка = ХозрасчетныйОстатки.Субконто1.Ссылка
тут лучше выразить как документ поступление товаров и услуг иначе он тебе со всеми таблицами документов забубенит соединение. результат правильный. а вот тормоза будут
12 e2v
 
13.12.13
12:54
Конфигуратор1: не про ссылку все понятно. Это я танцы с бубном делал. всяко пробовал.
А про то что в параметры засунуть надо
13 Конфигуратор1с
 
13.12.13
12:54
(10) ну смотри у тебя таблица а и таблица б ты хош взять записи с таблицы а и соответствия в таблице б. Если просто сделать то все тип топ, но елси ты хочешь отобрать определенные записи с таблицы б и накладываешь условие на нее, то 1сина возьмет соединит обе таблицы а потом только наложит твое условие. Соответственно для тех строк кому не нашлись соответствия из таблицы б будут отброшены так как не соответствуют условию
14 Конфигуратор1с
 
13.12.13
12:55
(12) читай (13)
15 Конфигуратор1с
 
13.12.13
12:57
соответственно если напишешь в условиях соединения свое условие то оно должно  отработать
16 e2v
 
13.12.13
12:59
А-а-а. понял. условие применяется после соединения таблиц.
тада все ясно
Спасибо. 8)))