при нажатии на кнопку преобразование значения к типу число не может быть выполнено
Создал калькулятор (1С 8.3), в модуле Синтаксических ошибок не обнаружено, но в отладке когда запуская обработку и при нажатии на кнопку любой цифры выходит сообщение что "преобразование значения к типу число не может быть выполнено" вместо того чтобы цифра появилась в табло
Вот алгоритм процедур:
Вот алгоритм процедур:
&НаКлиенте
Процедура Цифра1Нажатие(Элементы)
ВыводЦифры1 = 1;
ТаблоКалькулятора = ТаблоКалькулятора + Лев(ВыводЦифры1, 9);
ТаблоКалькулятора = Число(Прав(ТаблоКалькулятора,10));
КонецПроцедуры
&НаКлиенте
Процедура Цифра2Нажатие(Элементы)
ВыводЦифры2 = 2;
ТаблоКалькулятора = ТаблоКалькулятора + Лев(ВыводЦифры2, 9);
ТаблоКалькулятора = Число(Прав(ТаблоКалькулятора,10));
КонецПроцедуры
&НаКлиенте
Процедура Цифра3Нажатие(Элементы)
ВыводЦифры3 = 3;
ТаблоКалькулятора = ТаблоКалькулятора + Лев(ВыводЦифры3, 9);
ТаблоКалькулятора = Число(Прав(ТаблоКалькулятора,10));
КонецПроцедуры
&НаКлиенте
Процедура Цифра4Нажатие(Элементы)
ВыводЦифры4 = 4;
ТаблоКалькулятора = ТаблоКалькулятора + Лев(ВыводЦифры4, 9);
ТаблоКалькулятора = Число(Прав(ТаблоКалькулятора,10));
КонецПроцедуры
&НаКлиенте
Процедура Цифра5Нажатие(Элементы)
ВыводЦифры5 = 5;
ТаблоКалькулятора = ТаблоКалькулятора + Лев(ВыводЦифры5, 9);
ТаблоКалькулятора = Число(Прав(ТаблоКалькулятора,10));
КонецПроцедуры
&НаКлиенте
Процедура Цифра6Нажатие(Элементы)
ВыводЦифры6 = 6;
ТаблоКалькулятора = ТаблоКалькулятора + Лев(ВыводЦифры6, 9);
ТаблоКалькулятора = Число(Прав(ТаблоКалькулятора,10));
КонецПроцедуры
&НаКлиенте
Процедура Цифра7Нажатие(Элементы)
ВыводЦифры7 = 7;
ТаблоКалькулятора = ТаблоКалькулятора + Лев(ВыводЦифры7, 9);
ТаблоКалькулятора = Число(Прав(ТаблоКалькулятора,10));
КонецПроцедуры
&НаКлиенте
Процедура Цифра8Нажатие(Элементы)
ВыводЦифры8 = 8;
ТаблоКалькулятора = ТаблоКалькулятора + Лев(ВыводЦифры8, 9);
ТаблоКалькулятора = Число(Прав(ТаблоКалькулятора,10));
КонецПроцедуры
&НаКлиенте
Процедура Цифра9Нажатие(Элементы)
ВыводЦифры9 = 9;
ТаблоКалькулятора = ТаблоКалькулятора + Лев(ВыводЦифры9, 9);
ТаблоКалькулятора = Число(Прав(ТаблоКалькулятора,10));
КонецПроцедуры
&НаКлиенте
Процедура Цифра0Нажатие(Элементы)
ВыводЦифры0 = 0;
ТаблоКалькулятора = ТаблоКалькулятора + Лев(ВыводЦифры0, 9);
ТаблоКалькулятора = Число(Прав(ТаблоКалькулятора,10));
КонецПроцедуры
&НаКлиенте
Процедура ОчиститьНажатие(Элементы)
ТаблоКалькулятора = 0;
КонецПроцедуры
&НаКлиенте
Процедура СложениеНажатие(Элементы)
Элементы.Буфер = Число(Элементы.ТаблоКалькулятора);
ТаблоКалькулятора = "";
Операция = "Сложение";
КонецПроцедуры
&НаКлиенте
Процедура РазностьНажатие(Элементы)
Элементы.Буфер = Число(Элементы.ТаблоКалькулятора);
ТаблоКалькулятора = "";
Операция = "Вычитание";
КонецПроцедуры
&НаКлиенте
Процедура УмножениеНажатие(Элементы)
Элементы.Буфер = Число(Элементы.ТаблоКалькулятора);
ТаблоКалькулятора = "";
Операция = "Умножение";
КонецПроцедуры
&НаКлиенте
Процедура ДелениеНажатие(Элементы)
Элементы.Буфер = Число(Элементы.ТаблоКалькулятора);
ТаблоКалькулятора = "";
Операция = "Деление";
КонецПроцедуры
&НаКлиенте
Процедура РавноНажатие(Элементы)
Если Элементы.Операция = "Сложение" Тогда
ТаблоКалькулятора = Элементы.Буфер + Число(Элементы.ТаблоКалькулятора);
//Сообщить ("операция сложения");
ИначеЕсли Элементы.Операция = "Вычитание" Тогда
//Сообщить ("операция вычитания");
ТаблоКалькулятора = Элементы.Буфер - Число(Элементы.ТаблоКалькулятора);
ИначеЕсли Элементы.Операция = "Деление" Тогда
//Сообщить ("операция деления");
ТаблоКалькулятора = Элементы.Буфер / Число(Элементы.ТаблоКалькулятора);
ИначеЕсли Элементы.Операция = "Умножение" Тогда
//Сообщить ("операция умножения");
ТаблоКалькулятора = Элементы.Буфер * Число(Элементы.ТаблоКалькулятора);
КонецЕсли;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Выгрузка-загрузка любых данных (и измененных) между похожими конфигурациями (ФАЙЛ, HTTP, COM) ЛЮБЫХ баз 1С 8.1-8.3 с обработкой и поиском данных по произвольным полям поиска
- Загрузка чеков ФНС в документы 1С:БП, 1С:УНФ, 1С:ERP, 1С:КА и 1С:УТ
- Обзор полезных методов БСП 3.1.4
- Интеграции с маркетплейсами из одного окна: Озон, ВБ, Яндекс, Сбер, Али, ЛаМода для 1С:УНФ, УТ, КА, ERP
- Мультитул - Инструменты для работы с оборудованием и возможности Python в 1С.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) если не вдаваться в стилистику кода (это страшно), то
В принципе этого не должно быть. Правда не известен тип ТаблоКалькулятора. Но думаю, что тип Строка.
А вот ошибку должно 100% давать следующий код:
Но он уже не на кнопках с цифрами...
Элементы.ТаблоКалькулятора имеет тип ПолеФормы. Этот тип нельзя привезти к числу по определению.
Элементы.Буфер это тоже ПолеФормы. Используйте сами реквизиты формы.
Для понимания что делать, приведу одну из команд, исходя из предположения, что ТаблоКалькулятора имеет тип Строка:
при нажатии на кнопку любой цифры выходит сообщение что "преобразование значения к типу число не может быть выполнено"
В принципе этого не должно быть. Правда не известен тип ТаблоКалькулятора. Но думаю, что тип Строка.
А вот ошибку должно 100% давать следующий код:
Элементы.Буфер = Число(Элементы.ТаблоКалькулятора);
Но он уже не на кнопках с цифрами...
Элементы.ТаблоКалькулятора имеет тип ПолеФормы. Этот тип нельзя привезти к числу по определению.
Элементы.Буфер это тоже ПолеФормы. Используйте сами реквизиты формы.
Буфер = Число(ТаблоКалькулятора);
Для понимания что делать, приведу одну из команд, исходя из предположения, что ТаблоКалькулятора имеет тип Строка:
&НаКлиенте
Процедура Цифра1Нажатие(Элементы)
ТаблоКалькулятора = ТаблоКалькулятора + 1;
КонецПроцедуры
(2)
Интересно, он хоть на словах сумеет пояснить - какой в этом смысл?
А заодно - зачем постоянно преобразовывать тип ТаблоКалькулятора? В процитированном фрагменте предполагается, что это строка, но уже в следующей строчке она преобразуется в число:
При следующем вызове процедуры что получится? Правильно, полная ерунда!
P.S. Хотел начать свое сообщение с рекомендации автору пользоваться тегами "Вставка кода", но потом понял, что это лишнее - г...внокоду никакие теги не помогут.
"Лев" возвращает строку
Если бы только это... А то ведь автор настойчиво пытается взять девять символов слева от... однозначного числа:
ВыводЦифры1 = 1;
ТаблоКалькулятора = ТаблоКалькулятора + Лев(ВыводЦифры1, 9);
Интересно, он хоть на словах сумеет пояснить - какой в этом смысл?
А заодно - зачем постоянно преобразовывать тип ТаблоКалькулятора? В процитированном фрагменте предполагается, что это строка, но уже в следующей строчке она преобразуется в число:
ТаблоКалькулятора = Число(Прав(ТаблоКалькулятора,10));
При следующем вызове процедуры что получится? Правильно, полная ерунда!
P.S. Хотел начать свое сообщение с рекомендации автору пользоваться тегами "Вставка кода", но потом понял, что это лишнее - г...внокоду никакие теги не помогут.
Нашел источник написанного скопированного автором: http://erp-project.com.ua/index.php/ru/poleznye-materialy/2013-05-19-11-50-06/sovety-podderzhka/756-urok-1-pishem-kalkulyator-na-1s
Все вопросы к нему снимаются. Вместо этого предлагаю воспользоваться советом сМисты :
Все вопросы к нему снимаются. Вместо этого предлагаю воспользоваться советом с
Если есть сложности с созданием калькулятора на любом языке программирования, то я думаю не стоит идти на работу программистом.
В первую очередь форма обычная (8.2) сильно отличается от формы управляемой(8.3). Когда поймете разницу, тогда увидите где ошибка( намекаю в формах по разному приосходит обращение к элементам расположенным на форме). Раз вы только начинаете, то вам полезно искать ответы на вопросы, а не получать готовые ответы.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот