Версия для печати темы (https://pro1c.org.ua/index.php?s=c4aa3e89e11341266ca0eb233a9912bd&showtopic=36260)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Подсчет итогов в СКД от нижнего к верхнему уровню

Автор: oilriver 29.03.17, 12:23

Добрый день всем, есть следующая задача, рассчитать факт выполнения договора, в данном примере в договоре указано что необходимо продать 80 шт
товара 1, 2 и 3, обязательно нужно продать товара1 10 шт, товара 2 - 20 шт
как рассчитать итоги в СКД по нижней группировке?

1. По группировке ДОГОВОР план не выполнился, т.к. условие по продаже товара2 не выполнено, значит сумма бонусов 0
2. По группировке КОНТРАГЕНТ сложить все суммы бонусов ВЫПОЛНЕННЫХ договоров

Контрагент
договор
Товар план факт бонус
----------------------------------------------
Рога и копыта 0
----------------------------------------------
договор111 80 0
----------------------------------------------
Товар 1 10 15 150
----------------------------------------------
Товар 2 20 19 0
----------------------------------------------
Товар 3 10 100
----------------------------------------------


Уже 4 дня кручу агрегатную функцию ВычислитьВыражение(), но не выходит.
Подскажите в какую сторону двигаться, заранее сапсибо.


Автор: sava1 29.03.17, 12:51

Цитата(oilriver @ 29.03.17, 12:23) *
как рассчитать итоги в СКД по нижней группировке?


А где здесь нижняя группировка.
Вооще-то все итоги рассчитываются от нижней к верхней.
Бонус тут ИМХО вычисляемое поле. Зачем здесь ВычислитьВыражение?

Автор: oilriver 29.03.17, 13:01

Цитата(sava1 @ 29.03.17, 13:51) *
А где здесь нижняя группировка.
Вооще-то все итоги рассчитываются от нижней к верхней.
Бонус тут ИМХО вычисляемое поле. Зачем здесь ВычислитьВыражение?


Если в группировке по товарам, какое то условие не выполнилось, то договор считается не выполнен и естественно сумма бонуса 0, хотя суммы бонуса подсчитаны на уровне группировке товары

oilriver @ Сегодня, 13:58 * ,

вот таблицу немного подправил, а то пробелы съедает

Контрагент
договор
Товар----------------- план --факт --- бонус
Рога и копыта --------------------------0
----------------------------------------------
договор111 -----------80-----54------- 0
----------------------------------------------
Товар 1 ---------------10----- 15 ------150
----------------------------------------------
Товар 2 ---------------20----- 19------- 0
----------------------------------------------
Товар 3 ---------------0-------10--- --100
----------------------------------------------


Автор: sava1 29.03.17, 13:02

А как Вы собираетесь узнать, выполнилось условие или нет?

покажите запрос

Автор: oilriver 29.03.17, 13:05

Цитата(sava1 @ 29.03.17, 14:02) *
А как Вы собираетесь узнать, выполнилось условие или нет?


так я и тут хотел спросить, как можно в СКД рассчитать итог в верхней группировке исходя из нижней не просто сложением а с условием

Автор: sava1 29.03.17, 13:08

в запросе , где вычисляете бонус, добавьте поле - 1-выполнилось, 0 - не выполнилось
На верхних уровнях берите минимум() - соответственно, если хотя-бы одно условие не выполнено - у Вас будет 0, иначе 1.

Автор: oilriver 29.03.17, 13:17

Можно добавить булевое поле План выполнен, на уровне группировке товаров я ее вычисляю. Есть агрегатная функция КАЖДЫЙ() которая возвращает ЛОЖЬ если ЛОЖЬ встречается хоть один разв в наборе, что в принципе подходит

Есть у кого мысли как можно использовать ее для определения выполнения договора рассчитывая группировку по товарам?


Контрагент
договор
Товар----------------- план --факт --- бонус -------ПланВыполнен
Рога и копыта --------------------------0--------------ЛОЖЬ (получить)
------------------------------------------------------------------------------
договор111 -----------80-----54------- 0--------------ЛОЖЬ (получить)
------------------------------------------------------------------------------
Товар 1 ---------------10----- 15 ------150-------------ИСТИНА----------
------------------------------------------------------------------------------
Товар 2 ---------------20----- 19------- 0---------------ЛОЖЬ------------
-----------------------------------------------------------------------------
Товар 3 ---------------0-------10--- --100---------------ИСТИНА
----------------------------------------------------------------------------

Цитата(oilriver @ 29.03.17, 14:14) *
в запросе , где вычисляете бонус, добавьте поле - 1-выполнилось, 0 - не выполнилось
На верхних уровнях берите минимум() - соответственно, если хотя-бы одно условие не выполнено - у Вас будет 0, иначе 1.

нужно попробовать

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua