Как написать калькулятор на 1с
Сегодня продолжаем совершенствовать калькулятор и на очереди у нас работа с буфером памяти, то есть чтобы происходило запоминание введенных значений с клавиатуры в какой-то переменной, а потом эту переменную использовать!
Переменные созданы и теперь мы можем их использовать.
Необходимо теперь сделать так, чтобы при нажатии на какую-то операцию, происходило сохранение значения в буфер из поля "Табло".
Это значит, что необходимо прописывать для каждой арифметической операции один и тот же программный код.
Начнем с операции "Сложение".
Откроем форму и для команды сложение пропишем процедуру (конечно ее нужно создать через свойство "Действие") (Рисунок 1).
В этой процедуре мы говорим следующее:
1. Присваиваем переменной "Буфер" значение, которое сейчас находится в поле "Табло".
2. После этого поле "Табло" обнуляем.
3. Используем переменную "Операция", для присвоения значения самой операции. То есть мы делаем некую идентификацию!
И теперь это необходимо сделать для трех остальных операций: вычитание, умножение и деление (Рисунок 2).
Это мы только поработали с буфером, то есть с возможностью сохранения значения в переменной, а теперь необходимо сделать так, чтобы по нажатию на кнопку равно происходило выполнение арифметических действий.
Откроем форму и для команды "Равно" создадим процедуру, в которой пропишем первое действие (Рисунок 3).
В этой процедуре говорится, что если действие было "Сложение", тогда необходимо выполнить сложение числа, которое находится в буфере с числом, которое находится в поле "Табло".
Необходимо прописать еще для трех остальных действий. Все это должно быть прописано в кнопке "Равно", но просто так тут прописать не получится, необходимо использовать полное условие, то есть:
Давайте изменим код в этой процедуре так (Рисунок 4).
Таким образом, процедура будет определять то, что вы нажали (какую операцию выбрали) и в зависимости от этого выполнять нужно действие. В коде прописано, что буфер стоит первым, так как мы всегда сначала пишем число, над которым нужно выполнить действие, а если будет иначе, то будет ошибка в работе калькулятора.
Таким же образом необходимо прописать код для всех остальных операций, но только нужно знать формулы, по которым будут считаться эти значения.
Начнем с самых простых:
1. Операция деления единицы на Х. То есть, по нажатию должно происходить деление числа один на введенное число в поле табло, а после этого выводить результат (Рисунок 5).
2. Операция возведения числа Х в степень У. То есть число Х должно умножиться на себя столько раз, чему равно значение У. Для этого будем использовать встроенную функцию (Рисунок 6).
3. Вычисление квадратного корня. Используя встроенную функцию платформы (Рисунок 7).
4. Факториал числа. Факториал числа считается по формуле :
n! = 1*2*3*. *n. Например, 5! = 1*2*3*4*5 = 120.
Сначала необходимо создать функцию, которая будет считать сам факториал любого числа (Рисунок 8).
Потом для команды прописать процедуру и там вызов этой функции, вывести значение в поле "Табло" (Рисунок 9).
Проверим работу (Рисунок 10).
Корень (Рисунок 11).
Деление (Рисунок 12).
Возведение в корень (Рисунок 13).
Давайте теперь вот что проверим и калькулятор не правильно будет обрабатывать данные, когда нажимаете мышкой на цифры.
Откройте калькулятор и с помощью мышки попробуйте вывести в табло число "11", но он у вас выведет не правильно (Рисунок 14).
Все это из-за того, что у нас происходит записывание в буфер и автоматическое обнуление табло при нажатии на цифру.
Это мы исправим, но только уже на следующем занятии.
На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том, что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!
Ссылка для вступления телеграм-канал - t.me.Apiscourses
Подписаться в группу ВКонтакте
Прошлые уроки:
На этом все. Жду Вас на следующем занятии.
P.S. Подписывайтесь на мой канал :-)
программирование программирование 1с 1с предприятие обучение онлайн обучение 1с
Собирающиеся стать программистом люди на каком либо языке программирования вынуждены осваивать специальность сначала с теории, затем с простейших примеров программирования. Одним из простейших примеров, можно сказать стартом в программировании во всех языках считается написание калькулятора. Для этого мы и решили написать обучающий урок о том как написать калькулятор на языке 1С.
Разрабатывать будем простейший калькулятор с простыми арифметическими функциями: сложение, вычитание, умножение, деление. В калькуляторе не учтены более сложные операции как: корень, проценты, мемори. При желании вы можете самостоятельно усовершенствовать наш пример.
Любое задание по программированию начинается с плана разработки. Составьте для себя такой план. Представьте, как бы вы писали калькулятор? Какой нужен алгоритм действий? Какие понадобятся инструменты для воспроизведения той или иной операции даже пока без перевода их на программный язык. Ваши чисто интуитивные замыслы.
Задание: Калькулятор для 1С 8.2, обычное приложение.
"Фишки" задания:
1. Табло калькулятора должно быть строкой, потому что именно к строке можно приписывать символы.
2. У калькулятора должен быть некий буфер (место хранения) первого числа, для того чтобы после ввода в табло калькулятора второго числа можно было извлечь из буфера первое и провести с ним арифметические операции.
3. Любой арифметической операции нужно присваивать значение переменной, затем чтобы при нажатии на "равно" программа понимала какую операцию ей следует выполнить: отнимать, делить или умножать.
Практическое выполнение:
1. В конфигураторе создаем внешнюю обработку через меню Файл - Новый - Внешняя обработка.
2. Создаем форму обработки. Просто создаем пустую форму и жмем Готово.
3. Добавляем следующие реквизиты в обработку
а) табло калькулятора - тип - строка, длила - 15
б) операция - произвольный
в) буфер - тип - число, длина -10, точность - 2.
Зачем нужны эти реквизиты станет понятно чуть позже.
4. Добавляем на форму обработки элементы: кнопки, поле ввода. Кнопки, которые можно добавить в форму расположены внизу конфигуратора на панели управления "Элементы управления". Необходимо добавить такие элементы:
- Строка названием "Табло калькулятора". Расположите ее в самом верху формы.
- Цифирные кнопки от 1 до 9 плюс кнопка 0. А также кнопки обозначающие арифметические операции: сложение, умножение, разность, деление.
Кнопки с цифрами назовите: Цифра1, Цифра2. Цифра0.
Кнопки арифметических операций: Сложение, Умножение, Разность, Деление.
Чтобы вместо названий кнопок на форме отображались цифры и символы арифметических операций в свойстве каждой кнопки пропишите в поле "Заголовок" соответствующие цифры и символы операций: "1","2","3". "*","-".
Расположение цифирных и арифметических кнопок на форме не принципиально. Можете расположить их в каком угодно порядке и месте.
5. Создаем обработчик нажатия на цифры. Становимся на кнопку "Цифра1", открываем ее свойство и в самом конце находим список возможных событий для данной кнопки. Доступно всего одно событие "Нажатие" и оно пока пустое. Нажимаем на увеличительное стекло и модуле обработки автоматически появляется код, который сгенерировала программа. Мы только что создали заготовку для процедуру, которая будет выполнятся при нажатии на кнопку "Цифра1".
ВыводЦифры1 = 1;
ТаблоКалькулятора = ТаблоКалькулятора + Лев(ВыводЦифры1, 9);
ТаблоКалькулятора = Число(Прав(ТаблоКалькулятора,10));
Комментарии к коду: а) Говорим что кнопка "Цифра1" - это цифра 1. б) Говорим, что табло калькулятора работает по принципу добавления символа к предыдущему символу (слева) в) Преобразуем вводимые в строку символы в число. Для остальных девяти цифр создаем точно такие же процедуры с аналогичным кодом. Последней кнопкой на форме калькулятора будет кнопка "Очистить" [C]. Принцип у нее простой - пишет ноль в табло калькулятора. Т.е. обнуляет табло.
6. Арифметические операции. Создаем для каждой кнопки обозначающей арифметическую операцию процедуры нажатия. Точно так же как мы уже создавали для кнопок обозначающих цифры. В коде каждой кнопки пишем код:
Процедура СложениеНажатие(Элемент)
Буфер = Число(ТаблоКалькулятора);
ТаблоКалькулятора = "";
Операция = "Сложение";
КонецПроцедуры
Комментарии к коду: а) реквизиту формы "Буфер" передаем текущее значение табло калькулятора. Буфер запоминает и хранит данную информацию б) мы обнуляем табло калькулятора, т.е. подготавливаем его для ввода новых цифр в) реквизиту формы "Операция" присваиваем текстовую переменную "Сложение". Аналогичные действия и код прописываем для остальных арифметических операций.
7. Вывод результата. В обычном калькуляторе результат арифметических операций выводится после нажатия по кнопке "=". Пропишем в нашем калькуляторе такую же логику. Для этого создаем процедуру нажатия по кнопке "равно" и помещаем во внутрь процедуры следующий код:
Процедура РавноНажатие(Элемент)
Если Операция = "Сложение" Тогда
ТаблоКалькулятора = Буфер + Число(ТаблоКалькулятора);
ИначеЕсли Операция = "Вычитание" Тогда
ТаблоКалькулятора = Буфер - Число(ТаблоКалькулятора);
ИначеЕсли Операция = "Деление" Тогда
ТаблоКалькулятора = Буфер / Число(ТаблоКалькулятора);
ИначеЕсли Операция = "Умножение" Тогда
ТаблоКалькулятора = Буфер * Число(ТаблоКалькулятора);
КонецЕсли;
КонецПроцедуры
Комментарии к коду: а) для определения вида арифметической операции мы обращаемся к оператору Если. Оператор Если проверяет совпадает ли текст, обозначающий арифметическую операцию с присвоенным реквизиту "Операция" текстовой переменной из пункта 5. Если совпадение есть, выполняется именно эта операция.
Калькулятор готов.
Данный метод создания калькулятора для 1С не является эталонным или шаблонным. На базе нашего калькулятора вы можете создать свою обработку со своими алгоритмами и кодами.
Ниже ссылка на готовую обработку с полным примером кода калькулятора.
Основа любой учетной системы – это данные: наименование контрагента, сумма счета, дата проведения реализации. Базовые типы данных в программировании называются примитивными, и в среде разработки «1С:Предприятие 8» таких типов 7:
- null – задает отсутствие значения;
- число – задает любое десятичное число;
- строка – задает символьную строку, в том числе текст;
- дата – задает дату и время;
- буллево – задает логический результат «правда» или «ложь»;
- тип – идентифицирует тип данных у значения»;
- неопределенно – используется, когда необходимо задать значение, не принадлежащее ни к одному другому типу.
Вы можете подробно ознакомиться с этим и другими понятиями внутреннего языка, открыв в режиме конфигуратора справочник «Синаксис-помощник», который находится в разделе «Справка».
Полный курс программиста «1С» – с нуля до разработчика, способного решать практические учетные задачи в любой области.
Взаимодействие данных. Создание обработки «Калькулятор»
Функционирование учетной системы на платформе «1С:Предприятие 8» осуществляется благодаря взаимодействию данных между собой. Чтобы научиться работать с данными и осуществлять их базовое взаимодействие, разработайте несложную обработку «Калькулятор» – простейший манипулятор данными типа число.
Откройте конфигурацию («Конфигурация» – «Открыть конфигурацию»). Затем создайте новый документ для разработки («Файл» – «Новый»). В открывшемся окне выберите тип документа «Внешняя обработка».
Задайте разработке имя. В данном случае «Калькулятор». Создайте новую форму через «Конструктор форм». Для этого разработайте главное окно обработки. Чтобы это сделать, нажмите правой кнопкой на «Формы», далее – «Добавить».
Тип формы – «Форма обработки». Имя формы можно изменить, но в данном случае делать этого необязательно. Нажмите «Готово».
Вы увидите окно настройки формы. В правой части располагаются элементы формы, в левой – реквизиты. Внизу наглядное представление формы. В первую очередь создаете реквизит «Число1» (тип – число, длина – 10, точность – 2).
Далее необходимо добавить в форму элемент «Поле», через который будет задаваться реквизит «Число1». Для этого в свойствах поля необходимо указать в строке «ПутьКДанным» реквизит «Число1». Чтобы облегчить задачу, перетяните мышкой реквизит из правой части окна в левую. Соответствующее поле будет создано автоматически.
Далее повторите действие еще 3 раза. В результате у вас должно получиться 3 реквизита и соответствующие им 3 поля:
- «Число1» (Тип – Число);
- «Число2» (Тип – Число);
- «Результат» (Тип – Число).
Поля можно для удобства объединить в группу. Для этого создайте элемент («Группа» – «Обычная группа») и перетяните его мышью в новую группу.
Далее нажмите на «Команды» (вкладка расположена в правой части окна) и создайте их для осуществления основных алгебраических операций:
- сложить;
- вычесть;
- умножить;
- разделить;
- получить остаток от деления.
Затем перетяните команды в левую часть, чтобы создать советующие им элементы-кнопки. Кнопки, как и поля, можно объединить в группу для удобства.
Итак, вы создали форму калькулятора. Теперь необходимо прописать алгоритмы вычисления, которые называются процедурами. Процедуры задаются кодом, который прописывается во вкладке «Модуль» внизу конструктора формы.
Создание процедуры начинается с написания директивы «&НаКлиенте», которая означает, что процедура выполняется у вас на компьютере, а не на сервере.
Правила вычислений открываются словом «Процедура». Затем назначается объект выполнения процедуры следующим образом: «Название объекта (Тип объекта)». В данном случае строка будет иметь вид:
Процедура Сложить (Команда),
«Сложить» – название объекта, «Команда» – тип объекта.
Следующая строка задает алгоритм процедуры. Для процедуры арифметического вычисления используются реквизиты, участвующие в вычислении, и арифметические символы «+», «-», «*», «/» и другие. Таким образом, следующая строка будет иметь вид:
Результат=Число1+Число2;
Следующая строка заканчивает процедуру словом «КонецПроцедуры». Для процедуры сложения код будет выглядеть так:
Процедура Сложить (Команда),
Результат=Число1+Число2;
КонецПроцедуры
Далее аналогично напишите код для остальных операций (остаток от деления «Числа1» от «Числа2» задается символом «%»). Вы должны получить следующий результат:
Вы закончили создание обработки! Теперь ее можно будет сохранить на компьютере и загрузить в конфигурацию «1С» в режиме пользователя. После этого доступ к ней будет осуществляться через список «Внешние отчеты и обработки».
Освойте навыки разработчика «1С» на очных специализированных курсах от международного ИТ-интегратора «Первый Бит».
Хотите получать подобные статьи по четвергам?
Быть в курсе изменений в законодательстве?
Подпишитесь на рассылку
Сегодня доработаем функционал ввода числа. То есть сейчас у нас вводится с помощью мышки только однозначное число, а другие не вводятся.
Если вы попробуете ввести число в поле "Табло" с помощью клавиатуры, то все будет работать и считаться! Выводится однозначное число, так как мы просто присвоили и по нажатию выводится заданное число, но это нужно изменить.
Открываем форму и первоначально нужно изменить тип данных поля "Табло". Нужно изменить на строковый тип данных, так как строка мы можем объединять, а именно это нам и нужно, т.е. 1+1 в строке это будет 11. Как раз то что нам нужно.
Откроем форму и изменим тип поля "Табло" (Рисунок 1).
После этого откроем модуль и изменим процедуры по вводу чисел в поле "Табло". Для цифры "Ноль" (Рисунок 2).
1. Переменной присваивается та цифра, которая должна выводиться и в данном случае это ноль.
2. Переменной "Табло" присваивается значение, равное табло плюс количество символов, которое будет введено слева и равно оно 9.
3. Переменной "Табло" присваивается перевод из строки в число и количество символов, равное 11.
И таким же образом сделаем для остальных цифр (Рисунок 3).
Проверим работу (Рисунок 4).
И давайте попробуем посчитать и получим не правильный результат (Рисунок 5).
Все это потому, что не прописали перевод в число при выполнении операции "Сложение".
Поправим код (Рисунок 6).
Дальше этот калькулятор можно почти бесконечно продолжать совершенствовать и добавлять новые функции, но мы этого делать не будем, так как цель этих уроков - показать принцип разработки своего калькулятора и показать некоторые приемы.
Дальше вам останется таким же принципом доработать для оставшихся кнопок операции. При нажатии на кнопку будет срабатывать процедура и выполняться какая-то операция нахождения.
Ну и давайте теперь научимся делать эту внешнюю обработку частью конфигурации и наоборот, обработку из конфигурации делать внешней обработкой.
Сохраним обязательно изменения во внешней обработке.
Откроем конфигуратор, найдем строку "Обработки" и вызовем контекстное меню (Рисунок 7).
Напомню, что на прошлом занятии мы сделали калькулятор, который выполняет простейшие арифметические действия и на данный момент у него три поля ввода, а нам необходимо его усовершенствовать и сделать одно поле, которое будет называться "Табло".
Откроем форму обработки и удалим все поля ввода и добавим новое поле "Табло" (Рисунок 1).
Когда начнете удалять все поля, то платформа будет выдавать уведомления, что эти поля привязаны к коду! Вы игнорируйте их и просто удаляйте, так как код будет совершенно иным и с другими полями.
И теперь нужно добавить кнопку равенства, по нажатию на которую будем получать результат в табло (Рисунок 2).
Прежде чем переходить к выполнению действий, давайте запрограммируем нажатие цифр, то есть чтобы каждое число выводилось в поле "Табло".
Откроем форму и начнем с цифры "Ноль". Выделим эту кнопку в командах и создадим процедуру для свойства "Действие" (Рисунок 3).
В самой процедуре пропишем программный код (Рисунок 4).
Эта процедуры выполняет такое действие, при котором табло становится равным значению, в данном случае цифре ноль.
И таким же образом необходимо создать процедуру (через свойство "Действие") для всех остальных цифр.
Мой программный код выглядит следующим образом (Рисунок 5).
Проверим изменения (Рисунок 6).
Дальше калькулятор должен работать следующим образом:
1. Вводится число.
2. Нажимается действие (например, сложение), происходит обнуление табло и это значение должно записаться в буфер.
3. Вводится еще одно число.
4. Нажимается знак равенства.
5. Результат действия выводится в табло( результат = буфер + значение).
Для дальнейшего программирования калькулятора, сначала необходимо подготовить два дополнительных реквизита:
1. Один для хранения значений, то есть буфер.
2. Второй для выполнения операций, а точнее переменная, которой будет присваиваться значение (имя) операции.
Нужно добавить реквизиты, но перетаскивать их на форму ненужно!
Открываем форму и добавляем реквизит "Буфер" с произвольным типом (Рисунок 7).
Добавляем реквизит "Операция" с произвольным типом (Рисунок 8).
На форму их добавлять не обязательно, потому что они добавлены в обработку и платформа не будет выдавать ошибки, а учитывать, что они присутствуют.
Реквизиты подготовлены и теперь необходимо начать прописывать программный код для действий (операций сложения, вычитания и так далее), но это мы сделаем в следующем занятии.
На этом статья урока подходит к концу. Попробуйте выполнить все действия, которые описаны в этом уроке. Если что-то не получается, то вы всегда сможете написать вопрос о том, что вам непонятно или вернуться к предыдущим урокам и посмотреть их - ссылки внизу!
Ссылка для вступления телеграм-канал - t.me.Apiscourses
Подписаться в группу ВКонтакте
Прошлые уроки:
На этом все. Жду Вас на следующем занятии.
P.S. Подписывайтесь на мой канал :-)
программирование программирование 1с 1с предприятие обучение онлайн обучение 1с
Читайте также: