|
v7: Функция в запросе в 1с 7.7 | ☑ | ||
---|---|---|---|---|
0
Лиза777
26.04.18
✎
13:01
|
Функция ЛитрыНалИзСовместнойОплатыСБонусами = Сумма ((СуммаПокупки*100)/((ОплаченоБонусами/10+СуммаПокупки)*Литры/100))
вылетает программа на выполнении такого запроса. Пробовала упрощать до (Сумма+10) - так нормально, но как только ставлю (Сумма+10) * 100 вылетает 1с-ка. Никак такое не запихать в функцию? |
|||
1
Kigo_Kigo
26.04.18
✎
13:04
|
А нолик там деление не втесался?
|
|||
2
Лиза777
26.04.18
✎
13:07
|
тоже думала про это, поэтому стала упрощать.
|
|||
3
Лиза777
26.04.18
✎
13:07
|
Функция Сумма((СуммаПокупки+10) * 100)
тоже вылетает |
|||
4
aka AMIGO
26.04.18
✎
13:12
|
Переменные все известны?
|
|||
5
Лиза777
26.04.18
✎
13:16
|
вроде бы да... А вообще должна работать такая конструкция сложная в функции сумма? Я чёт засомневалась, что там деление и умножение и всё это в функции "сумма"
|
|||
6
Kigo_Kigo
26.04.18
✎
13:21
|
Что мешает это считать не в запросе?
|
|||
7
Масянька
26.04.18
✎
13:22
|
(6) Потому что нужно (в соседней ветке почему-то тебя это не заботило).
|
|||
8
Масянька
26.04.18
✎
13:23
|
(5) А если без этой строки вывести показатели, которые участвуют в запросе - точно ноля нет?
И вылетает молча? |
|||
9
Лиза777
26.04.18
✎
13:23
|
(7) ))))
ладно буду проверять данные. Значит в них всё таки дело. |
|||
10
Лиза777
26.04.18
✎
13:23
|
молча вылетает
|
|||
11
Масянька
26.04.18
✎
13:24
|
(9) Не факт. Но понять стоит.
|
|||
12
2S
26.04.18
✎
13:26
|
(0) опиши свою функцию отдельно с расчетами и вызывай ее
|
|||
13
Cool_Profi
26.04.18
✎
13:27
|
(12) Опередил ((
|
|||
14
Kigo_Kigo
26.04.18
✎
13:27
|
(7) Не переваливайте со здоровой головы на больную(с) для любителей пословиц
|
|||
15
Масянька
26.04.18
✎
13:28
|
(12) Лучший вариант.
(14) Лечите голову. |
|||
16
Franchiser
гуру
26.04.18
✎
13:29
|
Покажи сам запрос.
М.б. надо писать Запрос.Литры и тд. |
|||
17
Kigo_Kigo
26.04.18
✎
13:29
|
(15) С моей все в порядке
|
|||
18
Franchiser
гуру
26.04.18
✎
13:33
|
СуммаПокупки - это функция уже просуммированная в запросе? зачем ее в Сумму() еще пихать?
ОплаченоБонусами И Литры - это что? |
|||
19
Franchiser
гуру
26.04.18
✎
13:34
|
Попробуй так
ЛитрыНалИзСовместнойОплатыСБонусами = (запрос.СуммаПокупки*100)/((Сумма(ОплаченоБонусами)/10+Запрос.СуммаПокупки)*Сумма(Литры)/100) |
|||
20
Лиза777
26.04.18
✎
13:36
|
(18) суммапокупки - это реквизит документа "сумма". и те тоже реквизиты документа
|
|||
21
Franchiser
гуру
26.04.18
✎
13:39
|
Может быть у тебя переменные где то в коде встречаются с такими же названиями СуммаПокупки, ОплаченоБонусами, Литры
|
|||
22
Franchiser
гуру
26.04.18
✎
13:40
|
Покажи весь запрос, какие в запросе Функции есть кроме этой?
|
|||
23
Lazy Stranger
26.04.18
✎
13:45
|
хот и не совсем в тему:
а зачем в одном и том же выражении сначала умножать на 100, а потом делить на те же 100? |
|||
24
Franchiser
гуру
26.04.18
✎
13:52
|
100/Что-то/100 =10000/что-то
|
|||
25
aka AMIGO
26.04.18
✎
14:20
|
Еще разочек.. (12) +100500 © миста..
Отдельная функция - милое дело, можно сколь угодно сложную написать.. |
|||
26
aka AMIGO
26.04.18
✎
14:21
|
+25 заодно и отладочку разлюбезную включить, да проследить по ней
|
|||
27
Карст
26.04.18
✎
14:42
|
Функция (блабла)
возврат ляля угу типа а в запросе например Условие Функция(документиззапроса)=1 |
|||
28
2S
26.04.18
✎
15:03
|
(24) бред, канает только для целых чисел
|
|||
29
Franchiser
гуру
26.04.18
✎
23:12
|
(28) ты не согласен с математикой?
|
|||
30
Zmich
27.04.18
✎
05:48
|
(29). Неверно. Свойства ассоциативности у операции деления нет. Т.е. все зависит от того, как поставить скобки: 100/(Что-то/100) = 10000/Что-то, однако (100/Что-то)/100 = 1/Что-то. Поэтому такая запись, как у тебя, некорректна.
|
|||
31
Franchiser
гуру
27.04.18
✎
10:21
|
(30) да ладно, если скобок нет то первыми выполняются умножения и деления, а потом сложение и вычитание это первый класс.
1+2:3:5 = |
|||
32
Ёпрст
27.04.18
✎
10:24
|
(0) формат базы какой ? SQL ? DBF ?
|
|||
33
Franchiser
гуру
27.04.18
✎
10:24
|
И скобки в операциях деления/умножения никакого смысла не имеют. Ты видимо пропустил уроки в школе по сокращению дробей.
|
|||
34
Ёпрст
27.04.18
✎
10:25
|
ну и покажи весь текст запроса целиком
|
|||
35
Franchiser
гуру
27.04.18
✎
10:26
|
(100/Что-то)/100 = 1/Что-то
Это чушь |
|||
36
Zmich
27.04.18
✎
10:28
|
(35). Как чушь? например, "Что-то" возьмем равным 2. (100/2)/100 = 50/100 = 1/2.
|
|||
37
Zmich
27.04.18
✎
10:30
|
(36)+ А теперь скобки поставим иначе: 100/(2/100) = 100/0.02 = 5000 = 10000/2. Ну и кто пропустил уроки в школе по сокращению дробей?
|
|||
38
Franchiser
гуру
27.04.18
✎
10:31
|
Ладно, если скобок нет то операция выполняется в порядке следования
|
|||
39
Ёпрст
27.04.18
✎
10:35
|
100/0.02 =5
|
|||
40
Franchiser
гуру
27.04.18
✎
10:35
|
Деление на 100 происходит в знаменателе и он рассчитывается первым
|
|||
41
Franchiser
гуру
27.04.18
✎
10:36
|
Так что будет по варианту 10000 в числителе
|
|||
42
Zmich
27.04.18
✎
10:36
|
(38). Это кто сказал? И кстати, тем более: если в порядке следования, тогда в (24) у тебя ерунда написана. Вот еще пример: a^b^c - в каком порядке должно идти возведение в степень? Ассоциативности у этой операции также нету.
(39). Разделить, а не умножить |
|||
43
Ёпрст
27.04.18
✎
10:38
|
(42) :)
так и знал, что щас достанут калькуляторы проверять :)))) |
|||
44
Franchiser
гуру
27.04.18
✎
10:40
|
Сначала выполняем по порядку (слева направо) умножение и деление, а затем сложение и вычитание.
https://interneturok.ru/matematika/3-klass/tema-umnozhenie-i-delenie/poryadok-vypolneniya-deystviy-v-vyrazheniyah-bez-skobok-i-so-skobkami-2 |
|||
45
Zmich
27.04.18
✎
10:48
|
(44). Если слева направо, то в таком случае 100/Что-то/100 = 1/Что-то, а не 10000/Что-то
|
|||
46
Franchiser
гуру
27.04.18
✎
10:58
|
Согласен
|
|||
47
Franchiser
гуру
27.04.18
✎
11:01
|
Но у ТС после случай когда выражение после первого деления в скобках, для его примера это 2-й случай т.е. 10000
|
|||
48
1Сергей
27.04.18
✎
11:05
|
Эта. А что, никто ещё не предложил отказаться от черных запросов в пользу прямых?
|
|||
49
Franchiser
гуру
27.04.18
✎
11:05
|
(40), (41) относилось к формуле ТС
|
|||
50
Franchiser
гуру
27.04.18
✎
11:06
|
(48) потому что Лиза вряд ли будет их писать
|
|||
51
Franchiser
гуру
27.04.18
✎
11:11
|
Скорее всего ТС ошибся Литры/100 нужно взять в скобки
|
|||
52
Лиза777
11.05.18
✎
05:45
|
Весь запрос
|
|||
53
Лиза777
11.05.18
✎
05:45
|
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать) |Период с ВыбНачПериода по ВыбКонПериода; |Обрабатывать НеПомеченныеНаУдаление; |ТекущийДокумент = Документ.Отчет.ТекущийДокумент; |ДатаДок = Документ.Отчет.ДатаДок; |АЗС = Документ.Отчет.АЗС; |ГСМ = Документ.Отчет.ГСМ.ТекущийЭлемент; |КодПредприятия = Документ.Отчет.Предприятие.Код; |Бонусы = Документ.Отчет.ОплаченоБонусами; |Литры = Документ.Отчет.Литры; |Цена = Документ.Отчет.Цена; |СуммаПокупки = Документ.Отчет.Сумма; |без Итогов; |Функция ЛитрыНалИзСовместнойОплатыСБонусами = Сумма ((((СуммаПокупки*100)/(Бонусы/10+СуммаПокупки))*Литры)/100) Когда (((СокрЛП(КодПредприятия)=""100"") ИЛИ (СокрЛП(КодПредприятия)=""101"")) И ((Бонусы > 0) И (СуммаПокупки>0))); |Функция ЛитрыБонусы = Сумма(Литры) Когда ((СуммаПокупки = 0) И (Бонусы>0)); |Группировка АЗС без групп; |"; |
|||
54
Лиза777
11.05.18
✎
07:08
|
(50) считаю при обработке результата запроса уже. Но долго считает, буду всё-таки на прямой запрос переделывать
|
|||
55
GreyK
11.05.18
✎
07:24
|
(53) Сделай так:
Функция МояФункцияПодсчета(СуммаПокупки,Бонусы,Литры,КодПредприятия) //Здесь высчитываешь результат КонецФункции .... |Функция ЛитрыНалИзСовместнойОплатыСБонусами = Сумма (Литры + МояФункцияПодсчета(СуммаПокупки,Бонусы,Литры,КодПредприятия) - Литры); ) |
|||
56
Лиза777
11.05.18
✎
08:35
|
(55) так весь смысл функции в запросе, что мне нужна сумма результата функции. А так мне придётся при обработке результата запроса перебирать строки документа (добавить тогда надо группировку по документу в запрос и возможно группировку по строкам). И при таком переборе для каждой стоки вызывать эту функцию - как-то не очень.
|
|||
57
GreyK
11.05.18
✎
08:45
|
(56) Вот это функция в запросе:
|Функция ЛитрыНалИзСовместнойОплатыСБонусами = Сумма (Литры + МояФункцияПодсчета(СуммаПокупки,Бонусы,Литры,КодПредприятия) - Литры); Просто она обращается к внешней функции. |
|||
58
Сияющий в темноте
11.05.18
✎
10:35
|
Попробуйте условия и вычисления отделить от суммы
не забываем,что сумма вычисляется по всему запросу |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |