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

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

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

Автор: twilight_dream 18.07.16, 16:01

Здравствуйте.
Прошу подсказать, что я не так делаю и как написать правильно? Нужно приход поделить на 1.2 в запросе...

...
|Сумма = Регистр.Бонусы.Сумма;
|Функция СуммаПриход = Приход(Сумма);
|Функция БонусДляБП =  Сумма(СуммаПриход/1.2) Когда (Док.ПериодБонусирования=ПериодБонусирования);


В результате имею:
Цитата
Функция БонусДляБП = Сумма(СуммаПриход <<?>> /1.2) Когда (Док.ПериодБонусирования=ПериодБонусирования);
Запрос[19] : Ошибка в выражении 'СуммаПриход'


не могу понять как правильно написать арифметическое выражение...

Автор: Sharzem 18.07.16, 17:03

|Сумма = Регистр.Бонусы.Сумма;
|Функция СуммаПриход = Приход(Сумма);
|Функция БонусДляБП =  Сумма(Запрос.СуммаПриход/1.2) Когда (Док.ПериодБонусирования=ПериодБонусирования);

Автор: twilight_dream 18.07.16, 19:29

Цитата(Sharzem @ 18.07.16, 18:03) *
Запрос.СуммаПриход

Пробовал... Ошибку не дает, но Запрос.СуммаПриход тогда получается пустая, то есть выражение дает 0

Автор: nysysimara 19.07.16, 7:24

а если так:

|Функция СуммаПриход = Приход(Сумма);
|Функция БонусДляБП =   (Приход(Сумма)/1.2) Когда (Док.ПериодБонусирования=ПериодБонусирования);

Автор: sava1 19.07.16, 8:55

В КЖК написано

Цитата
В функциях: Сумма, Среднее, Максимум, Минимум в качест­ве аргумента возможно использование арифметического выражения в терминах встроенного языка.


Автор: twilight_dream 19.07.16, 11:40

Значение:

 Сумма(Запрос.СуммаПриход/1.2)

На самом деле вычисляется, но только на самом нижнем уровне группировки. Как заставить суммироваться и в верхние уровни?

Автор: endru 19.07.16, 13:02

Цитата(nysysimara @ 19.07.16, 7:24) *
|Функция БонусДляБП = (Приход(Сумма)/1.2) Когда (Док.ПериодБонусирования=ПериодБонусирования);


Вам же написали как правильно. Так должно работать.

Автор: korol1091 19.07.16, 13:25

Извините, но использование "магических чисел" - это дурной тон в программировании.

Автор: Sharzem 19.07.16, 14:09

Цитата(twilight_dream @ 19.07.16, 12:40) http://pro1c.org.ua/index.php?act=findpost&pid=114610
использование "магических чисел" - это дурной тон

Поддерживаю icon_beer17.gif

Автор: twilight_dream 19.07.16, 16:15

Цитата(Sharzem @ 19.07.16, 15:09) http://pro1c.org.ua/index.php?act=findpost&pid=114621,
Не говорите загадками. Никакой магии здесь нет. Дурной тон в программировании - это критикуя ничего не предложить. Критикуя - предлагай. Это будет хороший тон.

Автор: korol1091 20.07.16, 9:18

Боже, боже.
Лида, Лида.

http://pro1c.org.ua/redirect.php?https://ru.wikipedia.org/wiki/Магическое_число_(программирование)

Автор: Acid 20.07.16, 9:33

twilight_dream @ Вчера, 17:15 *,
Все, что где-то вычисляется, коэффициенты всякие и т.п - это "грабли". Числа должны быть реальные. То есть хранится в базе.
Все, что "расчетное" имеет погрешности и это никак нельзя проверить и доказать.

Автор: mister-x 20.07.16, 11:10

робив через свою функцію, яку "розміщав" у запиті, тобто

Сумма(СвояФункція())

Автор: Sharzem 20.07.16, 12:10

Цитата(twilight_dream @ 19.07.16, 17:15) *
В данном случае вопрос "как", но вы его не поняли


Поняли, но нужно угадывать.
В Вашем коде о группировках хоть что-то изложено ?

Вам лень выложить полный текст запроса.

Читаем правила:
Цитата
16. Не нужно давать пространственные ответы либо задавать встречные вопросы в технических форумах, ответы на которые не помогут сути дела.

Так что давайте полный код, мое мнение, проблема в группировках. Не увидев текста нельзя дать ответ на вопрос "Как".

Автор: Cthulhu 15.08.16, 14:50

прим.: старайтесь избегать вычислений в тексте запроса. причина (в том числе) - искажение результата из-за "принудительного" округления таких вычислений при выполнении такого запроса.

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