Имя: Пароль:
1C
1С v8
СКД отбор при связи наборов данных.
0 Mustang
 
07.02.14
14:16
Здравствуйте, подскажите в решении следующей задачи:
Пример запроса в СКД:

Select //Таблица №1
    РегистрТоварыНаСкладах.Номенклатура as Номенклатура,
    РегистрТоварыНаСкладах.Характеристика as Характеристика,
    РегистрТоварыНаСкладах.КоличествоBalance as Количество
    
Into
    ТаблицаТоварыНаСкладах
    
From
    AccumulationRegister.ТоварыНаСкладах.Balance as РегистрТоварыНаСкладах
    
{Where
    РегистрТоварыНаСкладах.Склад.*
}
    
    
    
;
Select //Таблица №2
    РегистрТоварыНаСкладах.Номенклатура as Номенклатура,
    РегистрТоварыНаСкладах.Характеристика as Характеристика,
    РегистрТоварыНаСкладах.КоличествоBalance as Количество,
    ТаблицаТоварыНаСкладах.Количество as КоличествоСоединение
    
{Select
    Номенклатура.*,
    Характеристика.*,
    Количество,
    КоличествоСоединение
}
    
From
    AccumulationRegister.ТоварыНаСкладах.Balance as РегистрТоварыНаСкладах
    
Left join
    ТаблицаТоварыНаСкладах as ТаблицаТоварыНаСкладах
on
    ((ТаблицаТоварыНаСкладах.Номенклатура = РегистрТоварыНаСкладах.Номенклатура) and (ТаблицаТоварыНаСкладах.Характеристика = РегистрТоварыНаСкладах.Характеристика))
    
    

Этот запрос позволяет сделать отбор по "Складу" только по первой таблице во второй таблице фильтр на "Склад" не действует.
Если тоже самое сделать разделив таблицы в разные наборы данных и соедниение сделать через "Связь наборов данных", то отбор уже действует на обе таблицы.
Иными словами получается внутренне соединение, а не левое. Хотя в описаниях сказано что "Связь наборов данных" аналогичено левому соединению.

Запросы наборов данных:

Select //Набор данных №1
    РегистрТоварыНаСкладах.Номенклатура as Номенклатура,
    РегистрТоварыНаСкладах.Характеристика as Характеристика,
    РегистрТоварыНаСкладах.КоличествоBalance as Количество
    
{Select
    Номенклатура.*,
    Характеристика.*,
    Количество
}
    
From
    AccumulationRegister.ТоварыНаСкладах.Balance as РегистрТоварыНаСкладах



Select //Набор данных №2
    РегистрТоварыНаСкладах.Номенклатура as Номенклатура,
    РегистрТоварыНаСкладах.Характеристика as Характеристика,
    РегистрТоварыНаСкладах.КоличествоBalance as КоличествоСоединение
    
Into
    ТаблицаТоварыНаСкладах
    
From
    AccumulationRegister.ТоварыНаСкладах.Balance as РегистрТоварыНаСкладах
    
{Where
    РегистрТоварыНаСкладах.Склад.*
}
    
    
    
;
Select
    ТаблицаТоварыНаСкладах.Номенклатура as Номенклатура,
    ТаблицаТоварыНаСкладах.Характеристика as Характеристика,
    ТаблицаТоварыНаСкладах.КоличествоСоединение as КоличествоСоединение
    
{Select
    Номенклатура.*,
    Характеристика.*,
    КоличествоСоединение
}
    
From
    ТаблицаТоварыНаСкладах as ТаблицаТоварыНаСкладах
    

Все запросы не реальные, а сделаны для упрощения понимания задачи!