Имя: Пароль:
1C
1С v8
Нюансы работы с СКД
,
0 chihpyh
 
15.12.16
12:39
А не сталкивался ли кто-то с такой вот ситуацией. Есть отчет, написанный на СКД. В нем происходит группировка по ряду полей. И надо добавить новую колонку, в которой, грубо говоря, складываются значения соседних полей. Проблема в том, что значения эти не совпадают по значению группировки. Например
Заказ Поле1 = 100, Поле2 = 150
Регистратор1 Поле1 =100, Поле2 = 0
Регистратор2 Поле1 =0, Поле2 = 150
И надо получить Поле3, которое будет являться суммой полей 1 и 2. Ясно, что на уровне Регистратор такого мы не получим. Но если мы выводим отчет не разворачивая до регистратора, показывая только группировку Заказ - почему там нельзя так сделать?
Пробовал и через вычисляемые поля и группировку в запросе добавлять и сами поля прописывал в запросе - ничего не помогает. Это вообще реализуемо?
1 Cyberhawk
 
15.12.16
12:41
Внятную картинку вставь, на которой будет видно, как есть и как хочется
2 Defender aka LINN
 
15.12.16
12:57
Потому что у тебя там не 0 а null
3 chihpyh
 
15.12.16
13:09
Пример: https://yadi.sk/d/rfKZzz_P33aP4M
А так-то там все заЕСТЬNULLено. Считать-то оно считает, но неправильно.
4 chihpyh
 
17.12.16
00:55
Извиняюсь, неправильно задачу обисовал. Пытался упростить, а получилось, что усложнил. На самом деле мне надо на уровне группировки Заказ проверить выражение Сумма1 + Сумма2 = 0 и если это выражение выполняется, то строку не выводить. Группировка Регистратор в этот момент не включена.
Может быть можно перехватить работу на этапе вывода данных в отчет, чтобы поправить данные?
5 nordbox
 
17.12.16
05:55
Ну так и выводи. Кто тебе мешает???
Есть вкладочка, Вычисляемые поля в ней есть колоночка Выражение и в перед ))
6 chihpyh
 
19.12.16
10:16
Дык написал же: пробовал через вычисляемые поля. Проблема в том, что вычисляет он их, видимо, на уровне Регистратор. А дальше идет тупо суммирование по группировкам. Т.е. получается картинка:
Заказ1 Сумма1 = 100 Сумма2 = -100 Сумма3 = 0
Регистратор1 Сумма1 = 100 Сумма2 = 0 Сумма3 = 100
Регистратор2 Сумма1 = 0 Сумма2 = -100 Сумма3 = -100
Он делает проверку на уровне Регистратор и там условие не выполняется. А на уровне Заказ уже проверку не делает и преспокойно выводит эту строку, несмотря на то, условие выполняется: Сумма3 = 0
7 Defender aka LINN
 
19.12.16
12:08
(6) Какое еще нафиг условие?
8 ТупойЖадный
 
19.12.16
12:11
Пригласите программиста (R)
9 polymorph
 
19.12.16
12:24
насколько я знаю, в скд все условия применяются на уровне строк. единственный вариант могу предложить в запросе сделать внутреннее соединение с вложенным запросом где будет то же самое только сгруппированное по заказам с посчитанной суммой3 и условием сумма3 <> 0 соединенное по заказу с основным запросом.
10 mistеr
 
19.12.16
12:32
(6) Сделай ресурс: СУММА(Сумма1) + СУММА(Сумма2)
11 Радим1987
 
19.12.16
12:39
ВычислитьГруппировкойМассив()
12 chihpyh
 
20.12.16
11:34
(9) Кажется в таком варианте отрежется нижняя группировка. А иногда она требуется.
(10) Сделал, не помогло.
13 mistеr
 
20.12.16
18:39
(12) Что не помогло? На уровне заказа 0 выходит?
14 chihpyh
 
20.12.16
19:04
Настройки надо в стандартные скидывать... Вот я тормоз.