Скачать презентацию Глава 2 Встроенный язык 2 1 Программные модули Скачать презентацию Глава 2 Встроенный язык 2 1 Программные модули

V8_2_Язык.ppt

  • Количество слайдов: 20

Глава 2. Встроенный язык 2. 1. Программные модули Виды программных модулей Общие модули принадлежат Глава 2. Встроенный язык 2. 1. Программные модули Виды программных модулей Общие модули принадлежат всей конфигурации в целом, но в отличие от модуля приложения (см. ниже) их может быть несколько, например, модули Расчет. Налогов, Обработка. Документов. Общие модули не могут содержать объявлений переменных, и в них нет раздела основной программы, таким образом, они состоят только из процедур и функций. Модуль приложения. Это модуль, который относится ко всей конфигурации в целом и может быть только один. В нем располагаются процедуры - обработчики событий, которые инициализируются при старте и окончании работы системы. Возможно объявление переменных, описание процедур и функций, которые будут доступны в любом модуле конфигурации(кроме общих модулей и модуля внешнего соединения). В данном модуле могут вызываться экспортируемые проц. и ф-ции общих модулей.

(продолжение) Модуль внешнего соединения. Если конфигурация запускается не в режиме клиентской сессии, а через (продолжение) Модуль внешнего соединения. Если конфигурация запускается не в режиме клиентской сессии, а через СОМ-соединение, то вместо модуля приложения используется модуль внешнего соединения, который в конфигурации может быть только один. Модули прикладных объектов. У некоторых прикладных объектов конфигурации могут быть собственные модули, например, модуль документа Расходная. Накладная, модуль справочника Номенклатура. Не следует их путать с модулями форм этих объектов. Модули форм. У каждой формы есть модуль, в котором определяется поведение формы и действия, выполняемые из нее, например, открытие других форм. Модуль сеанса - автоматически выполняется при старте системы и предназначен для инициализации параметров сеанса и отработки действий, связанных с сеансом работы. Исполнение модуля происходит после начала исполнения модуля приложения (до

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

(продолжение) Например, ниже приведен модуль документа: //экспортируемые переменные Перем Нач. Дата Экспорт; Перем Кон. (продолжение) Например, ниже приведен модуль документа: //экспортируемые переменные Перем Нач. Дата Экспорт; Перем Кон. Дата Экспорт; //локальная переменная модуля Перем м. Период. Строкой; Процедура Печать(Таб. Док=Неопределено) Экспорт //эта процедура будет доступна как метод объекта // Документ. Объект …. Конец. Процедуры Функция Получить. Группировку(Результат. Запроса, Имя. Группировки) //это локальная процедура модуля Конец. Функции

Контекст модулей Контекст обозначает окружение модуля, т. е. какие ему будут доступны переменные, объекты, Контекст модулей Контекст обозначает окружение модуля, т. е. какие ему будут доступны переменные, объекты, свойства, методы и события. Виды контекстов : Глобальный контекст , доступный во всех модулях, состоит из следующих частей: • свойства, методы и события глобального контекста (например, свойство Рабочая. Дата), • системные перечисления и системные наборы значений (например, Код. Возврата. Диалога и Символы). В контексте модуля приложения (или модуля внешнего соединения) доступны экспортируемые переменные, процедуры и функции общих модулей.

(продолжение) В контексте модуля прикладного объекта есть доступ к реквизитам и табличным частям объекта, (продолжение) В контексте модуля прикладного объекта есть доступ к реквизитам и табличным частям объекта, а также его методам и событиям. Например, в модуле документа Расходная. Накладная доступны реквизиты документа и его табличные части, можно вызывать методы документа и обрабатывать события. В контексте модуля формы доступны реквизиты формы, а также ее свойства, методы и события. Если у формы назначен основной реквизит, то в модуле формы становятся доступны свойства и методы прикладного объекта, используемого в качестве основного реквизита.

2. 2. Конструкции встроенного языка 1. «Если <логич. выражение>Тогда …. Конец. Если Оператор Если 2. 2. Конструкции встроенного языка 1. «Если <логич. выражение>Тогда …. Конец. Если Оператор Если может иметь ветви Иначе. Если, а также ветвь Иначе. //1 -й пример Если Выборка. Следующий() Тогда Предупреждение( «Есть данные в выборке!"); Конец. Если; //2 -й пример Если Сотр. Категория = Перечисления. Категории. Совместитель Тогда //обработаем как совместителя Иначе //обычный сотрудник Конец. Если;

(продолжение) В логических выражениях могут применяться знаки арифметических операций (+ - * / %-остаток (продолжение) В логических выражениях могут применяться знаки арифметических операций (+ - * / %-остаток от деления), операций сравнения (> >= < <= = <>), логических операций (НЕ, ИЛИ) (в порядке приоритета). Для задания правильного порядка вычисления рекомендуется расставлять скобки, например: Если (НЕ Страна = Выб. Страна) ИЛИ (Цена > 100 И Цена < 1000) Тогда В 1 С: Предприятии 8 введено сокращенное вычисление логических выражений. Это означает, что если по части выражения можно определить конечный результат, тогда остаток логического выражения не вычисляется. Например, Если Цена > 10 И Цена < 20 Тогда

(продолжение) 2. ? (. . . , . . . ) Данная конструкция позволяет (продолжение) 2. ? (. . . , . . . ) Данная конструкция позволяет записать условный оператор в одну строку и вычислить его как выражение. Пример: Комментарий = ? (Количество=0, "Пусто", Строка(Количество) + "шт. "); 3. Оператор присваивания <Назначение> = <Источник> <Назначение>- переменная или свойство объекта языка <Источник> - выражение Ф=И; Стр1=“ 2 s 8 dgааффф”; Дата. Документа=‘ 20080717’;

(продолжение) 4. Цикл «Для. . . По. . . Цикл» Цикл «Для. . . (продолжение) 4. Цикл «Для. . . По. . . Цикл» Цикл «Для. . . По» применяется для записи циклов с известным числом повторений. Например, следующий цикл 12 раз выведет номер месяца в окно служебных сообщений: Для Мес =1 По 12 Цикл Сообщить(Мес); Конец. Цикла; Переменная Мес называется переменной цикла или счетчиком цикла. Не следует изменять значение переменной цикла внутри него. Это нарушает принципы структурного программирования и может привести к трудно обнаруживаемым ошибкам.

(продолжение) 5. Цикл «Для Каждого. . . Из. . . Цикл» предназначен для обхода (продолжение) 5. Цикл «Для Каждого. . . Из. . . Цикл» предназначен для обхода элементов коллекции. В качестве переменной цикла выступает не число, а объект - элемент коллекции, например, объект Строка. Таблицы. Значений в следующем примере: Пустая. Ссылка = Справочники. Номенклатура. Пустая. Ссылка(); // обрабатываем т. ч. док-та «Расходная. Накладная» для Каждого Строка. ТЗ Из тз. Состав Цикл //тело цикла Если Строка. ТЗ. Товар = Пустая. Ссылка Тогда Продолжить; //возьмем следующую строку Иначе Если Строка. ТЗ. Товар = Выб. Товар Тогда Прервать; //досрочный выход из цикла Конец. Если; Конец. Цикла;

(продолжение) 6. Цикл «Пока. . . Цикл» - для реализации циклов с неизвестным числом (продолжение) 6. Цикл «Пока. . . Цикл» - для реализации циклов с неизвестным числом повторений. Цикл выполняется до тех пор, пока логическое выражение истинно. Пример: н = 0; Выборка = Справочники. Номенклатура. Выбрать(); Пока Выборка. Следующий() Цикл Если Выборка. Пометка. Удаления Тогда Продолжить; //возьмем следующий элемент Конец. Если; н = н + 1; Если н > 10 Тогда Прервать; //досрочный выход из цикла Конец. Если; Сообщить("Товар: " + Выборка. Наименование); Конец. Цикла;

(продолжение) 7. Обработка исключений : «Попытка. . . Исключение» Обработка исключений предназначена для перехвата (продолжение) 7. Обработка исключений : «Попытка. . . Исключение» Обработка исключений предназначена для перехвата ошибок (исключительных ситуаций), возникающих в процессе работы программы. Если возникла ошибка, и она не была перехвачена, то выдается системное сообщение об ошибке, и выполнение модуля прерывается. Однако разработчик может перехватывать возникающие ошибки и обрабатывать их по своему усмотрению, например: Попытка Средняя. Цена = Сумма. Всего / Количество; Исключение //Возникла ошибка деления на ноль. //Будем считать, что количество равно 1. Количество = 1 ; Средняя. Цена = Сумма. Всего; Конец. Попытки; Самостоятельно: Вызвать. Исключение, Выполнить, Добавить. Обработчик, Удалить. Обработчик

2. 3. Процедуры и функции Процедура Печать(Таб. Док) Макет = Получить. Макет( 2. 3. Процедуры и функции Процедура Печать(Таб. Док) Макет = Получить. Макет("Основной"); Таб. Док. Вывести(Макет. Получить. Область("Бланк")) ; Конец. Процедуры Функция Есть. Право. Использования(Имя. Отчета) //возвращаемое значение функции Возврат Право. Доступа("Использование", Отчеты[Имя. Отчета]); Конец. Функции Процедура Кнопка. Печать. Нажатие(Элемент) Если НЕ Есть. Право. Использования(Имя. Отчета) Тогда Возврат; //досрочный выход из процедуры Конец. Если Таб. Док = Новый Табличный. Документ; Печать(Таб. Док); //вызов процедуры Печать Таб. Док. Показать(); Конец. Процедуры

(продолжение) Параметры у процедуры/функции могут быть необязательными. Тогда их можно будет опускать при вызове. (продолжение) Параметры у процедуры/функции могут быть необязательными. Тогда их можно будет опускать при вызове. Для необязательных параметров должно быть указано значение по умолчанию, например: Процедура Печать(Таб. Док = Неопределено) Экспорт Если Таб. Док = Неопределено Тогда Таб. Док = Новый Табличный. Документ; фл. Показывать = Истина; Иначе фл. Показывать = Ложь; Конец. Если; Макет = Получить. Макет("Основной"); Таб. Док. Вывести(Макет. Получить. Область("Бланк")); Если фл. Показывать Тогда Таб. Док. Показать(); Конец. Если; Конец. Процедуры Замечание 1. В 1 С: Предприятии 8 порядок следования процедур и функций в модуле не важен

(продолжение) Замечание 2. Параметры процедуры или функции по умолчанию передаются по ссылке. Это означает, (продолжение) Замечание 2. Параметры процедуры или функции по умолчанию передаются по ссылке. Это означает, что изменение формального параметра внутри процедуры или функции приведет к изменению фактического параметра в том месте, где она вызывается. Чтобы гарантированно передать параметр по значению, нужно перед именем параметра вставить ключевое слово Знач.

2. 4. Примитивные типы данных Поддерживаются следующие примитивные типы данных: • число, • строка, 2. 4. Примитивные типы данных Поддерживаются следующие примитивные типы данных: • число, • строка, • дата (включает в себя время), • булево (имеет два значения: Истина и Ложь), • значение Неопределено, • значение Null (для определения отсутствующего значения в таблицах базы данных, например, при соединении таблиц), • Тип (значения специального типа «Тип» нужны для представления и сравнения типов данных ). Примеры. 1. литерал типа Булево чч=Истина;

(продолжение) 2. литерал типа Число Б=12345. 6789; 3. литерал Null Если Мой. Запрос. Номенклатура (продолжение) 2. литерал типа Число Б=12345. 6789; 3. литерал Null Если Мой. Запрос. Номенклатура = NULL тогда …. . 4. Литералы типа ДАТА - это строка цифр, заключенная в одинарные кавычки вида ‘ГГГГММДДччммсс’ (Г-год, М-месяц, Д-день, ч-часы, м-минуты, с -секунды) Примеры: ‘ 20080506’ ‘ 20080506122000’ ‘ 00010101’ – литерал для даты, соответствующей началу отсчета. В литерале допускается использование различных разделителей Дата(‘ 2003. 23 10: 45: 23’) = “ 2003. 23 10: 45: 23”

(продолжение) 6. Литерал Неопределено – используется, когда необходимо использовать пустое значение, не принадлежащее ни (продолжение) 6. Литерал Неопределено – используется, когда необходимо использовать пустое значение, не принадлежащее ни к одному другому типу. Например, такое значение изначально имеют реквизиты с составным типом значения, например: Если Юр. Лицо = неопределено Тогда … 7. литерал типа строка Ф=“ Моя строка”; Допускаеются многострочные строковые константы. Ффф=“Это |правильная |строка”; 8. Тип – не имеет литералов и возвращается функциями Тип. Знч и Тип. Пример: Если Тип. Знч(Тек. Объект) = Тип("Справочник. Ссылка. Номенклатура") Тогда . . . Конец. Если;

Объявление переменных Переменные обычно создаются автоматически при первом присвоении им значения, но можно объявлять Объявление переменных Переменные обычно создаются автоматически при первом присвоении им значения, но можно объявлять их явно с помощью ключевого слова Перем. Тип переменной определяется по значению, которое она содержит. При помещении в переменную значения другого типа меняется и тип переменной, т. е. в языке поддерживается мягкая типизация. Если переменную модуля объявить с ключевым словом Экспорт, то она будет видна вне модуля. Экспортируемые переменные модуля приложения называются глобальными переменными, потому что они доступны в любом месте программы (кроме общих модулей). Замечание. Чем меньше в вашей программе будет глобальных переменных, тем лучше.