Имя: Пароль:
1C
1С v8
УТ 11.3, запрос по комплектующим
0 roofus
 
29.10.16
19:32
Исх данные. 1с 8.3 УТ11.3
Справочник ВариантыКомплектаций.
Нужно запросом, указав "главный комплект" построить дерево с вложенными полуфабрикатами и комплектующими.
Не могу сообразить, как в запросе можно однозначно выяснить комплектующая в свою очередь является ли комплектом для запуска цикла построения на более низком уровне.
На ум приходят только вложенные запросы.
Есть ли решение такой задачи?
1 Мигрень
 
29.10.16
19:38
На ум приходит только сборка запроса из кусочков в рекурсивно алгоритме.
2 roofus
 
29.10.16
19:50
Вот текст запроса
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    Комплектующие.Номенклатура КАК Номенклатура,
    Комплектующие.Номенклатура.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
    Комплектующие.Упаковка КАК Упаковка,
    Комплектующие.КоличествоУпаковок КАК КоличествоУпаковок,
    Комплектующие.ДоляСтоимости КАК ДоляСтоимости,
    Комплектующие.Количество КАК Количество,
    Комплектующие.НомерСтроки КАК НомерСтроки,
    ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК ЦенаРуб,
    ЦеныНоменклатуры.Период КАК ДатаЦены,
    Комплектующие.Ссылка.Количество КАК КоличествоКомпл,
    Комплектующие.Ссылка.Владелец.ЕдиницаИзмерения КАК ЕдИзмКомпл
ИЗ
    Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК Комплектующие
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОтчета, ВидЦены = &ВидЦены) КАК ЦеныНоменклатуры
        ПО Комплектующие.Номенклатура = ЦеныНоменклатуры.Номенклатура
ГДЕ
    Комплектующие.Ссылка.Владелец = &Номенклатура
    И Комплектующие.Ссылка.Основной
    И НЕ Комплектующие.Ссылка.ПометкаУдаления

УПОРЯДОЧИТЬ ПО
    НомерСтроки

запрос, который определяет что это комплект
ВЫБРАТЬ
    КОЛИЧЕСТВО(*) КАК КоличествоЗаписей
ИЗ
    Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК Комплектующие
ГДЕ
    Комплектующие.Владелец = &Владелец";

Но как их соединить чего-то невтыкаю
3 tndr
 
29.10.16
20:04
Может добавить поле, типа ВЫБОР КОГДА трали вали, во временную таблицу все запихнуть, и по этому полю соединять?
4 Лефмихалыч
 
29.10.16
20:08
ВЫБРАТЬ
  Владелец
Поместить ВТ
ИЗ
Справочник.ВариантыКомплектацииНоменклатуры.Товары
СГРУППИРОВАТЬ ПО Владелец ИМЕЮЩИЕ Количество(РАЗЛИЧНЫЕ НОмерСТроки)>1
;
ВЫБРАТЬ
    ВТ.Владелец,
    Комлектующие.Номенклатура
ИЗ ВТ ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК Комплектующие
ПО ВТ.Владелец = Комплектующие.Владелец



цены прикрути левым соединением по аналогии со своим вариантом.
5 roofus
 
31.10.16
11:11
Не выходит каменный цветок.
Выдает все значения при присоединении таблицы а не одно.
Решил загнать все комплекты и полуфабрикаты в группу и проверить принадлежность к группе в запросе. Но как отобрать знаю как заполнить булевое поле в запросе принадлежностью группе не понимаю.
6 aleks_default
 
31.10.16
11:38
Я реализовывал в СКД через произвольную иерархию. Правда особо не заморачивался со всякими проверками на зацикленность и т. д. - для нашей базы это не критично.