Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 01:04

СКД Группировка по верхнему уровню

Автор beginner1, 14 окт 2013, 11:58

0 Пользователей и 1 гость просматривают эту тему.

beginner1

Добрый день! Подскажите как сделать группировку в СКД только по верхнему уровню.
В колонках должны выводиться номенклатурные группы. У меня сейчас выводится группировка "Только иерархия".
получается типа Номенклатура1 | Номенклатура1(под заказ) | Номенклатура 2 | Номенклатура2(под заказ).
А нужно: Номенклатура1 | Номенклатура 2

MuI_I_Ika

Я так понял нужно сделать группировку только для верхнего уровня родителей. Может быть попробовать сделать для этих целей отдельное поле и получать там группы верхнего уровня.

Besart

на вкладке - выбранные поля, в области детальных записей, отключите ненужные поля

beginner1

ВЫБРАТЬ
   Номенклатура.Ссылка
ПОМЕСТИТЬ НоменклатурныеГруппы
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
   И Номенклатура.ЭтоГруппа
;

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

Не получается соединить не через В()... что в принципе понятно, нужна конструкция
ТоварыОстатки.Номенклатура.Родитель В (НоменклатурныеГруппы.Ссылка)
Или ТоварыОстатки.Номенклатура.Родитель.Родитель В (НоменклатурныеГруппы.Ссылка)
Или и т.д.
В Иерархии - выдает ошибку.
Подскажите как сделать?

Besart


beginner1

Цитата: MuI_I_Ika от 14 окт 2013, 12:16
Я так понял нужно сделать группировку только для верхнего уровня родителей. Может быть попробовать сделать для этих целей отдельное поле и получать там группы верхнего уровня.
Подскажите, пожалуйста, как это сделать?

Besart

ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка,
Номенклатура.ЭтоГруппа
ПОМЕСТИТЬ Ном
ИЗ
Справочник.Номенклатура КАК Номенклатура

ИНДЕКСИРОВАТЬ ПО
Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
ОстаткиНоменклатурыОстатки.КоличествоОстаток
ПОМЕСТИТЬ Остатки
ИЗ
РегистрНакопления.ОстаткиНоменклатуры.Остатки(
,
Номенклатура В
(ВЫБРАТЬ
Ном.Ссылка
ИЗ
Ном КАК Ном)) КАК ОстаткиНоменклатурыОстатки

ИНДЕКСИРОВАТЬ ПО
Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Ном.Ссылка,
Остатки.КоличествоОстаток
ИЗ
Остатки КАК Остатки
ЛЕВОЕ СОЕДИНЕНИЕ Ном КАК Ном
ПО (Ном.Ссылка = Остатки.Номенклатура)
ГДЕ
Ном.ЭтоГруппа

beginner1

И результат запроса пустой, т.к. в регистре нет групп, там одни элементы

Besart

ВЫБРАТЬ
Номенклатура.Ссылка КАК Ссылка,
Номенклатура.Родитель
ПОМЕСТИТЬ Ном
ИЗ
Справочник.Номенклатура КАК Номенклатура

ИНДЕКСИРОВАТЬ ПО
Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОстаткиНоменклатурыОстатки.Номенклатура КАК Номенклатура,
ОстаткиНоменклатурыОстатки.КоличествоОстаток
ПОМЕСТИТЬ Остатки
ИЗ
РегистрНакопления.ОстаткиНоменклатуры.Остатки КАК ОстаткиНоменклатурыОстатки

ИНДЕКСИРОВАТЬ ПО
Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Ном.Родитель,
СУММА(Остатки.КоличествоОстаток) КАК КоличествоОстаток
ИЗ
Ном КАК Ном
ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки
ПО Ном.Ссылка = Остатки.Номенклатура
ГДЕ
Остатки.КоличествоОстаток > 0

СГРУППИРОВАТЬ ПО
Ном.Родитель

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск