Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Работа с ресурсами в СКД

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

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

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

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

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

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

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

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

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

    ТекстЗапроса = СКДНастроек.НаборыДанных.НаборДанных1.Запрос;

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

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

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

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
Здесь можно задать вопрос "Как сделать?" и получить кучу ответов, что тебе это делать не надо. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.