Главная страница
Навигация по странице:

  • Конструкция «(…, …, …)».

  • Логические выражения.

  • Операторы цикла. Конструкция «Пока…Цикл».

  • Конструкция «Для…По…Цикл».

  • Конструкция «Для Каждого…Из…Цикл».

  • Безусловные переходы.

  • Обработка исключений.

  • администрирование и конфигурирование субд. администрирование. Тема Архитектура системы 1С Предприятие иее концепция Вопрос Этапы современного развития программного обеспечения на платформе 1С Предприятие


    Скачать 458.22 Kb.
    НазваниеТема Архитектура системы 1С Предприятие иее концепция Вопрос Этапы современного развития программного обеспечения на платформе 1С Предприятие
    Анкорадминистрирование и конфигурирование субд
    Дата26.04.2022
    Размер458.22 Kb.
    Формат файлаdocx
    Имя файлаадминистрирование.docx
    ТипДокументы
    #498743
    страница7 из 8
    1   2   3   4   5   6   7   8


    Операторы условия.

    Конструкция «Если…Тогда».

    Оператор «Если» управляет выполнением программы, основываясь на результате одного или более логических выражений. Он полностью аналогичен подобным операторам в других языках программирования. Данный оператор может содержать любое количество групп операторов, возглавляемых конструкциями «ИначеЕсли – Тогда2. Синтаксис оператора «Если» и расшифровка его ключевых слов и наборов параметров представлены соответственно в таблицах 4 и 5.

     

    Таблица 4.

     

    Если <Логическое_выражение> Тогда

    //операторы;

    Иначе

    //операторы;

    КонецЕсли;

     

    Если <Логическое_выражение> Тогда

    //операторы;

    ИначеЕсли <Логическое_выражение> Тогда

    //операторы;

    Иначе

    //операторы;

    КонецЕсли;

     

    Таблица 5.

     

    <Логическое_выражение>

    Логическое выражение.

    Тогда

    Операторы следующие за Тогда выполняются, если результатом логического выражения в конструкции Если является истина.

    //операторы

    Исполняемый оператор или последовательность таких операторов.

    ИначеЕсли

    Логическое выражение, следующее за ключевым словом ИначеЕсли, вычисляется только тогда, когда условия в Если и всех предшествующих ИначеЕсли оказались ложными. Операторы, следующие за конструкцией ИначеЕсли – Тогда, выполняются, если результатом логического выражения в данном ИначеЕсли является истина.

    Иначе

    Операторы, следующие за ключевым словом Иначе, выполняются, если результаты логических выражений в конструкции Если и всех предшествующих конструкциях ИначеЕсли оказались ложными.

    КонецЕсли

    Ключевое слово, которое завершает структуру оператора условного выполнения.

     

    Ключевые слова ИначеЕсли, Иначе и КонецЕсли желательно записывать с новой строки.

    Пример использования оператора условия выглядит следующим образом:

     

    Если Найдено Тогда

    СформироватьПользовательскийОтчет(ВыбТипОтчета);

    Иначе

    СформироватьОтчетПоУмолчанию();

    КонецЕсли;

     

    Конструкция «?(…, …, …)».

    Данная конструкция позволяет записать условный оператор в одну строку и вычислить его как выражение. Например:

     

    Комментарий=?(Количество=0,»Пусто»,Строка(Количество)+»шт.» );

     

    Обычно эта конструкция применяется в выражениях и работает как следующая функция:

     

    Функция СокращенноеЕсли(РезультатУсловия,

    выражение1,выражение2)

    Если РезультатУсловия Тогда       //Истина

    Возврат выражение1;

    Иначе                                              //Ложь

    Возврат выражение2;

    КонецЕсли;

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

     

    Логические выражения.

    В операторе «Если», конструкциях «?(...)», а также в цикле «Пока» применяются логические выражения, т.е. такие, результат которых имеет тип «булево» с двумя значениями: Истина и Ложь. В логических выражениях могут применяться логические сомножители НЕ, И, ИЛИ (в порядке приоритета). Для задания правильного порядка вычисления рекомендуется расставлять скобки. Например:

     

    Если (НЕ Страна = ВыбСтрана) ИЛИ

    (Цена > 100 И Цена < 1000) Тогда



    КонецЕсли;

     

    Кроме того, при вычислении логических выражений применяются следующие правила:

         если один из сомножителей оператора И равен Ложь, то конечный результат выражения будет Ложь, независимо от значения других сомножителей;

         если один из сомножителей оператора ИЛИ равен Истина, то конечный результат выражения будет Истина, независимо от значения других сомножителей.

     

    Операторы цикла.

    Конструкция «Пока…Цикл».

    Данный оператор цикла предназначен для циклического повторения операторов, находящиеся внутри конструкции Цикл...КонецЦикла. Цикл выполняется до тех пор, пока логическое выражение истинно. Если на очередном витке цикла оно перестает выполняться (дает значение Ложь), то цикл прекращается. Условие выполнения цикла всегда проверяется вначале, т.е. перед выполнением цикла.

    Ниже представлен синтаксис оператора «Пока…Цикл», а его расшифровка – в таблице 6.

     

    Пока <Логическое_выражение> Цикл

    //операторы;

    КонецЦикла;

     

    Таблица 6.

     

    <Логическое_выражение>

    Логическое выражение.

    Цикл

    Операторы, следующие за ключевым словом Цикл, выполняются, пока результатом логического выражения является истина.

    //операторы;

    Исполняемый оператор или последовательность таких операторов.

    КонецЦикла

    Ключевое слово, которое завершает структуру оператора цикла.

     

    Ниже показан пример реализации оператора цикла «Пока»:

     

    н = 0;

    Выборка = Справочники.Номенклатура.Выбрать();

    Пока Выборка.Следующий() Цикл

    Если Выборка.ПометкаУдаления Тогда

    Продолжить;                //возьмем следующий элемент

    КонецЕсли;

    н = н + 1;

    Если н > 10 Тогда

    Прервать;           //досрочный выход из цикла

    КонецЕсли;

    Сообщить («Товар: » + Выборка.Наименование);

    КонецЦикла;

     

    Конструкция «Для…По…Цикл».

    Данный оператор цикла предназначен для циклического повторения операторов, находящиеся внутри конструкции Цикл...КонецЦикла, известное количество раз. Перед началом выполнения цикла значение <Выражение1> присваивается переменной <Имя_переменной>. Значение <Имя_переменной> автоматически увеличивается при каждом проходе цикла. Цикл выполняется пока значение переменной <Имя_переменной> меньше или равно значению <Выражение2>. Величина приращения счетчика при каждом выполнении цикла равна 1. Условие выполнения цикла всегда проверяется вначале, перед выполнением цикла.

    Ниже представлен синтаксис оператора «Для…По…Цикл», а его расшифровка – в таблице 7.

     

    Для <Имя_переменной> = <Выражение1> По

    <Выражение2> Цикл

    //Операторы;

    КонецЦикла;

     

    В качестве примера реализации цикла «Для» представлен следующий цикл, который 12 раз выведет номер месяца в окно служебных сообщений:

     

    Для Меc = 1 По 12 Цикл

    Сообщить(Меc);

    КонецЦикла;

     

    Таблица 7.

     

    <Имя_переменной>

    Идентификатор переменной (счетчика цикла), значение которой автоматически увеличивается при каждом повторении цикла.

    <Выражение 1>

    Числовое выражение, которое задает начальное значение, присваиваемое счетчику цикла при первом проходе цикла.

    По

    Синтаксическая связка для параметра <Выражение2>.

    <Выражение 2>

    Максимальное значение счетчика цикла. Когда переменная Имя_переменной становится больше чем <Выражение2>, выполнение оператора цикла Для прекращается. Величина приращения счетчика при каждом выполнении цикла равна 1.

    Цикл

    Операторы, следующие за ключевым словом Цикл, выполняются, пока значение переменной Имя_переменной меньше значения <Выражение2>.

    //Операторы

    Исполняемый оператор или последовательность таких операторов.

    КонецЦикла

    Ключевое слово, которое завершает структуру оператора цикла.

     

    Конструкция «Для Каждого…Из…Цикл».

    Данная конструкция предназначена для циклического обхода элементов коллекции. В таких циклах в качестве переменной цикла выступает не число, а объект – элемент коллекции. При каждой итерации цикла возвращается новый элемент коллекции. Обход осуществляется до тех пор, пока не будут перебраны все элементы коллекции.

    Ниже представлен синтаксис оператора «Для Каждого…Из…Цикл», а его расшифровка – в таблице 8.

     

    Для каждого <Имя переменной 1> Из

    <Имя переменной 2> Цикл

    // Операторы;

    Прервать;

    // Операторы;

    Продолжить;

    // Операторы;

    КонецЦикла;

     

    Таблица 8.

     

    <Имя_переменной 1>

    Идентификатор переменной, которой при каждом повторении цикла присваивается значение очередного элемента коллекции.

    Из

    Синтаксическая связка для параметра <Имя переменной 2>.

    <Имя_переменной 2>

    Идентификатор переменной или выражение, предоставляющее коллекцию. Элементы этой коллекции будут присваиваться параметру <Имя переменной 1>.

    Цикл

    Операторы, следующие за ключевым словом Цикл, выполняются, пока значение переменной <Имя_переменной 1> меньше крайнего значения <Имя_переменной 2>.

    //Операторы

    Исполняемый оператор или последовательность таких операторов.

    Прервать

    Оператор, позволяющий прервать выполнение цикла в любой точке. После выполнение этого оператора управление передается оператору, следующему за ключевым словом КонецЦикла.

    Продолжить

    Оператор, позволяющий немедленно передать управление в начало цикла, где производится вычисление и проверка условий выполнения цикла. Операторы, следующие в теле цикла за ним, на данной итерации обхода не выполняются.

    КонецЦикла

    Ключевое слово, которое завершает структуру оператора цикла.

     

    Ниже показан пример реализации оператора цикла «Для Каждого…Из»:

     

    ПустаяСсылка = Справочники.Номенклатура.ПустаяСсылка();

    Для Каждого СтрокаТЗ Из тзСостав Цикл

    //тело цикла

    Если СтрокаТЗ.Товар = ПустаяСсылка Тогда

    Продолжить; //возьмем следующую строку

    Иначе

    Если СтрокаТЗ.Товар = ВыбТовар Тогда

    Прервать; //досрочный выход из цикла

    КонецЕсли;

    КонецЕсли;

    КонецЦикла;

     

    В данном примере в качестве переменной цикла выступает элемент коллекции – объект СтрокаТаблицыЗначений. Кроме того, внутри цикла нет никакой переменной, содержащей порядковый номер или индекс элемента коллекции. Если это необходимо, то можно добавить переменную, которая будет увеличиваться внутри цикла.

    Для некоторых коллекций по элементу можно определить его индекс. Если элемент не принадлежит данной коллекции, то метод Индекс возвращает -1 (минус единицу). Например:

     

    Для Каждого СтрокаТЗ Из тзСостав Цикл

    ИндексСтроки = тзСостав.Индекс(СтрокаТЗ);

    КонецЦикла;

     

    Безусловные переходы.

    В процессе решения прикладных задач в ряде случаев может возникнуть необходимость принудительно передать управление в определенную точку программы. Это реализуется с помощью метки и оператора «Перейти»:

     

    Перейти <Метка>;

     

    Метка может быть у любого исполняемого оператора и должна начинаться со знака тильды («

    »), далее идет имя метки, а затем двоеточие («:»), например:

     

    н = 0;

    Выборка = Справочники.Номенклатура.Выбрать();

    Пока Выборка.Следующий() Цикл

    н = н + 1;

    Если н <= 10 Тогда

    //пропускаем первые 10 элементов справочника

    Перейти след;

    КонецЕсли;

    Сообщить(Выборка.Наименование);

    след:

    //возьмем следующий элемент

    КонецЦикла;

     

    С помощью оператора «Перейти» можно передавать управление в пределах процедуры (функции) или в пределах раздела основной программы модуля. Но этим способом нельзя выйти из процедуры или функции.

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

     

    Обработка исключений.

    Обработка исключений предназначена для перехвата ошибок (исключительных ситуаций), возникающих в процессе работы программы. Если возникла ошибка, и она не была перехвачена, то выдается системное сообщение об ошибке, и выполнение модуля прерывается. Однако разработчик может перехватывать возникающие ошибки и обрабатывать их по своему усмотрению. Для этого используется конструкция «Попытка…Исключение». Синтаксис данной конструкции выглядит следующим образом:

     

    Попытка

    // Некоторые действия;

    Исключение

    // Обработка исключительной ситуации;

    КонецПопытки;

    Расшифровка указанного синтаксиса представлена в таблице 9.

     

    Таблица 9.

     

    // Некоторые действия

    Исполняемый оператор или последовательность таких операторов.

    // Обработка исключительной ситуации

    Исполняемый оператор или последовательность операторов, которые обрабатывают исключительную ситуацию.

    Исключение

    Операторы, следующие за ключевым словом Исключение выполняются, если при выполнении последовательности операторов Некоторые действия> произошла ошибка времени выполнения.

    КонецПопытки

    Ключевое слово, которое завершает структуру оператора обработки исключительных ситуаций.

     

    Ниже показан пример реализации конструкции «Попытка…Исключение»:

     

    Попытка

    СредняяЦена = СуммаВсего / Количество;

    Исключение

    //Возникла ошибка деления на ноль.

    //Будем считать, что количество равно 1.

    Количество = 1;

    СредняяЦена = СуммаВсего;

    КонецПопытки;

     

    Чем меньше программа будет содержать таких конструкций, тем лучше. Все потенциальные ошибки необходимо «отлавливать» по возможности еще до их возникновения. Конструкцию «Попытка…» следует применять для внешних ошибок и при работе с базой данных, т.е. для тех ошибок, которые не являются ошибкой написания программы.

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

    Помимо этого, существует команда Вызвать Исключение, которая может применяться только внутри блока обработки исключения. Хотя программист и обработал ошибку, но он может ее пропустить (передать обработчику вышестоящего уровня), например, если она неисправима:

     

    Попытка

    СредняяЦена = СуммаВсего / Количество;

    Исключение

    Сообщить(«Упс! Надо было проверить количество на ноль!»);

    Сообщить(ОписаниеОшибки());

    ЗаписьЖурналаРегистрации(ОписаниеОшибки());

    //хотя мы и обработали ошибку, но программу все равно прервем

    ВызватьИсключение;

    КонецПопытки;

     

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

     

    Вопрос 5. Процедуры и функции.

     

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

    Синтаксис процедуры и функции представлен ниже:

     

    Процедура <Имя_проц>([[Знач] <Парам1>[=<ДефЗнач>],...,

    [Знач] <ПapaмN>[=<ДeфЗнaч>]]) [Экспорт]

    //Объявления локальных переменных;

    //Операторы;

    [Возврат;]

    //Операторы;

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

     

    //_______________________

     

    Функция<Имя_функции>([[Знач]<Парам1>[=<ДефЗнач>],...,

    [Знач]<ПарамN>[=<ДефЗнач>]])[Экспорт]

    //Объявления локальных переменных;

    //Операторы;

    Возврат<ВозвращаемоеЗначение>;

    //Операторы;

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

     

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

    Расшифровка синтаксиса процедуры и функции представлена в таблице 10.

    Как уже отмечалось, отличие функции от процедуры заключается в том, что для функции ключевое слово Возврат является обязательным. Оно завершает выполнение функции и возвращает <ВозвращаемоеЗначение> в выражение, в котором используется функция. А само <ВозвращаемоеЗначение> – это выражение, значение которого содержит результат обращения к функции.

     

    Таблица 10.

     

    <Имя_проц>

    Назначает имя процедуры.

    Знач

    Необязательное ключевое слово, которое указывает на то, что следующий за ним параметр передается по значению, т.е. изменение значения формального параметра при выполнении процедуры никак не повлияет на фактический параметр, переданный при вызове процедуры. Если это ключевое слово не указано, то параметр процедуры передается по ссылке, то есть изменение внутри процедуры значения формального параметра приведет к изменению значения соответствующего фактического параметра.

    <Парам1>,..., <ПарамN>

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

    =<ДефЗнач>

    Необязательная установка значения параметра по умолчанию. Параметры с установленными значениями по умолчанию можно располагать в любом месте списка формальных параметров.

    Если параметр при вызове процедуры опущен, то он принимает либо установленное по умолчанию значение (если оно есть) либо принимает «пустое» значение (значение неопределенного типа).

    Если параметру не задано значение по умолчанию и он является последним в списке передаваемых параметров, то при вызове процедуры его нельзя опускать.

    Если параметру задано значение по умолчанию, и он является последним в списке, то при вызове процедуры его можно опускать в списке передаваемых фактических параметров и не ставить запятую перед опущенным параметром.

    Если параметру не задано значения по умолчанию, то при вызове процедуры его можно опускать в списке передаваемых фактических параметров, но разделительную запятую надо ставить.

    Экспорт

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

     

    Продолжение таблицы 5.9.

    //Объявления локальных переменных

    Объявляются локальные переменные, на которые можно ссылаться только в рамках этой процедуры.

    //Операторы

    Исполняемые операторы процедуры.

    Возврат

    Необязательное ключевое слово, которое завершает выполнение процедуры и осуществляет возврат в точку программы, из которой было обращение к процедуре. Использование данного оператора в процедуре не обязательно.

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

    Обязательное ключевое слово, обозначающее конец исходного текста процедуры, завершение выполнения процедуры. Возврат в точку, из которой было обращение к процедуре.
    1   2   3   4   5   6   7   8


    написать администратору сайта