|
Ошибка "Встроенная функция может быть использована только в выражении" | ☑ | ||
---|---|---|---|---|
0
mik_mihka
06.12.14
✎
10:49
|
Здравствуйте,пишу выражение а оно выдает ошибку, в отладчике значение сравнивает, а при проверки модуля - ошибка.:
{Документ.Мотивация.Форма.ФормаДокумента.Форма(115,4)}: Встроенная функция может быть использована только в выражении. (Дата) ?<<?>>(ДнейОсталось<=0,1,ДнейОсталось); ДнейОсталось = ((Сред(КонецМесяца(Дата), 1, 2))- ( ?(Месяц(Дата) = Месяц(ТекущаяДата()),Сред(КонецДня(ТекущаяДата()),1,2),Сред(КонецМесяца(Дата), 1, 2)))-4); а потом это значение сравниваю в условии : ?(ДнейОсталось<=0,1,ДнейОсталось); ДнейОсталось - Значение:-4 ;Тип: Число |
|||
1
ДенисЧ
06.12.14
✎
10:50
|
Я бы за такую формулу коленку прострелил....
|
|||
2
mehfk
06.12.14
✎
10:58
|
Покажи полностью строку
?(ДнейОсталось<=0,1,ДнейОсталось); |
|||
3
mik_mihka
06.12.14
✎
11:01
|
Это и есть всё условие.
пробовал в таком виде - Если Число(ДнейОсталось)<=0 Тогда ДнейОсталось = 1; Иначе ДнейОсталось; КонецЕсли; результат тот же (УТ 10.3) |
|||
4
mik_mihka
06.12.14
✎
11:35
|
Есть другой способ узнать количество дней в месяце, вычесть из этого значения - количество оставшихся дней и выходных дней?
|
|||
5
RomanYS
06.12.14
✎
11:54
|
(1) +1, даже обе можно
а что 1с умеет вычитать строки? |
|||
6
mik_mihka
06.12.14
✎
11:59
|
(5) Но тем не менее - есть вычисленное значение. Если убрать условие - ошибок нет и считает нормально только пока значение в минус не уйдет.
ПланНаДень = Формат(((Строка.Объем - Сегодня)/ ДнейОсталось),"ЧДЦ=2") ; а в условии ошибка. |
|||
7
RomanYS
06.12.14
✎
12:06
|
покажи целиком строку модуля с ошибкой (в (0) строка №135) и текст ошибки целиком
|
|||
8
mik_mihka
06.12.14
✎
12:12
|
Ошибка;
{Документ.Мотивация.Форма.ФормаДокумента.Форма(115,4)}: Встроенная функция может быть использована только в выражении. (Дата) ?<<?>>(ДнейОсталось<=0,1,ДнейОсталось); (Проверка: Толстый клиент (обычное приложение)) Ругается на строку №115. Это и есть вся строка: ?(ДнейОсталось<=0,1,ДнейОсталось); |
|||
9
RomanYS
06.12.14
✎
12:15
|
(8) это не вся строка, а ее окончание
скопируй предыдущие строки, начиная с предыдущей ";" |
|||
10
wertyu
06.12.14
✎
12:18
|
(4) если ты хочешь определить количество оставшихся рабочих дней в месяце, то во-первых тебе надо завести регистр календаря, потому как в УТ 10.3 нет производственного календаря
|
|||
11
mik_mihka
06.12.14
✎
12:30
|
(10) Это понятно, поэтому и пытаюсь обойтись без календаря (+-день)
|
|||
12
mik_mihka
06.12.14
✎
12:31
|
(9)
ДнейОсталось = ((Сред(КонецМесяца(Дата), 1, 2))- ( ?(Месяц(Дата) = Месяц(ТекущаяДата()),Сред(КонецДня(ТекущаяДата()),1,2),Сред(КонецМесяца(Дата), 1, 2)))-4); ?((ДнейОсталось<=0),1,ДнейОсталось); ОбластьСтрокаПлан.Параметры.ПланНаДень = Формат(((Строка.Объем - Сегодня)/ ДнейОсталось),"ЧДЦ=2") ; |
|||
13
wertyu
06.12.14
✎
12:36
|
(11) это же несложно, скопируй его из зупа например, а потом просто запросом определишь
если без календаря Если КонецМесяца(Дата) = КонецМесяца(ТекущаяДата()) Тогда КоличествоВыходных = 0; Сутки = 24 * 60 * 60; Для НН = 0 По 4 Цикл // сб Если КонецМесяца(КонецНедели(Дата) + 7 * Сутки * НН - Сутки) = КонецМесяца(ТекущаяДата()) Тогда КоличествоВыходных = КоличествоВыходных + 1; КонецЕсли; // вс Если КонецМесяца(КонецНедели(Дата) + 7 * Сутки * НН) = КонецМесяца(ТекущаяДата()) Тогда КоличествоВыходных = КоличествоВыходных + 1; КонецЕсли; КонецЦикла; // сам день не входит ДнейОсталось = ДеньГода(КонецМесяца(Дата)) - ДеньГода(Дата) - КоличествоВыходных; Иначе ДнейОсталось = 0; КонецЕсли; |
|||
14
RomanYS
06.12.14
✎
12:37
|
(12) закомментируй эту строку - она ничего не дает кроме ошибки
а первую формулу распечатай и повесь в рамочке-она ШЕДЕВР! |
|||
15
wertyu
06.12.14
✎
12:37
|
+(13) если конечно зуп есть )
|
|||
16
wertyu
06.12.14
✎
12:38
|
+(13) но праздники, тебе как-то специально надо будет описывать, чтобы их вычесть
|
|||
17
RomanYS
06.12.14
✎
12:39
|
А 1С действительно умеет вычитать строки)))
Угадайте, чему равно "1"+"0"-"1"-"0"? |
|||
18
wertyu
06.12.14
✎
12:41
|
(17) 9
|
|||
19
mik_mihka
06.12.14
✎
12:44
|
Заменил на ;
Если ДнейОсталось<=0 Тогда ДнейОсталось = 1; Иначе ДнейОсталось = ДнейОсталось; КонецЕсли; работает :) |
|||
20
wertyu
06.12.14
✎
12:46
|
(19) а Иначе зачем?
|
|||
21
mik_mihka
06.12.14
✎
12:48
|
(20) Поправил :)
|
|||
22
mik_mihka
06.12.14
✎
12:48
|
Всем спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |