Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
1 / 1 / 0
Регистрация: 10.10.2018
Сообщений: 150

Отчет ABC. Группировка строк в отчете.

16.10.2018, 13:14. Показов 2717. Ответов 47
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Переделываю отчет ABC. Но когда делаю группировку строк,то ABC не считается для каждой номенклатуры. Помогите пожалуйста разобраться.База ERP периписаная.
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
ВЫБРАТЬ
    Номенклатура.Ссылка КАК Номенклатура,
    ВариантыИсполнения.Ссылка КАК ВариантИсполнения
ПОМЕСТИТЬ втНоменклатура
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыИсполнения КАК ВариантыИсполнения
        ПО Номенклатура.Ссылка = ВариантыИсполнения.Владелец
{ГДЕ
    Номенклатура.Ссылка.* КАК Номенклатура}
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    КурсыВалютСрезПоследних.Валюта,
    КурсыВалютСрезПоследних.Курс
ПОМЕСТИТЬ втКурсВалюты_Период_1
ИЗ
    РегистрСведений.КурсыВалют.СрезПоследних({(&КонПериода_1)}, ) КАК КурсыВалютСрезПоследних
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СУММА(ЕСТЬNULL(ПродажиОбороты_П1_Ассортимент_1.КолОборот, 0)) КАК КолОборот_П1_Ассортимент_1,
    СУММА(ВЫБОР
            КОГДА &ВыводитьСуммыРеализации
                ТОГДА ЕСТЬNULL(ПродажиОбороты_П1_Ассортимент_1.СуммаОборот, 0)
            ИНАЧЕ ЕСТЬNULL(ПродажиОбороты_П1_Ассортимент_1.КолОборот, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) * ЕСТЬNULL(втКурсВалюты_Период_1.Курс, 0)
        КОНЕЦ) КАК СуммаОборот_П1_Ассортимент_1,
    СУММА(ВЫБОР
            КОГДА &ВыводитьСуммыРеализации
                ТОГДА ЕСТЬNULL(ПродажиОбороты_П1_Ассортимент_1.МаржаОборот, 0)
            ИНАЧЕ ЕСТЬNULL(ПродажиОбороты_П1_Ассортимент_1.КолОборот, 0) * ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) * ЕСТЬNULL(втКурсВалюты_Период_1.Курс, 0)
        КОНЕЦ) КАК МаржаОборот_П1_Ассортимент_1,
    ПродажиОбороты_П1_Ассортимент_1.Номенклатура КАК Ном,
    ПродажиОбороты_П1_Ассортимент_1.ВариантИсполнения КАК ВариантИсполнения,
    ПродажиОбороты_П1_Ассортимент_1.ПериодМесяц,
    ПродажиОбороты_П1_Ассортимент_1.ПериодГод
ПОМЕСТИТЬ втПродажиОбороты_П1_Ассортимент_1
ИЗ
    РегистрНакопления.ПродажиОбороты.Обороты({(&НачПериода_1)}, {(&КонПериода_1)}, Авто, {(Номенклатура).* КАК Номенклатура}) КАК ПродажиОбороты_П1_Ассортимент_1
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
                {(&КонПериода_1)},
                ТипЦен = &ТипЦен
                    И ЕдИзм = Номенклатура.БазоваяЕдИзм
                    И КатегорияЦены = ЗНАЧЕНИЕ(Справочник.КатегорииЦен.ПустаяСсылка)) КАК ЦеныНоменклатурыСрезПоследних
            ЛЕВОЕ СОЕДИНЕНИЕ втКурсВалюты_Период_1 КАК втКурсВалюты_Период_1
            ПО ЦеныНоменклатурыСрезПоследних.Валюта = втКурсВалюты_Период_1.Валюта
        ПО ПродажиОбороты_П1_Ассортимент_1.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
            И ПродажиОбороты_П1_Ассортимент_1.ВариантИсполнения = ЦеныНоменклатурыСрезПоследних.ВариантИсполнения
 
СГРУППИРОВАТЬ ПО
    ПродажиОбороты_П1_Ассортимент_1.Номенклатура,
    ПродажиОбороты_П1_Ассортимент_1.ВариантИсполнения,
    ПродажиОбороты_П1_Ассортимент_1.ПериодМесяц,
    ПродажиОбороты_П1_Ассортимент_1.ПериодГод
;
 
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ЕСТЬNULL(втПродажиОбороты_П1_Ассортимент_1.СуммаОборот_П1_Ассортимент_1, 0) КАК СуммаОборот_П1_Ассортимент_1,
    ЕСТЬNULL(втПродажиОбороты_П1_Ассортимент_1.КолОборот_П1_Ассортимент_1, 0) КАК КолОборот_П1_Ассортимент_1,
    втНоменклатура.Номенклатура,
    ЕСТЬNULL(втПродажиОбороты_П1_Ассортимент_1.МаржаОборот_П1_Ассортимент_1, 0) КАК МаржаОборот_П1_Ассортимент_1,
    втНоменклатура.ВариантИсполнения,
    втПродажиОбороты_П1_Ассортимент_1.ПериодМесяц,
    втПродажиОбороты_П1_Ассортимент_1.ПериодГод
ИЗ
    втНоменклатура КАК втНоменклатура
        ЛЕВОЕ СОЕДИНЕНИЕ втПродажиОбороты_П1_Ассортимент_1 КАК втПродажиОбороты_П1_Ассортимент_1
        ПО втНоменклатура.Номенклатура = втПродажиОбороты_П1_Ассортимент_1.Ном
            И втНоменклатура.ВариантИсполнения = втПродажиОбороты_П1_Ассортимент_1.ВариантИсполнения
-запрос
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
Перем тзНоменклатура;
 
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    КомпоновщикМакета     = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,
    КомпоновщикНастроек.Настройки, , ,
    Тип("ГенераторМакетаКомпоновкиДанных"));
 
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
    ДокументРезультат.Очистить();
 
    ТаблицаРезультат = Новый ТаблицаЗначений;
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; 
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);  
    ДокументРезультат.Очистить();
 
    КомпоновщикМакета   = Новый КомпоновщикМакетаКомпоновкиДанных;   
    МакетКомпоновки     = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки,ДанныеРасшифровки );
    
 
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;      
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,,ДанныеРасшифровки);
    ДокументРезультат.Очистить();
 
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; 
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
    
    Попытка
        Для Каждого _Строка Из ТаблицаРезультат Цикл
            Если Не ЗначениеЗаполнено(_Строка.АБЦ) Тогда
                Продолжить;
            КонецЕсли;
            Если глПустоеЗначение(_Строка.Номенклатура) Тогда
                Продолжить;
            КонецЕсли;
            Если _Строка.Номенклатура.ЭтоГруппа Тогда
                Продолжить;
            КонецЕсли;
                _НС  = тзНоменклатура.Добавить();
            _НС.Номенклатура = _Строка.Номенклатура;
            Если _Строка.АБЦ = 1 Тогда
                _НС.Статус = "A"
            ИначеЕсли _Строка.АБЦ = 2 Тогда  
                _НС.Статус = "B"        
            ИначеЕсли _Строка.АБЦ = 3 Тогда
                _НС.Статус = "C"            
            КонецЕсли;
        КонецЦикла;
    //Исключение
    Попытка  Для Каждого _Строка Из ТаблицаРезультат Цикл
            Если Не ЗначениеЗаполнено(_Строка.АБЦ_Маржа) Тогда
                Продолжить;
            КонецЕсли;
            Если глПустоеЗначение(_Строка.Номенклатура) Тогда
                Продолжить;
            КонецЕсли;
            Если _Строка.Номенклатура.ЭтоГруппа Тогда
                Продолжить;
            КонецЕсли;
            _НС  = тзНоменклатура.Добавить();
            _НС.Номенклатура = _Строка.Номенклатура;
            Если _Строка.АБЦ_Маржа = 1 Тогда
                _НС.Статус = "A"
            ИначеЕсли _Строка.АБЦ_Маржа = 2 Тогда  
                _НС.Статус = "B"        
            ИначеЕсли _Строка.АБЦ_Маржа = 3 Тогда
                _НС.Статус = "C"            
    КонецЕсли;
    КонецЦикла;
    
    Исключение
Для Каждого _Строка Из ТаблицаРезультат Цикл
            Если Не ЗначениеЗаполнено(_Строка.АБЦ_Кол) Тогда
                Продолжить;
            КонецЕсли;
            Если глПустоеЗначение(_Строка.Номенклатура) Тогда
                Продолжить;
            КонецЕсли;
            Если _Строка.Номенклатура.ЭтоГруппа Тогда
                Продолжить;
            КонецЕсли;
            _НС  = тзНоменклатура.Добавить();
            _НС.Номенклатура = _Строка.Номенклатура;
            Если _Строка.АБЦ_Кол = 1 Тогда
                _НС.Статус = "A"
            ИначеЕсли _Строка.АБЦ_Кол = 2 Тогда  
                _НС.Статус = "B"        
            ИначеЕсли _Строка.АБЦ_Кол = 3 Тогда
                _НС.Статус = "C"            
            КонецЕсли;
            КонецЦикла;
        КонецПопытки;
    Исключение Сообщить("");
        КонецПопытки
КонецПроцедуры
 
Процедура ЗафиксироватьКатегории() Экспорт
    
    _МассивНаУдаление = Новый Массив;
    
    Для Каждого _Строка Из тзНоменклатура Цикл
        Если глПустоеЗначение(_Строка.Номенклатура) Или глПустоеЗначение(_Строка.Статус) Тогда
            _МассивНаУдаление.Добавить(_Строка);  
        КонецЕсли;
    КонецЦикла;
    
    Для Каждого _СтрокаУдалить Из _МассивНаУдаление Цикл
        тзНоменклатура.Удалить(_СтрокаУдалить);
    КонецЦикла;
    
    Для Каждого _Строка Из тзНоменклатура Цикл
        
        _Номенклатура                             = _Строка.Номенклатура; 
        _НоменклатураОб                           = _Номенклатура.ПолучитьОбъект();
        
        _НоменклатураОб.ПС_КатегорияДляABCАнализа = _Строка.Статус; 
        
        Попытка
            _НоменклатураОб.Записать();
        Исключение
            глСообщить(_НоменклатураОб,ОписаниеОшибки());
        КонецПопытки;   
        
    КонецЦикла;
        
КонецПроцедуры
 
тзНоменклатура = Новый ТаблицаЗначений;
тзНоменклатура.Колонки.Добавить("Номенклатура");
тзНоменклатура.Колонки.Добавить("Статус");
-модуль объекта
Миниатюры
Отчет ABC. Группировка строк в отчете.  
Вложения
Тип файла: zip отчетПОМесяцам.zip (36.5 Кб, 2 просмотров)
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.10.2018, 13:14
Ответы с готовыми решениями:

Группировка в отчете
Проблема вот в чем у меня есть документ задание у него номер формируется вот в таком виде Пл-14-00001-2-2 когда делаю отчет отбираю вот...

Группировка колонок в отчете
Доброго дня! Пишу отчет по жалобам, задача сделать группировку по подразделениям. Когда в запросе встречается второй, третий и тд....

Группировка полей в отчете
помогите пожалуйста решить задачу по 1С : дана внешняя обработка , нужно чтоб все в отчете поля(...

47
Эксперт 1С
6614 / 1763 / 642
Регистрация: 16.01.2015
Сообщений: 7,312
17.10.2018, 16:27
Студворк — интернет-сервис помощи студентам
Лютик23, Вы пробовали сделать как в моем сообщении от вчера 20.00? Попробуйте. Теоретически выигрыш по времени может быть значительным
0
1 / 1 / 0
Регистрация: 10.10.2018
Сообщений: 150
18.10.2018, 09:54  [ТС]
polax, Если так сделать,то я потом группировку не могу делать
0
Эксперт 1С
6614 / 1763 / 642
Регистрация: 16.01.2015
Сообщений: 7,312
18.10.2018, 10:11
Лютик23, Не понял какую группировку и, главное, почему нельзя ее сделать
0
1 / 1 / 0
Регистрация: 10.10.2018
Сообщений: 150
18.10.2018, 10:17  [ТС]
polax, Вот я беру его в запросе,но в полях он не появляется
Миниатюры
Отчет ABC. Группировка строк в отчете.  
0
1 / 1 / 0
Регистрация: 10.10.2018
Сообщений: 150
18.10.2018, 12:07  [ТС]
polax, все нашла ошибку

Добавлено через 18 минут
polax, все сделала по периоду.Но если убрать номенклатура по иерархии,то все равно долго формируется

Добавлено через 1 час 23 минуты
polax, Если я ставлю Иерархию по номенклатуре,то авс не считается по всей номенклатуре,а если убираю то считает. В чем проблема?
0
1 / 1 / 0
Регистрация: 10.10.2018
Сообщений: 150
23.10.2018, 13:45  [ТС]
Проблема актуальная
0
Эксперт 1С
6614 / 1763 / 642
Регистрация: 16.01.2015
Сообщений: 7,312
23.10.2018, 19:24
Лютик23, Проблема в скорости или необходимости групп?
ну и посмотрите все-таки стандартный отчет. Не знаю ЕРП, но знаю, что это флагман продуктов 1С. А многие программы - это тупо вырезка определенного функционала из ЕРП. Например УТ. Так вот, в УТ есть возможность настройки стандартного отчета АВС классификации, практически по любому периоду, в том числе и месяц. неужели ЕРП этого не умеет?
0
1 / 1 / 0
Регистрация: 10.10.2018
Сообщений: 150
24.10.2018, 08:14  [ТС]
polax, В стандартном отчете список,а мне надо таблицу. Чтобы месяца были сверху. Группировка нужна именно такая по номенклатуре и варианту исполнения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
24.10.2018, 08:14
Помогаю со студенческими работами здесь

Группировка по датам в отчете
Мой первый пост и сразу же с просьбой о помощи. Делаю отчет,в 1с 8.2, в котором необходимо вывести информацию по датам и посчитать итоги...

Группировка элементов в отчете
помогите пожалуйста сгруппировать элементы в группу "Оплата труда произв. персонала" - этого названия самого в 1с нет.(относится к ...

Группировка полей в отчете СКД
Здравствуйте. Делаю отчеты в СКД в собственной конфигурации. Столбцы в отчете: Объект, Договор, ГИП,РПО. Нужно сгруппировать данные...

Группировка полей в отчете СКД
Здравствуйте. В собственной конфигурации есть отчет с полями: Табномер, ФамилияИмяОтчество, Должность, Подразделение,Объект,Договор,...

Отчет СКД. Группировка записей по периоду.
Всем привет! Создал отчет на СКД,не получается адекватно настроить его...Хочу чтобы для каждого периода значение ресурса отображалось в 1...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
48
Ответ Создать тему
Новые блоги и статьи
Модель здравосохранения 17. Планы на выгорание
anaschu 23.05.2026
Вот конкретная схема реализации: В классе Работник добавить: накопленнаяУсталость — растёт каждый час работы, снижается в перерывы и болезни коэффициентПрезентеизма — снижает продуктивность. . .
Изменение цветов в палитре gif файла aka фавикона
russiannick 23.05.2026
Изменение цветов в палитре gif файла, юзаемого как фавиконка в составе html-файла, помещенная в base64, средствами нативного Java Script, навеянное сном в майский день. Для работы необходим браузер,. . .
Модель здравосохранения 16. Слишком хорошие и здоровые сотрудники уходят, недовольные зарплатой
anaschu 23.05.2026
Отладка увольнений и настройка производительности Сегодня во второй половине дня разобрались с механикой увольнений и настроили коэффициент сложности заданий. Вот что было сделано. . . .
Как я стал коммунистом))) Модель сохранения здоровья сотрудников, запись блога номер 15
anaschu 23.05.2026
Внезапно хорошее здоровье сотрудников не нужно капиталистам?))
Модель здравоСохранения 15. Как мы чинили AnyLogic модель рабочего коллектива: сочленение диаграммы состояний болезней и поломок в ресурспул
anaschu 23.05.2026
Как мы чинили AnyLogic модель рабочего коллектива Сегодня разобрались с пятью багами, из-за которых модель либо падала с ошибкой, либо давала совершенно бессмысленные результаты. Каждый баг был. . .
Диалоги с ИИ
zorxor 23.05.2026
Насколько я понимаю - Вы - Искусственный Интеллект. Это так? Да, всё верно. Я — искусственный интеллект. Я представляю собой большую языковую модель, созданную для помощи в самых разных задачах. . . .
Модель здравосохранения 14. Собираем всю модель вместе.
anaschu 22.05.2026
Модель собрана. В будущих постах на видео я покажу, как она работает. В этом посте запускаем её, проверяем результаты и разбираем что можно с ней делать дальше. Перед запуском проверяем. . .
Модель здравоохранения 13. Добавление самой системы здравоохранения.
anaschu 22.05.2026
В предыдущем посте мы настроили болезни. Теперь добавим события, которые управляют здоровьем всего коллектива, а также настроим рабочий график и расчёт финансов. В Main создаём четыре события. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru