Ошибка вычисления выражения 1с

Обновлено: 04.07.2024

если происходит ошибка все что видно "Не удалось вычислить 45*15,26";
ни ИнформацияОбОшибке() ни ОписаниеОшибки() не содержат ничего.
Как получить, хоть какое то понятное описание почему произошла ошибка.


а то единственный способ получить такое описание, ставить точку останова на строке Выполнить(Формула); затем копировать содержимое строки формула вставлять рядом и построчно выполнять через Shift+F9, что не удобно да и не всегда возможно

__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь

Кнопка "Выбрать" на форме выбора или как выполнить нажатие кнопки "Выбрать"
Добрый день! Обычное приложение. Какие мысли есть, чтобы выполнить нажатие на кнопку.

Ошибка Ошибка при вызове метода контекста (Выполнить) Ожидается выражение "ВЫБРАТЬ"
Выдает ошибку. Была пропущена точка. Исправила. Выдавал другую ошибку теперь опять эту. .

Добавлено через 54 секунды
или как хочет ТС (только вот что такое "Строка" непонятно)
Во первых не выполнить а вычислить. Во вторых ОписаниеОшибки() все расскажет о вашем коде. закончили умничать. а по делу ни слова!
1) код описанный мной выше не выдаст никакой ошибки, просто результата выполнения не будет, но формула написана как пример, то что вычисляется имеет разный вид.
2) вычислить это функция вычислить("12+34") вернет результат вычисления, а выполнить процедура выполняет строку кода например: 3)wwall, проверяй что пишешь. В том то и вопрос, что если в строке которая передается ошибка, то ни ОписаниеОшибки() ни ИнформацияОбОшибке() никакой информации нет!

MrAndrey_ka,

Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: : Неопознанный оператор

Добавлено через 7 минут
И в информации об ошибке все есть.

ИсходнаяСтрока= Выполнить(Формула);
Описание=: Неопознанный оператор
ИмяМодуля=
НомерСтроки=0
ИсходнаяСтрока=

то есть у вас волшебная 1С которая ложит болт (большой и толстый) на AST и умеет вычислять анонимные потоки (во многих языках через запятую описывают коллекцию как поток)? Или все-таки ваш код изначально криво написан с импользованием не тех абстракций что вам необходимы?

3)wwall, проверяй что пишешь. В том то и вопрос, что если в строке которая передается ошибка, то ни ОписаниеОшибки() ни ИнформацияОбОшибке() никакой информации нет! То есть координат места возникновения ошибки вам недостаточно? Какую еще информацию вы хотите получить? Может быть вам стоит использовать богатство русского языка для повышения коммуникативных навыков? В региональных установках десятичная точка. Ну и чо? Добавьте в Исключение Попытка СтрЗаменить(Формула, ",",".");Выполнить(Формула).

Здесь должно быть вычислить. У него семантика отличается от выполнить.

wwall, имеешь в виду, что "КонецЕсли" отсутствует? Но правильно, конечно. а Вычислить() переменные видит? тупо не знаю Как получить, хоть какое то понятное описание почему произошла ошибка.

Мы упустили главное, это вопрос ТС.

Как получить понятную ошибку, т.е. для него строка и колонка в которой произошла ошибка ничего не говорит!

т.е. для него строка и колонка в которой произошла ошибка ничего не говорит! эээ. а что должно тогда говорить об ошибке? и как? почему номера строки и колонки - недостаточно? И почему всем остальным хватает, а ТС - нет? а то единственный способ получить такое описание, ставить точку останова на строке Выполнить(Формула); затем копировать содержимое строки формула вставлять рядом и построчно выполнять через Shift+F9, что не удобно да и не всегда возможно

Попробую предположить. wwall про Вычислить() правильно сказал.
MrAndrey_ka, в отладчике ничего нельзя выполнить в окне "Выражение". Там можно только Вычислить или посмотреть.

Добавлено через 2 минуты
Чтобы выковырять ошибку из "Выполнить()", надо выполняемую строку вытащить в скрипт, либо проверять вычисляемые части команды.

Добавлено через 1 минуту
Ну, то есть, Вы правы: это гемор

Мы упустили главное, это вопрос ТС.

Как получить понятную ошибку, т.е. для него строка и колонка в которой произошла ошибка ничего не говорит!

Да ты что, какой умный просто слов нет! ты не меняй описанную мною процедуру ВЫПОЛНИТЬ, на функцию ВЫЧИСЛИТЬ, и попробуй выдаст ли тебе "строка и колонка в которой произошла ошибка".


а вот duk337, спасибо! хоть ничем и не помог, но хоть попытался понять и написал по русски: НЕЛЬЗЯ.

ты не меняй описанную мною процедуру ВЫПОЛНИТЬ, на функцию ВЫЧИСЛИТЬ

Во первых код который ты дал - содержит ошибку - нет определения для переменной строка. То есть она просто тупо не компилиться. Но поверив тебе и усомнившись в своих знаниях решил все же проверить и сделал так

Не очень отличается от твоего идеала? На выходе увидел - "Не удалось вычислить 45*15,26 Причина : Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: : Неопознанный оператор"
Внимание, вопрос - Какое из указанных слов тебе не понятно?

Подпись свою к себе примерь, или руки выровняй. Вариант прочитать документацию и понять в чем различие семантики у оператора Выполнить() и функции Вычислить() уже не предлагаю. Не поможет.

Добавлено через 1 минуту
Неужели так сложно понять что оператор и функция - разные вещи?

Добавлено через 1 час 48 минут
В общем проблема твоего кода в том что ты сам не понимаешь - толи выполнить то ли вычислить. Если исходит из предположения что у тебя правильно оформленный код (это подразумевает наличие ; в конце оператора) то твой вопрос решается так

формула = ". "
попытка
если найти(формула,";") > 0 тогда
выполнить(формула);
иначе
результат = вычислить(формула);
исключение
сообщить(ОписаниеОшибки());
конецпопытки

но это костыль.
более правильный вариант - написать свой парсер 1С.
еще более правильный вариант - не использовать Выполнить и Вычислить. В твоем случае еще и гото нельзя использовать.

Как вызвать функцию формы "Обработки" из "Общего модуля"?
В Обработке реализована некая функция. Как мне вызвать ее из Общего модуля? Эта функция собирает.

Читайте также: