Имя: Пароль:
1C
1С v8
Получить данные в разрезе номенклатуры
0 Nerevar86
 
27.03.23
14:51
Добрый вечер, форумчане.
Есть запрос, не подскажите можно ли его исправить так, чтобы я получил данные в разрезе номенклатуры?

ВЫБРАТЬ
	ХозрасчетныйОбороты.Субконто1 КАК Номенклатура,
	ХозрасчетныйОбороты.КоличествоОборотКт КАК КоличествоОборотКт
ПОМЕСТИТЬ ДанныеПродаж
ИЗ
	РегистрБухгалтерии.Хозрасчетный.Обороты(&H, &K, , Счет = &Счет90_01_2, &Номенклатура, , КорСчет = &КорСчет62p, ) КАК ХозрасчетныйОбороты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДанныеПродаж.Номенклатура КАК Номенклатура,
	ДанныеПродаж.КоличествоОборотКт КАК Продано,
	СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Материал,
	СпецификацииНоменклатурыИсходныеКомплектующие.Количество КАК Количество
ИЗ
	ДанныеПродаж КАК ДанныеПродаж
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие
		ПО (ДанныеПродаж.Номенклатура = СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка.Владелец)
1 Сергиус
 
26.03.23
00:49
(0)Что под этим подразумеваете? Сейчас вроде по номенклатуре и выводит)
2 eddy_n
 
26.03.23
07:54
У тебя сейчас каша из номенклатуры и "материалов". Не хватает в итоговом запросе Итоги ПО Номенклатура
3 Nerevar86
 
26.03.23
11:25
(2) у меня задача получить материалы номенклатуры, которые были затрачены при продаже. Я вот думаю немного не так данные получил.Что-то лишнее) Просто мне потом это нужно в иерархическое дерево делать на форме.
4 eddy_n
 
26.03.23
12:30
Лишнее - сразу отсекай, не пригодится.
5 Nerevar86
 
26.03.23
12:48
(4) https://screenshare.ru/s/KdCXtR6ZmouEXmagJAwMAo

у меня консоль так выдает, а мне значение Продано нужно в в главную строку.
6 Злопчинский
 
26.03.23
12:55
я в запросах на восьмерке ноль, но имхается что сгруппировать по номенклатуре
7 eddy_n
 
26.03.23
13:01
Кстати,заставил задуматься - а бывают ли неирархические деревья?
8 eddy_n
 
26.03.23
13:05
Тогда для начала видоизмени запрос Сумма(Продано) По ОБЩИЕ
9 eddy_n
 
26.03.23
13:12
Но мне почему-то представляется, что этого будет мало, поэтому сразу:
Сумма(Продано) По Номенклатура, Материал, ОБЩИЕ
10 Волшебник
 
26.03.23
13:50
(6) Здесь нужно добавить агрегатные функции для предложения ИТОГИ
11 Злопчинский
 
26.03.23
13:53
(7) неиерархические деревья = это типа камыш... или рогоза
12 Волшебник
 
26.03.23
14:06
(7) бывают графы, которые можно хранить в структуре типа ДеревоЗначений, но связи между вершинами могут позволять иметь несколько родителей и даже циклы
13 eddy_n
 
26.03.23
16:07
(12) Изначально подумалось - Теория графов наверное, но мысль озвучивать не стал.
14 Nerevar86
 
27.03.23
12:52
(13) Ну получилось что-то такое но тут проблема с оптимальностью запроса, потому что через толку делать это жесть сколько неявных соединений...Как бы оптимизировать, чтобы у меня выборка изначально ограничивалась по родителю.
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ХозрасчетныйОбороты.Субконто1 КАК Номенклатура,
    |    ХозрасчетныйОбороты.КоличествоОборотКт КАК КоличествоОборотКт
    |ПОМЕСТИТЬ ДанныеПродаж
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.Обороты(&H, &K, , Счет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ВыручкаЕНВД), &Номенклатура, Субконто1.Родитель.Родитель В (&гНапитки), КорСчет = ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.РасчетыСРозничнымиПокупателями), ) КАК ХозрасчетныйОбороты
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    ВЫБОР
    |        КОГДА СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка.Владелец.Родитель.Родитель.Родитель = &Пустой
    |            ТОГДА СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка.Владелец
    |    КОНЕЦ КАК Номенклатура,
    |    СпецификацииНоменклатурыИсходныеКомплектующие.Номенклатура КАК Материал,
    |    СпецификацииНоменклатурыИсходныеКомплектующие.Количество * ДанныеПродаж.КоличествоОборотКт КАК Количество
    |ИЗ
    |    Справочник.СпецификацииНоменклатуры.ИсходныеКомплектующие КАК СпецификацииНоменклатурыИсходныеКомплектующие,
    |    ДанныеПродаж КАК ДанныеПродаж
    |ГДЕ
    |    СпецификацииНоменклатурыИсходныеКомплектующие.Ссылка.Владелец = ДанныеПродаж.Номенклатура
    |ИТОГИ
    |    МАКСИМУМ(Количество)
    |ПО
    |    Номенклатура ИЕРАРХИЯ";
    
    Запрос.УстановитьПараметр("H", Период.ДатаНачала);
    Запрос.УстановитьПараметр("K", Период.ДатаОкончания);
    гНапитки = Новый Массив;
    гНапитки.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Горячие напитки"));
    гНапитки.Добавить(Справочники.Номенклатура.НайтиПоНаименованию("Горячие напитки Все"));    
    Запрос.УстановитьПараметр("гНапитки", гНапитки);
    Запрос.УстановитьПараметр("Номенклатура", ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура);
    Запрос.УстановитьПараметр("Пустой", Справочники.Номенклатура.ПустаяСсылка());
15 Nerevar86
 
27.03.23
12:54
Субконто1.Родитель.Родитель В (&гНапитки) вот это вот конструкция очень сильно мешает производительности запроса... Так что я бы хотел получать не все уровни в иерархии,а только определенный уровень номенклатуры. Есть номенклатура, а у нее есть комплектующие, вот мне нужно что-то вроде Номенклатура = Родитель, Комплектующие = Ребенок)
16 ИУБиПовиц
 
27.03.23
14:22
Предварительно во временную таблицы получите элементы которую хотите использовать в субконто1 и потом соединением или условие В(запрос к этой врем ), и субконто 1 же наверное выразить надо?
17 Nerevar86
 
27.03.23
17:23
(16) Вы имеете в виду через ВЫРАЗИТЬ() вместо использования условия ПланаВидовХарактеристик?
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.