Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
1С_Язык.doc
Скачиваний:
3
Добавлен:
26.11.2019
Размер:
1.59 Mб
Скачать

4.2. Функции

Функция – это частный случай процедуры, отличающейся тем, что результат ее выполнения присваивается переменной, которое имеет в точности такое же имя, что и у функции [5]. Результат работы процедуры может вообще не выводиться, либо же организуется вывод их в переменные, не совпадающие с именем процедуры.

4.2.1. Пользовательские функции

Это функции, задаваемые пользователем.

Создадим функцию, вычисляющую квадрат расстояния от начала координат до точки (х, у):

Функция Радиус(x, y)

Возврат x*x + y*y;

КонецФункции

Сообщить("Радиус = " + Радиус(3,4));

Function Радиус(x, y)

Return x*x + y*y;

EndFunction

Message("Радиус = " + Радиус(3,4));

Рис. 4.2.1.1. Результат вычисления радиуса

Для сравнения создадим функцию в Maple:

4.2.2. Числовые функции

Степень в 1С вычисляет функция Pow(a, b). Обозначение Pow происходит от слова power – степень. Русскоязычного названия этой функции в 1С нет. Такая же функция используется, например, в С++, но во многих других языках пишут a^b.

Если основанием является число Эйлера, то вместо Pow используют функцию Exp. Например, вычисляют как Exp(x) – точно так же, как и во многих других обычных языках программирования.

Sqrt – вычисление квадратного корня.

Тригонометрические функции обозначаются так же, как во всех других языках программирования: Sin, Cos, Tan, Asin, Acos, Atan.

Log – натуральный логарифм,

Log10 – десятичный логарифм.

Цел (Int) – выдает целую часть числа без округления:

x = Int(12.132);

y = Int(12.754);

z = Int(-12.431);

Message("x = " + x);

Message("y = " + y);

Message("z = " + z);

Рис. 4.2.2.1. Результат округления

5. Простейшие формы в С++Builder и 1С

Формы – это то, к чему привыкли все видеть в графическом режиме интерфейса, то есть представление информации в виде окошек с кнопочками, полями и т.п. Операционная система Windows поэтому так и называется в переводе на русский – «Окна».

Но, кроме использования готовых окон, можно создавать новые окна, как, например, это можно сделать в таких визуальных средах, как Visual Basic for Applications, Delphi, C++Builder, Visual Studio и т.д. [7, 12, 16, 18].

Готовые окна есть и в 1С, и язык 1С также позволяет создавать новые окна [6].

Создадим простенькую форму (в режиме «Конфигуратор»).

Файл  Новый...  Внешняя обработка  Формы

Рис. 5.1. Добавление формы в проект

Переименуем файл «Работа_с_формой» вместо “ExternalDataProcessor1”. Выбираем опцию Формы .

Далее нажимаем на значок «Плюс», который выполняет команду «Добавить», затем нажать на кнопку Готово . Получится следующее:

Рис. 5.2. Начало заполнения формы

Далее на вкладке «Реквизит» нажимаем на вкладку «Команды» и затем на значок «Плюс», который выполняет команду «Добавить», затем в поле «Имя» вместо «Button1» впишем «ОК». Получится следующее:

Рис. 5.3. Добавление кнопки на форму

В этом же окне в поле «Действие» нажмем на значок лупы, получим:

Рис. 5.4. Программирование кнопки

Нажмем на вкладку «Форма».

Рис. 5.5. Перевод кнопки на форму

Затем полученную кнопку перетащить на Командную панель :

Полученное следует сохранить и отладить.

Рис. 5.6. Кнопка на форме

Нажмем на вкладку «Модуль».

Впишем туда самую простую программу: DoMessageBox(“Привет, Мир!”);

Рис. 5.7. Связывание команды с кнопкой

Сохраняем полученное.

Нажимаем на клавишу F5 , чтобы отладить программу.

Система автоматически перейдет в режим 1С:Предприятие :

Рис. 5.8. Пользовательский режим 1С:Предприятие

Далее Файл  Открыть…  выбираем созданный файл, на появившейся форме нажимаем кнопку ОК :

Рис. 5.9. Запуск программы

Для сравнения приведем ту же программу в Maple:

6. Создание приложений в С++ Builder и 1С

В данном разделе будет проведено сравнение двух сред разработки приложений - в среде 1С и C++Builder на примере создания кредитного калькулятора.

Сейчас многие люди берут кредиты. Схемы выплаты кредита в разных банках могут быть свои. Мы рассмотрим схему Сбербанка.

Допустим, взят кредит в Сбербанке. В срочных договорах (то есть кредитных договорах) Сбербанка расчет очередного платежа ведется только по величине остатка (то есть по оставшейся после предыдущего платежа величины задолженности), при условии, что платежи будут вносится 10 числа каждого месяца. Величина платежей не ограничивается.

Например, допустим, что последний раз платеж был произведен 10 марта. Сегодня, 10 апреля, решили выплатить платеж Q = 10 000 рублей.

Пусть годовая процентная ставка proc% = 20%, то есть proc = 0.2.

Допустим, что текущий остаток равен P0 = 100 000 рублей.

Количество дней N считаем по календарю с 11 марта по 10 апреля включительно, получаем N = 31 день (количество дней вперед).

Ставка на один день считается по формуле . Тогда банк с суммы Q заберет себе рублей, тогда в счет погашения долга пойдет сумма рублей.

За N дней величина долга возрастет на величину

Величина нового остатка после внесения платежа в Q рублей будет поэтому считаться по формуле

При наших данных эта величина составит

Это означает, что в день очередного платежа, то есть 10 мая, нужно исходить из этой полученной величины.

Все эти расчеты можно было бы вести на калькуляторе, но опыт показывает, что это все-таки утомительный процесс. Можно поискать в Интернете программы для расчета кредитного остатка, но они, как правило, много- функциональные, а в данном случае нужна всего-то одна функция. Кроме того, такие калькуляторы предлагают за плату...

Возникает вполне оправданная потребность в автоматизации расчета платежей по кредиту. К сожалению, в Интернете полно публикаций на тему о том, что в 1С это далеко не всегда удобно. Поэтому есть потребность создать простую и надежную программу в какой-либо среде.

6.1. C++Builder

В данной работе использована 6-я версия C++Builder [7].

После запуска C++ Builder имеется только одна форма Form1 - стартовая форма будущего приложения для Windows:

Рис. 6.1.1. Заготовка формы для калькулятора

Сетка на форме не очень удобна в работе, поэтому следует ее убрать:

Tools  Environment Options  Preferences 

 Designer  Display Grid/Snap To Grid

В результате получим:

Рис. 6.1.2. Переименование формы

Слева внизу видим так называемый Object Inspector (Список объектов). В нем напротив поля Caption мы видим «Form1» (это имя форме присвоено компьютером по умолчанию, оно на самом верху формы). Надо стереть это имя и написать в поле новое имя - «Кредит». Это имя немедленно отобразится на самой форме (Рис. ).

Надо сразу же сохранить пока еще не созданный, то есть пустой проект, для этого в меню File выберем команду Save Project As... (Сохранить проект как...), создаем папку Calculator, входим в эту папку, затем два раза нажимаем на кнопку Сохранить , при этом первое нажатие сохраняет пока еще пустой файл будущей программы на С++ под названием Unit1, второе нажатие сохраняет сам проект под названием Project1.bpr.

На форму помещаем 4 поля ввода. Для этого сначала нажимаем кнопку Edit (на рис. 6.1.3 обведена красным, надпись Edit идет в контекстной подсказке):

Рис. 6.1.3. Установка кнопок на форму

затем на форму:

Рис. 6.1.4. Работа с кнопкой

В Object Inspector напротив поля Text стираем текст Edit1. Это проделаем 4 раза. Перетаскивая мышкой эти поля и меняя размеры формы тоже с помощью мышки, получим что-то вроде следующего:

Рис. 6.1.5. Форма с полями

Теперь надо нажать на кнопку Label и затем щелкнуть мышью левее самого верхнего из четырех полей ввода. В Object Inspector в поле Caption стираем текст «Label1» и вписываем текст «Годовая ставка». Для остальных трех окон проделываем то же самое, вписывая соответствующие тексты («Текущий остаток», «К-во дней вперед», «Платеж» ).

Кроме того, с помощью кнопки Label создаем пустую надпись, стерев в поле Caption текст «Label5».

Затем с помощью кнопки Button ставим на форму две кнопки с надписями "Рассчитать" (для вычисления платежа) и «Очистить» (вторая кнопка понадобится для очистки полей ввода для решения других задач.

:

Рис. 6.1.6. Заготовка формы

Теперь созданные кнопки нужно «запрограммировать», то есть связать с ними нужный код.

Начнем с кнопки Очистить. Если щелкнуть по нему мышкой, то появится текстовый редактор для написания кода для кнопки:

void __fastcall

TForm1::Button2Click(TObject *Sender)

{

}//----------------------------------------

Между двумя фигурными скобками нужно вручную вписать текст:

Form1->Edit1->Clear();

Form1->Edit2->Clear();

Form1->Edit3->Clear();

Form1->Edit4->Clear();

Label5 -> Caption = ""

Нажимаем на кнопку Сохранить. Затем переключаемся опять на форму. Теперь дважды щелкаем по кнопке Рассчитать.

Между двумя фигурными скобками нужно вписать текст:

float proc, P0, Q, P1, N;

proc = StrToFloat(Edit1->Text)/100;

P0 = StrToFloat(Edit2->Text);

N = StrToFloat(Edit3->Text);

P1 = P0*(1.+proc*N/365.) - StrToFloat(Edit4 ->Text);

Label5 -> Caption = “Следующий остаток”: +

FloatToStrF(P1,ffGeneral,7,2);

Нажимаем на кнопку Сохранить. Проект готов. Теперь нажимаем на кнопку Play или на клавишу F9.

Вводим исходные данные (при вводе десятичных дробей надо использовать десятичную запятую, а не десятичную точку). Если годовая ставка 20%, то в поле «Годовая ставка» вводим 20 (без знака процента).

Нажав на кнопку Рассчитать, получаем:

Рис. 6.1.7. Результаты расчетов

Закрываем теперь все окна на рабочем столе, заходим в папку C:\Program Files\Borland\CBuilder6\ Projects\Calculator, находим в нем файл с названием Project1.exe, создаем для него ярлык, переименовываем его на «Кредит» и переносим на рабочий стол.

6.2. 1C

Создаем форму , назвав соответствующий файл «Калькулятор».

На форму помещаем две кнопки, одну из них назовем Рассчитать , другую Очистить .

Далее на вкладке «Реквизит» нажимаем на вкладку «Реквизиты» и затем на значок «Плюс», который выполняет команду «Добавить», затем в поле «Имя» вместо «Реквизит1» впишем «ГодоваяСтавка». Полученный реквизит перетаскиваем мышкой на форму.

Точно так же вводим реквизиты «ТекущийОстаток», «КвоДнейВперед», «Платеж», «СледующийОстаток»:

Рис. 6.2.1. Создание полей и кнопок

После отладки получится следующее:

Рис. 6.2.2.

Пока на этом этапе кнопки не работают.

Начнем с кнопки Очистить. Выделим эту кнопку и нажмем на вкладку «Модуль».

&НаКлиенте

Процедура Очистить(Команда)

ГодоваяСтавка = 0;

ТекущийОстаток = 0;

КвоДнейВперед = 0;

Платеж = 0;

СледующийОстаток = 0;

КонецПроцедуры

Далее программируем кнопку Рассчитать:

Процедура Рассчитать(Команда)

proc = ГодоваяСтавка/100;

PC = ТекущийОстаток;

N = КвоДнейВперед;

Q = Платеж;

СледующийОстаток = PC*(1+proc/365*N) - Q;

КонецПроцедуры

Калькулятор готов.

Нажимаем на клавишу F5 , чтобы отладить программу.

Система автоматически перейдет в режим 1С:Предприятие, запускаем калькулятор, вводим данные в поля калькулятора, нажимаем ОК и получаем результат:

Рис. 6.2.3. Результат расчета

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]