Имя: Пароль:
1C
1С v8
Остатки и обороты по групам номенклатуры
0 Fenix102
 
04.02.14
08:49
В общем за период нужно собрать данные данные по группам номенклатуры,
            Запрос = Новый Запрос;
            Запрос.Текст =
            "ВЫБРАТЬ
            |    Номенклатура.Родитель КАК Родитель
            |ИЗ
            |    Справочник.Номенклатура КАК Номенклатура
            |
            |УПОРЯДОЧИТЬ ПО
            |    Родитель ИЕРАРХИЯ";
            Выборка = Запрос.Выполнить().Выбрать();
            Пока Выборка.Следующий() Цикл
                Если ЗначениеЗаполнено(Выборка.Родитель) Тогда
                    НоваяСтрока = ТабличнаяЧасть.Добавить();
                    НоваяСтрока.Номенклатура = Выборка.Родитель;
                    НоваяСтрока.УровеньРодителя = Выборка.Родитель.Уровень();
                    Запрос2 = Новый Запрос;
                    Запрос2.Текст =
                    "ВЫБРАТЬ
                    |    ОстатокТовараОстаткиИОбороты.Номенклатура,
                    |    ОстатокТовараОстаткиИОбороты.Отдел,
                    |    ОстатокТовараОстаткиИОбороты.ОстатокКонечныйОстаток,
                    |    ОстатокТовараОстаткиИОбороты.ОстатокОборот
                    |ИЗ
                    |    РегистрНакопления.ОстатокТовара.ОстаткиИОбороты КАК ОстатокТовараОстаткиИОбороты
                    |ГДЕ
                    |    ОстатокТовараОстаткиИОбороты.Отдел = &Магазин" ;
                    Запрос2.УстановитьПараметр("Отдел",Магазин);
                    
                КонецЕсли;
            КонецЦикла;
1 Fenix102
 
04.02.14
08:50
ой опечатка там где магазин.
Не могу понять как вывести все уровни с остатками и оборотами
2 Ярус
 
04.02.14
08:51
а объеденить 1 запрос со 2 религия не позволяет?
3 Ярус
 
04.02.14
08:52
и период задать бы да?
4 ZaprosMan
 
04.02.14
08:53
В одном запросе такого не получить.
Первым получаешь группы. Вторым в цикле, по группам получаешь остатки.
А куда вывести то?
В отчет?
5 Fenix102
 
04.02.14
08:54
(4) Мне в табличную часть
6 ZaprosMan
 
04.02.14
08:55
И условия на группу и период поставь.
7 ZaprosMan
 
04.02.14
08:56
Желательно в параметрах виртуальной таблицы.
8 Fenix102
 
04.02.14
08:57
(6) Вот в этом и вопрос какое условие?
|    ОстатокТовараОстаткиИОбороты.Номенклатура.Родитель = &Выборка.Родитель"
9 Ярус
 
04.02.14
08:59
(4) что правда?
в скд сваял за 1 минуту
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка
ПОМЕСТИТЬ Вт_Ном
ИЗ
    Справочник.Номенклатура КАК Номенклатура

;

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

в настройках вывода группировка по номенклатуре, с иерархией, норм выводит могу скрин скинуть
10 Ярус
 
04.02.14
09:02
11 ZaprosMan
 
04.02.14
09:03
Причем тут СКД?
12 Мимохожий Однако
 
04.02.14
09:03
ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.ЭтоГруппа = ИСТИНА
    И Номенклатура.Ссылка В ИЕРАРХИИ(&ВыбГруппа)

СГРУППИРОВАТЬ ПО
    Номенклатура.Ссылка
13 Ярус
 
04.02.14
09:05
(11) без скд тоже норм, добавить упорядочивание по иерархии и итоги.
14 Ярус
 
04.02.14
09:06
ну если совсем все печально то и в обработке можно обратиться к скд и получить из него уже готовый результат в таблицузначений, все лучше чем гонять запросы в цикле по тысячам позиций
15 Fenix102
 
04.02.14
09:08
(10) Сейчас попробую
16 Fenix102
 
04.02.14
09:16
(14) ?Вт_ном.ссылка
17 Fenix102
 
04.02.14
09:19
Таблица не найдена пишет,что делаю не правильно?
18 Ярус
 
04.02.14
09:22
если у тебя не отчет то в свой объект(обработка, док, ....) добавляешь макет скд, в нем пишешь код из (9), определяешь ресурсы, на закладке настроек вывода выводишь списком, добавляешь нужные поля, группировка данных по номенклатуре + иерархия

в коде пишешь

СКД = ЭтотОбъект.ПолучитьМакет(ИмяТвоегоМакета);
    КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных();
    КомпоновщикНастроек = ЭтотОбъект.НастройкиСКД;
    Настройки = КомпоновщикНастроек.Настройки;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, Настройки,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
    ТЗ = Новый ТаблицаЗначений;
    ПроцессорВывода =  Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВывода.УстановитьОбъект(ТЗ);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
    
В ТЗ попадет результат
19 Fenix102
 
04.02.14
09:38
(18) Если честно нифига не понятно, а не проще просто запросом?без макетов и т.д. в 7 просто написал без групп или группами и все хорошо, тута синтаксиси не очень знаю еще, как просто сделать запрос где все уровни с итогами не могу понять че то, можешь объяснить?
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн