Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/50: Рейтинг темы: голосов - 50, средняя оценка - 4.82
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
1C 8.x

ОписаниеОшибки после оператора "Выполнить"

24.10.2014, 17:54. Показов 10253. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток, есть такой кусок кода
1C
1
2
3
4
5
6
Формула = "45*15,26";
Попытка  
    Выполнить(Формула);      
Исключение
    ошибка = "Не удалось вычислить " + Строка;    
КонецПопытки;
если происходит ошибка все что видно "Не удалось вычислить 45*15,26";
ни ИнформацияОбОшибке() ни ОписаниеОшибки() не содержат ничего.
Как получить, хоть какое то понятное описание почему произошла ошибка????


а то единственный способ получить такое описание, ставить точку останова на строке Выполнить(Формула); затем копировать содержимое строки формула вставлять рядом и построчно выполнять через Shift+F9, что не удобно да и не всегда возможно
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
24.10.2014, 17:54
Ответы с готовыми решениями:

V8. Использоваие оператора Выполнить()
Господа Форумчане, столкнулся с очередным ступором в своем мозгу. Необходима ваша помощь). Смысл очередной пробемы в следующем: Есть...

Выполнить задания двумя способами: с использованием оператора if и с использованием условного оператора ?
Выполнить задания двумя способами: с использованием оператора if и с использованием условного оператора ?. Выполнить задания, минимизируя...

Неправильная работа оператора присваивания после работы оператора суммирования
Доброго времени суток. У меня есть класс вектор class TVector {//ewde public: TVector(); //Vector(Vector &v); ...

15
286 / 186 / 18
Регистрация: 20.02.2012
Сообщений: 926
24.10.2014, 18:52
1C
1
2
3
4
5
6
7
    Формула = "а=45*1526;";
Попытка  
    Выполнить(Формула);      
    сообщить("Ыы");
Исключение
    ошибка = "Не удалось вычислить ";  
КонецПопытки;
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
24.10.2014, 19:24
Все таки правильнее так
1C
1
2
3
4
5
6
7
8
Перем а;
Формула = "а=45*15.26;";
Попытка  
    Выполнить(Формула);      
    сообщить(а);
Исключение
    ошибка = "Не удалось вычислить ";  
КонецПопытки;
Добавлено через 54 секунды
или как хочет ТС (только вот что такое "Строка" непонятно)
1C
1
2
3
4
5
6
Формула = "45*15.26";
Попытка  
    Выполнить(Формула);      
Исключение
    ошибка = "Не удалось вычислить " + Строка;  
КонецПопытки;
0
 Аватар для wwall
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
27.10.2014, 09:44
Во первых не выполнить а вычислить. Во вторых ОписаниеОшибки() все расскажет о вашем коде.
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
27.10.2014, 15:02  [ТС]
закончили умничать??? а по делу ни слова!
1) код описанный мной выше не выдаст никакой ошибки, просто результата выполнения не будет, но формула написана как пример, то что вычисляется имеет разный вид.
2) вычислить это функция вычислить("12+34") вернет результат вычисления, а выполнить процедура выполняет строку кода например:
1C
1
а = 1+4; б=2; выполнить("Если a > б Тогда б=б*a;");
3)wwall, проверяй что пишешь. В том то и вопрос, что если в строке которая передается ошибка, то ни ОписаниеОшибки() ни ИнформацияОбОшибке() никакой информации нет!
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
27.10.2014, 15:15
MrAndrey_ka,

Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,1)}: Неопознанный оператор
Добавлено через 7 минут
И в информации об ошибке все есть...

ИсходнаяСтрока= Выполнить(Формула);
Описание={(1,1)}: Неопознанный оператор
ИмяМодуля=
НомерСтроки=0
ИсходнаяСтрока=
0
 Аватар для wwall
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
27.10.2014, 17:26
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
код описанный мной выше не выдаст никакой ошибки,
[quote="MrAndrey_ka;6763610"]
1C
1
2
3
4
5
6
Формула = "45*15,26";
Попытка 
 Выполнить(Формула); 
Исключение
 ошибка = "Не удалось вычислить " + Строка; 
КонецПопытки;[
/quote]

то есть у вас волшебная 1С которая ложит болт (большой и толстый) на AST и умеет вычислять анонимные потоки (во многих языках через запятую описывают коллекцию как поток)? Или все-таки ваш код изначально криво написан с импользованием не тех абстракций что вам необходимы?
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
3)wwall, проверяй что пишешь. В том то и вопрос, что если в строке которая передается ошибка, то ни ОписаниеОшибки() ни ИнформацияОбОшибке() никакой информации нет!
То есть координат места возникновения ошибки вам недостаточно? Какую еще информацию вы хотите получить? Может быть вам стоит использовать богатство русского языка для повышения коммуникативных навыков?
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
27.10.2014, 20:13
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
почему произошла ошибка
В региональных установках десятичная точка. Ну и чо? Добавьте в Исключение Попытка СтрЗаменить(Формула, ",",".");Выполнить(Формула)...
0
 Аватар для wwall
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
27.10.2014, 20:27
Цитата Сообщение от duk337 Посмотреть сообщение
Выполнить(Формула)
ВЫЧИСЛИТЬ!ВЫЧИСЛИТЬ!ВЫЧИСЛИТЬ!ВЫЧИСЛИТЬ!

Здесь должно быть вычислить. У него семантика отличается от выполнить.
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
27.10.2014, 20:45
wwall, имеешь в виду, что "КонецЕсли" отсутствует? Но правильно, конечно... а Вычислить() переменные видит? тупо не знаю
0
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
28.10.2014, 00:00
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
Как получить, хоть какое то понятное описание почему произошла ошибка????
Мы упустили главное, это вопрос ТС.

Как получить понятную ошибку, т.е. для него строка и колонка в которой произошла ошибка ничего не говорит!
0
 Аватар для wwall
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
28.10.2014, 09:58
Цитата Сообщение от Dethmontt Посмотреть сообщение
т.е. для него строка и колонка в которой произошла ошибка ничего не говорит!
эээ... а что должно тогда говорить об ошибке? и как? почему номера строки и колонки - недостаточно? И почему всем остальным хватает, а ТС - нет?
0
 Аватар для duk337
2956 / 1768 / 84
Регистрация: 03.11.2011
Сообщений: 8,280
28.10.2014, 11:14
Цитата Сообщение от Dethmontt Посмотреть сообщение
Мы упустили главное, это вопрос ТС.
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
а то единственный способ получить такое описание, ставить точку останова на строке Выполнить(Формула); затем копировать содержимое строки формула вставлять рядом и построчно выполнять через Shift+F9, что не удобно да и не всегда возможно
Попробую предположить. wwall про Вычислить() правильно сказал.
MrAndrey_ka, в отладчике ничего нельзя выполнить в окне "Выражение". Там можно только Вычислить или посмотреть.

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

Добавлено через 1 минуту
Ну, то есть, Вы правы: это гемор
1
Модератор
Эксперт 1С
 Аватар для Dethmontt
4032 / 2977 / 594
Регистрация: 10.03.2011
Сообщений: 11,701
Записей в блоге: 1
28.10.2014, 18:02
Цитата Сообщение от wwall Посмотреть сообщение
И почему всем остальным хватает, а ТС - нет?
Не могу знать...
0
 Аватар для MrAndrey_ka
79 / 79 / 20
Регистрация: 13.05.2009
Сообщений: 537
Записей в блоге: 1
04.11.2014, 18:43  [ТС]
Мы упустили главное, это вопрос ТС.

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


а вот duk337, спасибо! хоть ничем и не помог, но хоть попытался понять и написал по русски: НЕЛЬЗЯ!!!!
0
 Аватар для wwall
213 / 204 / 15
Регистрация: 29.05.2014
Сообщений: 1,058
04.11.2014, 21:56
Цитата Сообщение от MrAndrey_ka Посмотреть сообщение
ты не меняй описанную мною процедуру ВЫПОЛНИТЬ, на функцию ВЫЧИСЛИТЬ
Во первых код который ты дал - содержит ошибку - нет определения для переменной строка. То есть она просто тупо не компилиться. Но поверив тебе и усомнившись в своих знаниях решил все же проверить и сделал так

1C
1
2
3
4
5
6
7
8
9
Процедура КнопкаВыполнитьНажатие(Кнопка)
    Формула = "45*15,26";
    ошибка = "Нет ошибки";
    Попытка  
        Выполнить(Формула);      
    Исключение
        Сообщить("Не удалось вычислить " + Формула+" Причина "+ОписаниеОшибки());  
    КонецПопытки; 
КонецПроцедуры
Не очень отличается от твоего идеала? На выходе увидел - "Не удалось вычислить 45*15,26 Причина {Форма.Форма.Форма(6)}: Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: {(1,1)}: Неопознанный оператор"
Внимание, вопрос - Какое из указанных слов тебе не понятно?

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

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

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

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

но это костыль.
более правильный вариант - написать свой парсер 1С.
еще более правильный вариант - не использовать Выполнить и Вычислить. В твоем случае еще и гото нельзя использовать.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.11.2014, 21:56
Помогаю со студенческими работами здесь

Использование условного оператора после оператора цикла
Даны целые числа a1, a2, ..., a9. Верно ли, что их сумма есть четное число? Помогите написать программу на Си

Как выполнить выход из оператора if
У меня есть вопрос насчет выхода из оператора if, я пытался выйти с помощью exit 1; Но это не помогает, а так программа работает ...

Можно ли выполнить задачу без условного оператора?
Задача: Дан двумерный массив M x N. Вывести четные строки массива(2,4...).

Выполнить объединение двух строк с помощью перегрузки оператора (*)
#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> using namespace std; class String { char *str; int...

Для какого оператора можно выполнить перегрузку еще раз
Всем привет. Ребят, подскажите... Сдавал контрольную по классам.. нужно было сделать перегрузку для операторов ++,-- и бинарный +, но...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru