Имя: Пароль:
1C
1С v8
Работа с ресурсами в СКД
,
0 Svetlana_Kazan
 
20.02.20
16:58
Подскажите, пожалуйста, как организовать вывод отчета в нужном виде? Отчет написан на СКД. Необходимо итоги по группировкам по статьям подкорректировать. Если Статья1 имеет отрицательную сумму, то сумма в Статья2_1 должна быть равна нулю. При этом надо пересчитать сумму Статья2 и итоги, но детальные записи Статья2_1 не должны корректироваться(на данном уровне мы должны видеть отрицательные суммы). Попробовала через ресурсы, но в этом случае у меня и детальные записи с отрицательной суммой обнуляются, а мне надо только итоговую сумму обнулить.
https://pastenow.ru/f1049c481cd5c3b8603087e44f7a13a6
1 mikecool
 
20.02.20
17:00
создать отдельный ресурс, считать итог по нему, подменять итог в колонке
2 Svetlana_Kazan
 
20.02.20
17:21
(1) , а как подменять, подскажите, пожалуйста.
3 Svetlana_Kazan
 
20.02.20
17:34
(1) , я попыталась в процедура ПриКомпоновкеРезультата, но не получилось.
4 toypaul
 
гуру
21.02.20
08:53
Нужна картинка с настройками группировок
5 bolder
 
21.02.20
08:59
(0) Конечно можно, в ресурсах отдельные итоги считать, но (4) Конечно прав.
6 SleepyHead
 
гуру
21.02.20
09:47
выражение в ресурсе типа такго пробовали?

ВЫБОР КОГДА Сумма(хх)<0 ТОГДА 0 ИНАЧЕ Сумма(хх) КОНЕЦ
7 bolder
 
21.02.20
09:55
(6) Она же пишет, что выражение обнуляется, но везде.Поэтому и спрашиваем (4)(5) про группировки)
8 Svetlana_Kazan
 
21.02.20
11:00
9 Svetlana_Kazan
 
21.02.20
11:03
Создала Пользовательское поле с выражением:
Выбор
    Когда Статья = Значение(ПланСчетов.Управленческий.ОтчислениеНаУправление) И СуммаПлан < 0 И СистемныеПоля.Уровень = 1
        Тогда 0
    Иначе СуммаПлан
Конец

Но вопрос теперь в том, как пересчитывать Статья2? Значение я обнулила и итог по Статья2 надо уменьшить на значение в Статья2_1
10 toypaul
 
гуру
21.02.20
11:25
а теперь картинку что за детальные записи обнуляются. потому что в настройках только группировка по статье.
11 toypaul
 
гуру
21.02.20
11:27
сколько уровней в этом справочнике. с какого уровня обнуляем. и правильно ли я понял что все родительские записи нужно считать суммированием начиная с обнуленного?
12 Svetlana_Kazan
 
21.02.20
11:33
(11) , https://pastenow.ru/d5fc8cfcc61a1b1bff8fa319898f9e05
Все родительские записи нужно считать суммированием начиная с обнуленного
13 bolder
 
21.02.20
11:37
(8)Иерархия о статьям...И на каждом уровне иерахии свои итоги.Пятница перестает быть томной ))
14 Svetlana_Kazan
 
21.02.20
11:41
(10), обнуляются СуммаПлан, СуммаФакт, СуммаПрогноз. Но только на Итоговом уровне. Если брать не общие абстрагированные данные, то в моем случае Итого по статье надо обнулить, а детальные записи нет и т.д. И пересчитать до родителя самого верхнего уровня(для каждой статьи настраивается количество уровней).
15 bolder
 
21.02.20
11:50
(14) В СКД отсутствует настройка для для визуальной настройки таких итогов.Единственное , что могу предложить - сделать это на уровне запроса.
16 toypaul
 
гуру
21.02.20
11:57
(14) для каждой статьи свой уровень начиная с которого обнуляется?
17 Svetlana_Kazan
 
21.02.20
12:01
(16) , обнулять надо определенную статью Статья2_1, если Статья1 имеет отрицательное значение, Статья2 пересчитать.
18 Svetlana_Kazan
 
21.02.20
12:07
(16), Уровень = 1
19 toypaul
 
гуру
21.02.20
12:10
ничо я не понял

если под конкретную картинку, то

СуммаПлан = Сумма(СуммаПлан) Рассчитывать по = Статья
СуммаПлан = Сумма(ВЫБОР КОГДА Статья = Значение И Сумма(СуммаПлан) < 0 ТОГДА 0 ИНАЧЕ Сумма(СуммаПлан)) Рассчитывать по = Статья Иерархия
20 toypaul
 
гуру
21.02.20
12:12
если не сработает СуммаПлан = Сумма(ВЫБОР КОГДА Статья = Значение И Сумма(СуммаПлан) < 0 ТОГДА 0 ИНАЧЕ Сумма(СуммаПлан))

то скорее всего так

СуммаПлан = Сумма(ВычислитьВыражениеСГруппировкойМассив("ВЫБОР КОГДА Статья = Значение И Сумма(СуммаПлан) < 0 ТОГДА 0 ИНАЧЕ Сумма(СуммаПлан)","Статья")
21 SleepyHead
 
гуру
21.02.20
12:25
(7) Ну пятница же, почему бы и не.
22 SleepyHead
 
гуру
21.02.20
12:26
(17) Какой тут нафиг СКД, выгружайте запрос в таблицу и считайте, как вам надо. Потом грузите таблицу как внешний набор данных и выводите отчет. Возможно, запросом не получится.
23 Svetlana_Kazan
 
21.02.20
16:23
(22), ресурсы надо убрать получается и итоги свои строить вручную?
24 Svetlana_Kazan
 
21.02.20
16:53
(22), написала вот так, но видимо ресурсы все таки надо убирать из СКД:

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    
    //Получаем схему из макета
    СКДНастроек = ЭтотОбъект.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    //Запрос.
    ТекстЗапроса = СКДНастроек.НаборыДанных.НаборДанных1.Запрос;

    Запрос = Новый Запрос;
    Запрос.Текст = ТекстЗапроса;
    
    НастройкиСКД = СКДНастроек.ВариантыНастроек.Найти("Основной").Настройки;

    ЗначениеПараметраПериод = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("СтПериод"));
    Если ЗначениеПараметраПериод <> Неопределено Тогда
        Запрос.УстановитьПараметр("ДатаНачала", ЗначениеПараметраПериод.Значение.ДатаНачала);      
        Запрос.УстановитьПараметр("ДатаОкончания", ЗначениеПараметраПериод.Значение.ДатаОкончания);
    КонецЕсли;
    
    ЗначениеПараметраВидБюджета = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВидБюджета"));
    Если ЗначениеПараметраВидБюджета <> Неопределено Тогда
        Запрос.УстановитьПараметр("ВидБюджета", ЗначениеПараметраВидБюджета.Значение);      
    КонецЕсли;

    ЗначениеПараметраПериодРазделитель = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодРазделитель"));
    Если ЗначениеПараметраПериодРазделитель <> Неопределено Тогда
        Запрос.УстановитьПараметр("ПериодРазделитель", ЗначениеПараметраПериодРазделитель.Значение);      
    КонецЕсли;
    
    ЗначениеПараметраОрганизация = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Организация"));
    Если ЗначениеПараметраОрганизация <> Неопределено Тогда
        Запрос.УстановитьПараметр("Организация", ЗначениеПараметраОрганизация.Значение);      
    КонецЕсли;
    
    ЗначениеПараметраПодразделение = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Подразделение"));
    Если ЗначениеПараметраПодразделение <> Неопределено Тогда
        Запрос.УстановитьПараметр("Подразделение", ЗначениеПараметраПодразделение.Значение);      
    КонецЕсли;
    
    ЗначениеПараметраПроект = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Проект"));
    Если ЗначениеПараметраПроект <> Неопределено Тогда
        Запрос.УстановитьПараметр("Проект", ЗначениеПараметраПроект.Значение);      
    КонецЕсли;
    
    ЗначениеПараметраНачалоИстории = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоИстории"));
    Если ЗначениеПараметраНачалоИстории <> Неопределено Тогда
        Запрос.УстановитьПараметр("НачалоИстории", ЗначениеПараметраНачалоИстории.Значение);      
    КонецЕсли;

    ТабДанныхТЗ = Запрос.Выполнить().Выгрузить();

    СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    
    Настройки = КомпоновщикНастроек.ПолучитьНастройки();

    ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;

    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;    
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);    
    
    ВнешнийНаборДанных = Новый Структура("ТаблицаДанныхТЗ", ТабДанныхТЗ);
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешнийНаборДанных, ДанныеРасшифровки);
    
    ДокументРезультат.Очистить();
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
КонецПроцедуры
25 Андроны едут
 
21.02.20
17:03
(23) Скачав отчет, в качестве дополнительного бонуса вы узнаете, каким образом в отчетах на СКД можно скрыть отображение некоторых данных в выбранных группировках и зачем это нужно.

http://catalog.mista.ru/public/1070249/
26 Svetlana_Kazan
 
25.02.20
08:30
(25), скрыть просто я могу. У меня загвоздка в перерасчёта итогов родителя по иерархии.
27 АнализДанных
 
25.02.20
09:29
(0) В ресурсах напиши выражение
Выбор
Когда Минимум(Статья2_1)<0 Тогда 0
Иначе Сумма(Статья2_1) Конец
28 Svetlana_Kazan
 
27.02.20
12:34
(27) , Спасибо!
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший