Имя: Пароль:
1C
1С v8
СКД Выражение для пользовательского поля
,
0 ШримпРолл
 
29.07.16
11:12
Всем привет.
Создаю в СКД (Платформа 8.3) отчет. Есть следующие поля:
Приход, Расход и Остаток.
Приход и расход получаю из базы, а остаток должен вычисляться по формуле: приход - расход
Создаю пользовательское поле и прописываю в нем Выражение детальных записей "Приход-Расход". Получается
Приход|Расход|Остаток
500   |      |
---------------------
300   |      |
---------------------
      |400   |
----------------------
500   | 200  |  300

То-есть остаток считается только когда суммы есть в обоих колонках.
Как сделать, чтобы было :

500   |      |500
---------------------
300   |      |800
---------------------
      |400   |400
----------------------
500   | 200  |700
Помогите, пожалуйста?
1 Nuobu
 
29.07.16
11:13
ЕстьNull(Приход, 0) - ЕстьNull(Расход, 0)
2 ШримпРолл
 
29.07.16
11:16
Ого. Спасибо за столь быстрый ответ!
И действительно работает!
А реально сделать, чтобы он считал не только по текущей ст роке, а по всем предыдущим( типа баланс) ? Но не суммой (т.к. он посчитает вообще все) , а именно которые были до этой записи?
3 Горогуля
 
29.07.16
11:17
нарастающая сумма? гугл знает
4 ШримпРолл
 
29.07.16
11:18
Да. Наверное так называется.
Спасибо, сейчас почитаю)
5 Горогуля
 
29.07.16
11:18
или нарастающий итог. попробую в бардачке порыться
6 Nuobu
 
29.07.16
11:20
(4) То, что Горогуля советует, то нужно, но попробуй сначала посмотреть про ОстаткиИОбороты в СКД.
7 Горогуля
 
29.07.16
11:20
вроде оно

ВЫБРАТЬ
     КОЛИЧЕСТВО(ПродажиОбороты1.Номенклатура) КАК НомерСтроки,
     ПродажиОбороты.Номенклатура КАК Номенклатура,
     СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
ПОМЕСТИТЬ МатьИхОбороты
ИЗ
     РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты
          ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты1
          ПО ПродажиОбороты.Номенклатура <= ПродажиОбороты1.Номенклатура

СГРУППИРОВАТЬ ПО
     ПродажиОбороты.Номенклатура
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
     МатьИхОбороты.Номенклатура,
     МатьИхОбороты.КоличествоОборот,
     СУММА(МатьИхОбороты1.КоличествоОборот) КАК НарастающийОборот,
     МатьИхОбороты.НомерСтроки КАК НомерСтроки
ИЗ
     МатьИхОбороты КАК МатьИхОбороты
          ЛЕВОЕ СОЕДИНЕНИЕ МатьИхОбороты КАК МатьИхОбороты1
          ПО МатьИхОбороты.НомерСтроки >= МатьИхОбороты1.НомерСтроки

СГРУППИРОВАТЬ ПО
     МатьИхОбороты.Номенклатура,
     МатьИхОбороты.КоличествоОборот,
     МатьИхОбороты.НомерСтроки

УПОРЯДОЧИТЬ ПО
     НомерСтроки
8 ШримпРолл
 
29.07.16
11:26
Неслабо))
Я думал, там парой строчек кода обойдется. Сейчас буду тестить. Отпишусь по результатам.
Спасибо!
9 Nuobu
 
29.07.16
11:28
10 Горогуля
 
29.07.16
11:28
(8) нарастающий итог в запросе - это прям классическая задача, которая без бутылки не решается ;) как и нумерация строк. может, какая-то магия СКД есть, но я с ней не знаком
11 Nuobu
 
29.07.16
11:29
(10) Есть такая магия. Вот она:
http://forum.infostart.ru/forum86/topic126553/
12 Горогуля
 
29.07.16
11:30
(11) пасиба
13 ШримпРолл
 
29.07.16
11:57
Большое спасибо, товарищи!
Почти победил.
Сейчас все как надо считается и выводится, за исключением случаев, когда нарастающий итог = 0. В таком случае пустая строка. Где я опять косячу?
Выражение детальных записей:
ЕстьNull(ВычислитьВыражение("Сумма(ЕстьNull(Приход, 0) - ЕстьNull(Расход, 0))", , , "Первая", "Текущая"), 0)
Выражение итоговых записей:
ЕстьNull(Сумма(Приход) - Сумма(Расход), 0)
14 Nuobu
 
29.07.16
12:15
(13) Условное оформление. Там ищи представление нуля.
15 ШримпРолл
 
29.07.16
12:20
Да. Дело было в этом.
Огромное спасибо!
Nuobu и Горогуля, вы супер!