Имя: Пароль:
1C
1С v8
Запрос по родительским группам с приоритетом
0 Kozitsyn
 
07.12.16
10:02
Всем привет!

Подскажите, пожалуйста, есть простой запрос по остаткам товаров на складах через СКД, пришил к нему доп. колонку "Опция", которая должна отобразить последнее значение из регистра "УстановкаПроектовДляНоменклатуры", но проблема в том, что это значение Опции может быть установлено как непосредственно у самой номенклатуры, так и у любой её родительской группы.

Задача стоит в том, чтобы вывести последюю Опцию, но с приоритетом последнего значения, которое установлено в группе по иерархии ближе к номенклатуры или в самой номенклатуре.

Сделал что-то типа такого (но такой запрос дублирует номенклатуру, если Опция встречается как у самой номенклатуры, так и у ее ближайшего родителя, не говоря еще том, чтобы запрос смотрел на всю иерархию, а очень нужно..):

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад,
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.Номенклатура.БазоваяЕдиницаИзмерения КАК БазоваяЕдиницаИзмерения,
    ТоварыНаСкладахОстатки.КоличествоОстаток,
    УстановкаПроектовДляНоменклатурыСрезПоследних.Сумма_ЦПВ КАК Опция
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстатки
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УстановкаПроектовДляНоменклатуры.СрезПоследних КАК УстановкаПроектовДляНоменклатурыСрезПоследних
ПО (ТоварыНаСкладахОстатки.Номенклатура = УстановкаПроектовДляНоменклатурыСрезПоследних.НоменклатураПроекта
ИЛИ ТоварыНаСкладахОстатки.Номенклатура.Родитель = УстановкаПроектовДляНоменклатурыСрезПоследних.НоменклатураПроекта)
1 Мимохожий Однако
 
07.12.16
10:07
Сделай объединение запросов по номенклатуре и родителям.
2 Kozitsyn
 
07.12.16
10:24
Пробую капать в сторону объединения, но теперь он всё дублирует )) направьте, пожалуйста, на путь истинный

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

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ТоварыНаСкладахОстатки.Склад,
    ТоварыНаСкладахОстатки.Номенклатура,
    ТоварыНаСкладахОстатки.Номенклатура.БазоваяЕдиницаИзмерения,
    ТоварыНаСкладахОстатки.КоличествоОстаток,
    УстановкаПроектовДляНоменклатурыСрезПоследних.Сумма_ЦПВ
ИЗ
    РегистрНакопления.ТоварыНаСкладах.Остатки(, ) КАК ТоварыНаСкладахОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.УстановкаПроектовДляНоменклатуры.СрезПоследних КАК УстановкаПроектовДляНоменклатурыСрезПоследних
        ПО ТоварыНаСкладахОстатки.Номенклатура.Родитель = УстановкаПроектовДляНоменклатурыСрезПоследних.НоменклатураПроекта
3 DrShad
 
07.12.16
11:00
так тебе не регистр с регистром объединять надо
4 МихаилМ
 
07.12.16
11:30
https://yandex.ru/yandsearch?text=получить%20родителей%20запрос&site=forum.mista.ru&lr=213&redircnt=1481099298.1

но сама концепция неправильная . храните однозначные соответствия . лучше в отдельно стоячей таблице (регистре)
5 Kozitsyn
 
07.12.16
12:02
(4) Да, вы правы, проще всего сделать отдельный регистр где уже будут все нужные соответствия, а отчетом просто брать от туда данные. И отчет будет быстро формироваться. Спасибо!