СКД деление на 0, вычисляемое поле

1. @Sonya 28 17.09.13 19:29 Сейчас в теме
Добрый день!
В отчете есть вычисляемое поле ПроцентНаценки = Сумма(ПродажнаяСуммаБезНДС-ОптоваяСуммаБезНДС)/Сумма(ОптоваяСуммаБезНДС)*100 (сам запрос не так важен, думаю).

В отчет попадают и услуги, у которых ОптоваяСуммаБезНДС равна 0. Соответственно для услуг видим в ячейке "Деление на 0". Можно эту надпись убрать, какой-то хитростью?

Понимаю, что не совсем "красиво", но сделать поле не вычисляемым не предлагать, там огромное выражение с выборами и прочее получится.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Kom-off 17.09.13 19:48 Сейчас в теме
(1)
В вычисляемом поле написать вот так:
ВЫБОР 
   КОГДА Сумма(ОптоваяСуммаБезНДС) <> 0 ТОГДА
      Сумма(ПродажнаяСуммаБезНДС-ОптоваяСуммаБезНДС)/Сумма(ОптоваяСуммаБезНДС)*100
   ИНАЧЕ
      0
КОНЕЦ
provadyuga; user2068269; oleg-ts; yurazyuraz; edimedinvest; Fatenm; gybson; Yan_Malyakov; user640247; annagolinskaya; freeek; 1c_developer; Alister; +13 Ответить 3
6. PrinzOfMunchen 84 17.09.13 19:53 Сейчас в теме
(3) Kom-off, Вы меня немного опередили. ))
12. user640247 23.07.18 23:02 Сейчас в теме
(3)
ВЫБОР
КОГДА Сумма(ОптоваяСуммаБезНДС) <> 0 ТОГДА
Сумма(ПродажнаяСуммаБезНДС-ОптоваяСуммаБезНДС)/Сумма(ОптоваяСуммаБезНДС)*100
ИНАЧЕ
0
КОНЕЦ


Спасибо! Круть.
15. baranchikov 15.07.24 09:40 Сейчас в теме
(3)
ВЫБОР
КОГДА Сумма(ОптоваяСуммаБезНДС) <> 0 ТОГДА
Сумма(ПродажнаяСуммаБезНДС-ОптоваяСуммаБезНДС)/Сумма(ОптоваяСуммаБезНДС)*100
ИНАЧЕ
0
КОНЕЦ


Спасибо большое! Столько лет Ваш ответ реально помогает!
5. PrinzOfMunchen 84 17.09.13 19:51 Сейчас в теме
(1) @Sonya, Ну так а если написать как в запросе:
ПроцентНаценки =
Выбор Когда Сумма(ОптоваяСуммаБезНДС)<> 0 Тогда 
Сумма(ПродажнаяСуммаБезНДС-ОптоваяСуммаБезНДС)/Сумма(ОптоваяСуммаБезНДС)*100 
Иначе Сумма(ПродажнаяСуммаБезНДС-ОптоваяСуммаБезНДС)/100 (Ну или 0) 
Конец


Ну или как-то так:
ПроцентНаценки =
Выбор Когда НЕ Номенклатура.ЭтоУслуга  Тогда 
Сумма(ПродажнаяСуммаБезНДС-ОптоваяСуммаБезНДС)/Сумма(ОптоваяСуммаБезНДС)*100 
Иначе 
Сумма(ПродажнаяСуммаБезНДС-ОптоваяСуммаБезНДС)/100 (Ну или 0)
Конец


Насчет простановки фугкций "Сумма" сейчас точно не уточню, но в целом можно воспользоваться этим методом. Вычисляемые поля, как и ресурсы, поддерживают подобные конструкции.
Если так делать будет лень, то можно сделать условное оформление.
8. @Sonya 28 17.09.13 20:05 Сейчас в теме
(5) PrinzOfMunchen, ну вот так примерно и написала. По Суммам() у меня тоже были сомнения, но вроде цифры сходятся=)
А за идею с условным оформлением спасибо! Буду иметь ввиду.
2. Pavel_nv 17 17.09.13 19:46 Сейчас в теме
попробуйте число(Ваше выражение) или применить конструкцию ЕСЛИ делитель 0 то вернуть пустую строку
4. Alister 10 17.09.13 19:49 Сейчас в теме
Не знаю работает ли ЕСЛИ в вычисляемых полях, а ВЫБОР точно знаю.
7. @Sonya 28 17.09.13 19:59 Сейчас в теме
Kom-off, Alister, спасибо, выбор сработал.
9. ruho 26.06.14 10:10 Сейчас в теме
Не стал плодить темы, напишу здесь. Вот такое простенькое условие

ВЫБОР КОГДА ВыданоАвансов = 0 ТОГДА СуммаПоПлану-СуммаПолучено ИНАЧЕ СуммаПоПлану-ВыданоАвансов КОНЕЦ


Допустим ВыданоАвансов = 22000, СуммаПоПлану = 22000 ЗачтеноАвансов = 18000 СуммаПолучено = 18000

Не деление на 0, но всё таки.

Бюджетка. Есть СуммаПоПлану, которую готовы были потратить, СуммаПолучено то что в результате было потрачено, надо вычислить сколько освободилось средств которые можно перераспределить, т.е. ПоПлану - Потрачено. Если расчет произведен авансом, то проверяем полностью ли мы оплатили поставщику, т.е. СуммаПоПлану - ВыданоАвансов, если аванса нет, то мы от суммы по плану отнимаем сумма полученную контрагентом... беда в том, что даже если был расчет авансом, то колонка СуммаПотрачено так же присутствует и = ЗачтеноАвансов, причем лично у нас зачастую ВыданоАвансов<>ЗачтеноАвансов И при этом сумма не освобождается, так что необходимо из СуммаПоПлану - ВыданоАвансов. Если аванса нет, то всё нормально 22000 - 18000 = 4000 (ну т.е. мы не доплатили ОплатаПоставщиу = 18000), НО Если аванс есть то почему то он СНАЧАЛА вычисляет СуммаПоПлану-СуммаПолучено, а ПОТОМ то что получилось вычитает ВыданоАвансов и у меня получается -18000 в вычисляемом столбце (ОплатаПоставщику = 0) =D Причём это несколько раз тестировал, ставил вместо второго выражения допустим 200 и у меня получалось если ВыданоАвансов = 0, то 22000-18000 = 4000, если ВыданоАвансов <> 0, тогда 22000-18000-200 = 3800. Что я не так делаю? =)
10. MaxxiMiliSan 268 26.06.14 10:14 Сейчас в теме
ВЫБОР КОГДА =0 ТОГДА 0 ИНАЧЕ ВЫРАЖЕНИЕ
deni1982; kosta_ks; +2 Ответить
11. ruho 26.06.14 10:23 Сейчас в теме
Если Аванс = 0, это не значит что мы полностью оплатили договор, цифры просто для примера. Надо именно задать условие, что если проплата авансом, то ПоПлану- ВыданоАвансов, если проплачено не авансом, то ПоПлану-Потрачено. Но он почему то делает так, что если условие не выполняется, то берет второе выражение, если выполняется, то вычисляет первое, потом из того что получилось вычитает ВыданоАвансов.
13. ISP 21.10.22 13:56 Сейчас в теме
Можно ли как-то убрать "деление на 0" в СКД не меняя выражение расчетов итог и запрос. Слишком сложные формулы для изменения.
Пробовал через свойство текст на условие не значениезаполнено - не помогло
14. Jungle Murzik 28.09.23 15:07 Сейчас в теме
isnull тоже не помогло
Хотя ТипЗначения показывает null
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот