администрирование и конфигурирование субд. администрирование. Тема Архитектура системы 1С Предприятие иее концепция Вопрос Этапы современного развития программного обеспечения на платформе 1С Предприятие
Скачать 458.22 Kb.
|
след:»), далее идет имя метки, а затем двоеточие («:»), например: |
Если <Логическое_выражение> Тогда //операторы; Иначе //операторы; КонецЕсли; | Если <Логическое_выражение> Тогда //операторы; ИначеЕсли <Логическое_выражение> Тогда //операторы; Иначе //операторы; КонецЕсли; |
<Логическое_выражение> | Логическое выражение. |
Тогда | Операторы следующие за Тогда выполняются, если результатом логического выражения в конструкции Если является истина. |
//операторы | Исполняемый оператор или последовательность таких операторов. |
ИначеЕсли | Логическое выражение, следующее за ключевым словом ИначеЕсли, вычисляется только тогда, когда условия в Если и всех предшествующих ИначеЕсли оказались ложными. Операторы, следующие за конструкцией ИначеЕсли – Тогда, выполняются, если результатом логического выражения в данном ИначеЕсли является истина. |
Иначе | Операторы, следующие за ключевым словом Иначе, выполняются, если результаты логических выражений в конструкции Если и всех предшествующих конструкциях ИначеЕсли оказались ложными. |
КонецЕсли | Ключевое слово, которое завершает структуру оператора условного выполнения. |
<Логическое_выражение> | Логическое выражение. |
Цикл | Операторы, следующие за ключевым словом Цикл, выполняются, пока результатом логического выражения является истина. |
//операторы; | Исполняемый оператор или последовательность таких операторов. |
КонецЦикла | Ключевое слово, которое завершает структуру оператора цикла. |
<Имя_переменной> | Идентификатор переменной (счетчика цикла), значение которой автоматически увеличивается при каждом повторении цикла. |
<Выражение 1> | Числовое выражение, которое задает начальное значение, присваиваемое счетчику цикла при первом проходе цикла. |
По | Синтаксическая связка для параметра <Выражение2>. |
<Выражение 2> | Максимальное значение счетчика цикла. Когда переменная Имя_переменной становится больше чем <Выражение2>, выполнение оператора цикла Для прекращается. Величина приращения счетчика при каждом выполнении цикла равна 1. |
Цикл | Операторы, следующие за ключевым словом Цикл, выполняются, пока значение переменной Имя_переменной меньше значения <Выражение2>. |
//Операторы | Исполняемый оператор или последовательность таких операторов. |
КонецЦикла | Ключевое слово, которое завершает структуру оператора цикла. |
<Имя_переменной 1> | Идентификатор переменной, которой при каждом повторении цикла присваивается значение очередного элемента коллекции. |
Из | Синтаксическая связка для параметра <Имя переменной 2>. |
<Имя_переменной 2> | Идентификатор переменной или выражение, предоставляющее коллекцию. Элементы этой коллекции будут присваиваться параметру <Имя переменной 1>. |
Цикл | Операторы, следующие за ключевым словом Цикл, выполняются, пока значение переменной <Имя_переменной 1> меньше крайнего значения <Имя_переменной 2>. |
//Операторы | Исполняемый оператор или последовательность таких операторов. |
Прервать | Оператор, позволяющий прервать выполнение цикла в любой точке. После выполнение этого оператора управление передается оператору, следующему за ключевым словом КонецЦикла. |
Продолжить | Оператор, позволяющий немедленно передать управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Операторы, следующие в теле цикла за ним, на данной итерации обхода не выполняются. |
КонецЦикла | Ключевое слово, которое завершает структуру оператора цикла. |
н = 0;
Выборка = Справочники.Номенклатура.Выбрать();
Пока Выборка.Следующий() Цикл
н = н + 1;
Если н <= 10 Тогда
//пропускаем первые 10 элементов справочника
Перейти
// Некоторые действия | Исполняемый оператор или последовательность таких операторов. |
// Обработка исключительной ситуации | Исполняемый оператор или последовательность операторов, которые обрабатывают исключительную ситуацию. |
Исключение | Операторы, следующие за ключевым словом Исключение выполняются, если при выполнении последовательности операторов / Некоторые действия> произошла ошибка времени выполнения. |
КонецПопытки | Ключевое слово, которое завершает структуру оператора обработки исключительных ситуаций. |
Ниже показан пример реализации конструкции «Попытка…Исключение»:
Попытка
СредняяЦена = СуммаВсего / Количество;
Исключение
//Возникла ошибка деления на ноль.
//Будем считать, что количество равно 1.
Количество = 1;
СредняяЦена = СуммаВсего;
КонецПопытки;
Чем меньше программа будет содержать таких конструкций, тем лучше. Все потенциальные ошибки необходимо «отлавливать» по возможности еще до их возникновения. Конструкцию «Попытка…» следует применять для внешних ошибок и при работе с базой данных, т.е. для тех ошибок, которые не являются ошибкой написания программы.
Кроме того, внутри блока «Исключение...КонецПопытки» можно вызвать функцию ОписаниеОшибки, которая возвращает сообщение о возникшей ошибке в виде строки. Эту строку можно выдать в окно сообщений, записать в журнал регистрации или выполнить другие действия.
Помимо этого, существует команда Вызвать Исключение, которая может применяться только внутри блока обработки исключения. Хотя программист и обработал ошибку, но он может ее пропустить (передать обработчику вышестоящего уровня), например, если она неисправима:
Попытка
СредняяЦена = СуммаВсего / Количество;
Исключение
Сообщить(«Упс! Надо было проверить количество на ноль!»);
Сообщить(ОписаниеОшибки());
ЗаписьЖурналаРегистрации(ОписаниеОшибки());
//хотя мы и обработали ошибку, но программу все равно прервем
ВызватьИсключение;
КонецПопытки;
Обработчики исключений могут быть вложенными друг в друга. Если ошибка не обработана во внутреннем блоке «Исключение...КонецПопытки», тогда она обрабатывается внешним обработчиком, а если его нет, то выдается системное сообщение об ошибке.
Вопрос 5. Процедуры и функции.
Процедуры и функции являются блоками программы, которые можно вызвать по имени из другого места, например, из другой процедуры. Процедуры и функции могут иметь параметры, которые говорят о том, какие именно действия и с какими объектами она должна сделать. Функции отличаются от процедур только тем, что имеют возвращаемое значение.
Синтаксис процедуры и функции представлен ниже:
Процедура <Имя_проц>([[Знач] <Парам1>[=<ДефЗнач>],...,
[Знач] <ПapaмN>[=<ДeфЗнaч>]]) [Экспорт]
//Объявления локальных переменных;
//Операторы;
[Возврат;]
//Операторы;
КонецПроцедуры
//_______________________
Функция<Имя_функции>([[Знач]<Парам1>[=<ДефЗнач>],...,
[Знач]<ПарамN>[=<ДефЗнач>]])[Экспорт]
//Объявления локальных переменных;
//Операторы;
Возврат<ВозвращаемоеЗначение>;
//Операторы;
КонецФункции
Необходимо отметить, что ключевые слова Процедура, КонецПроцедуры, (Функция, КонецФункции) являются не операторами, а операторными скобками, поэтому не должны заканчиваться точкой с запятой (это может приводить к ошибкам выполнения модуля). В квадратных скобках размещены параметры (ключевые слова), которые являются необязательными.
Расшифровка синтаксиса процедуры и функции представлена в таблице 10.
Как уже отмечалось, отличие функции от процедуры заключается в том, что для функции ключевое слово Возврат является обязательным. Оно завершает выполнение функции и возвращает <ВозвращаемоеЗначение> в выражение, в котором используется функция. А само <ВозвращаемоеЗначение> – это выражение, значение которого содержит результат обращения к функции.
Таблица 10.
<Имя_проц> | Назначает имя процедуры. |
Знач | Необязательное ключевое слово, которое указывает на то, что следующий за ним параметр передается по значению, т.е. изменение значения формального параметра при выполнении процедуры никак не повлияет на фактический параметр, переданный при вызове процедуры. Если это ключевое слово не указано, то параметр процедуры передается по ссылке, то есть изменение внутри процедуры значения формального параметра приведет к изменению значения соответствующего фактического параметра. |
<Парам1>,..., <ПарамN> | Необязательный список формальных параметров, разделяемых запятыми. Значения формальных параметров должны соответсвовать значениям передаваемых при вызове процедуры фактических параметров. В этом списке определяются имена каждого из параметров так, как они используются в тексте процедуры. Список формальных параметров может быть пуст. |
=<ДефЗнач> | Необязательная установка значения параметра по умолчанию. Параметры с установленными значениями по умолчанию можно располагать в любом месте списка формальных параметров. Если параметр при вызове процедуры опущен, то он принимает либо установленное по умолчанию значение (если оно есть) либо принимает «пустое» значение (значение неопределенного типа). Если параметру не задано значение по умолчанию и он является последним в списке передаваемых параметров, то при вызове процедуры его нельзя опускать. Если параметру задано значение по умолчанию, и он является последним в списке, то при вызове процедуры его можно опускать в списке передаваемых фактических параметров и не ставить запятую перед опущенным параметром. Если параметру не задано значения по умолчанию, то при вызове процедуры его можно опускать в списке передаваемых фактических параметров, но разделительную запятую надо ставить. |
Экспорт | Необязательное ключевое слово, которое указывает на то, что данная процедура является доступной из других программных модулей. |
| Продолжение таблицы 5.9. |
//Объявления локальных переменных | Объявляются локальные переменные, на которые можно ссылаться только в рамках этой процедуры. |
//Операторы | Исполняемые операторы процедуры. |
Возврат | Необязательное ключевое слово, которое завершает выполнение процедуры и осуществляет возврат в точку программы, из которой было обращение к процедуре. Использование данного оператора в процедуре не обязательно. |
КонецПроцедуры | Обязательное ключевое слово, обозначающее конец исходного текста процедуры, завершение выполнения процедуры. Возврат в точку, из которой было обращение к процедуре. |