Лабораторная работа №6
По дисциплине «Эксплуатация ИС»
Тема: «Встроенный язык»
Общее описание встроенного языка
Встроенный язык является важной частью технологической платформы 1С:Предприятия 8.0, поскольку позволяет разработчику описывать собственные алгоритмы функционирования прикладного решения.
Встроенный язык имеет много общих черт с другими языками, такими как Pascal, Java Script, Basic, что облегчает его освоение начинающими разработчиками. Однако он не является прямым аналогом какого-либо из перечисленных языков.
Вот лишь некоторые, наиболее значимые особенности встроенного языка:
- предварительная компиляция; перед исполнением модули, содержащие текст на встроенном языке, преобразуются во внутренний код;
- кэширование скомпилированных модулей в памяти;
- мягкая типизация - тип переменной определяется типом значения, которое она содержит, и может изменяться в процессе работы;
- отсутствие программного описания объектов конфигурации; разработчик может использовать либо встроенные в платформу объекты, либо объекты, созданные системой в результате визуального конструирования прикладного решения.
Событийная ориентированность встроенного языка. Назначение встроенного языка в системе 1С:Предприятие определяется идеологией создания прикладных решений. Прикладные решения в 1С:Предприятии 8.0 не кодируются целиком. Большая часть прикладного решения создается разработчиком путем визуального конструирования - создания новых объектов конфигурации, задания их свойств, форм представления, взаимосвязей и пр. Встроенный язык используется лишь для того, чтобы определить поведение объектов прикладного решения, отличное от типового, и создать собственные алгоритмы обработки данных.
По этой причине модули, содержащие текст на встроенном языке, используются системой в конкретных, заранее известных ситуациях, которые могут возникнуть в процессе работы прикладного решения. Такие ситуации называются событиями. События могут быть связаны с функционированием объектов прикладного решения или с самим прикладным решением, как таковым.
Например, с функционированием объекта прикладного решения Справочник связан ряд событий, среди которых есть событие ПередЗаписью. Это событие возникает непосредственно перед тем, как данные элемента справочника должны быть записаны в базу данных. Разработчик, используя встроенный язык, может описать алгоритм, который, например, будет проверять корректность данных, введенных пользователем. Разместив этот алгоритм в соответствующем модуле, разработчик обеспечит то, что каждый раз, как пользователь будет выполнять запись элемента справочника, система будет выполнять созданный разработчиком алгоритм и проверять, не забыл ли пользователь заполнить обязательные реквизиты справочника.
Таким образом можно сказать, что встроенный язык является скриптовым языком для программирования бизнес-логики, а использование модулей на встроенном языке является событийно-зависимым, т.е. выполнение модулей происходит при возникновении определенных событий в процессе функционирования прикладного решения.
Программные модули
Схема программных модулей:
Модулем называется программа на встроенном языке 1С:Предприятие. Модули располагаются в заданных точках конфигурации и вызываются для выполнения в заранее известные моменты работы системы 1С:Предприятие. Например, модули формы привязаны к формам объектов и позволяют детально описывать реакцию формы на действия пользователя.
В конфигурации существует несколько видов модулей. Это модуль приложения, модуль внешнего соединения, общие модули, модули форм и модули объектов конфигурации (менеджеров значения констант, справочников, документов, планов видов характеристик, планов счетов,планов видов расчета, планов обмена, бизнес-процессов, задач, отчетов, обработок, наборов записей регистров).
Если конфигурация запускается не в режиме клиентской сессии, а в режиме COM-соединения, то вместо модуля приложения используется модуль внешнего соединения.
Для написания и редактирования текстов программных модулей предназначен редактор текстов и модулей. Тексты программных модулей могут содержать конструкции как на русском, так и на английском языках в любой комбинации.
Разделы программного модуля в порядке их размещения:
- Раздел объявления переменных;
- Раздел описания процедур и функций;
- Раздел основной программы.
Ограничения программных модулей:
- Общие модули содержат только раздел описания процедур и функций.
В общих модулях описываются такие процедуры и функции, алгоритмы которых неоднократно используются в других модулях.
В модуле приложения описываются такие процедуры и функции, как "ПриНачалеРаботыСистемы", "ПриЗавершенииРаботыСистемы" и др.
В модуле внешнего соединения описываются специфические процедуры и функции, которые актуальны для использования в режимевнешнего соединения. В режиме Com-соединения по сути модуль приложения заменяется на модуль внешнего соединения.
В модуле объекта описываются такие процедуры и функции, как "ПриЗаписи", "ПриУстановкеНовогоКода", "ПриКопировании", "ОбработкаЗаполнения" и др.
В модуле формы описываются такие процедуры и функции, как "ПриОткрытии", "ПриЗакрытии", "ОбработкаВыбора", "ВнешнееСобытие" и др.
Для того, чтобы переменная, процедура или функция были доступны в других модулях (в соответствии с контекстом использования модулей) необходимо в конце строки объявления написать ключевое слово "Экспорт". Использование ключевого слова "Экспорт" имеет смысл только для тех переменных, которые описаны в разделе описания переменных программного модуля. Например:
Перем глТекущийПользователь Экспорт
Процедура Пересчет() Экспорт
Процедура или функция, объявленные с ключевым словом "Экспорт" в модуле объекта, дополняют контекст этого объекта. Например:
Справочники.Клиенты.НайтиПоКоду(ВыбКод,,,).ПолучитьОбъект().Печать();
При этом процедура Печать() объявлена в модуле объекта справочника "Клиенты" с ключевым словом "Экспорт".
Отличие процедур и функций состоит в том, что функция имеет возвращаемое значение. Параметры процедур и функций по умолчанию передаются по ссылке. Для того, чтобы передать параметр по значению используется ключевое слово "Знач". Например:
Процедура Пересчет(Количество, Сумма, СтавкаНДС, Знач ФлагРасчетаСтавкиНДС)
Текст программного модуля может содержать однострочные комментарии, которые начинаются с комбинации символов //.
Например:
// данная процедура предназначена для расчета суммы по строке
Задание 1
1. Создайте общий модуль. Создайте в общем модуле процедуру Пересчет() с ключевым словом Экспорт.
2. Предусмотрите вызов процедуры Пересчет() из форм документов "Поступление материалов" и "Акт об оказании услуг".
Встроенный язык
Встроенный язык. Переменные
Для объявления переменных используется ключевое слово "Перем". Существует также неявное объявление переменных при первом присвоении значения переменной.
Например:
Перем Значение1;
Значение2 = 4;
Переменная Значение1 объявлена явно, а переменная Значение2 объявлена неявно. При неявном объявлении переменной система определяет ее тип по присваиваемому ей значению. При повторном присвоении переменной значения ее тип может измениться.
В именах переменных допускается использование символов и цифр, а также символа подчеркивания. При этом имя переменной должно начинаться только с символа. Использование пробелов в именах переменных не допускается.
Встроенный язык. Операторы
Операторы имеют вид стандартного обращения к процедуре, за исключением оператора присваивания (А = В;) и синтаксических конструкций встроенного языка (например, таких как Для, Пока, Если). Между собой операторы обязательно следует разделять символом ";" (точка с запятой). Конец строки не является признаком конца оператора, т.е. операторы могут свободно переходить через строки и продолжаться на другой строке. Можно располагать произвольное число операторов в одной строке, разделяя их символом ";".
Операторы языка в программном модуле можно подразделить на две категории: операторы объявления переменных и исполняемые операторы.
Операторы объявления переменных создают имена переменных, которыми манипулируют исполняемые операторы.
Любой исполняемый оператор может иметь метку, используемую в качестве точки перехода в операторе "Перейти".
В общем случае формат оператора языка следующий:
~метка: Оператор[(Параметры)][ДобКлючевоеСлово];
Одним из операторов являются циклы. Во встроенном языке различают следующие виды циклов:
- Пока <условие> цикл.
- Для каждого <имя переменной> из <имя коллекции> цикл.
- Для <имя переменной> = <начальное значение> по <конечное значение> цикл.
Для досрочного прекращения цикла используется оператор "Прервать".
Пример использования цикла "для каждого":
// Создание массива
Массив = Новый Массив(10);
// Заполнение массива
Для Сч=0 по 9 Цикл
Массив[Сч]=Сч;
КонецЦикла;
// Индикация массива
Для Каждого Элемент из Массив Цикл
Сообщить(Элемент);
КонецЦикла;
Рассмотрим следующий вид операторов - "условия". Условия оформляются следующим образом:
Если <ключевое слово > (<логическое выражение>) <ключевое слово> (<логическое выражение>) :
:
ИначеЕсли <ключевое слово> (<логическое выражение>) <ключевое слово> (<логическое выражение>) :
:
Иначе
КонецЕсли;
В записи условий могут использоваться следующие ключевые слова: "И", "ИЛИ", "НЕ". Ветвей "ИначеЕсли" может быть неограниченное количество или ни одной.
Логические выражения имеют тип Булево. При этом, если в условии используется несколько логических выражений, соединенных ключевыми словами "И" или "ИЛИ", и по значению первого логического выражения можно определить значение всего условия, то вычисление значений остальных логических выражений не производится. Например:
Значение1 = 5;
Значение2 = 4;
Если (Значение1 = 5) или (Значение2 = 4) тогда
В данном случае в условии используется ключевое слово "ИЛИ". Поэтому, если значение первого логического выражения Истина, то вычисление второго логического выражения произведено не будет.
Пример укороченной записи логического выражения:
Значение1 = Истина;
Значение2 = Ложь;
Если Значение1 И НЕ Значение2 тогда
Задание 2
Создайте внешнюю обработку "ПримерРаботыСДатой". На форме обработки разместите реквизиты: "ИсходнаяДата" и "КоличествоДней". По кнопке сформировать организуйте вывод в текстовое поле даты, полученной прибавлением к исходной дате указанного количества дней.
Задание 3
Перед завершением работы системы задать вопрос: "Вы уверены, что хотите завершить работу с системой?".
Задание 4
В документе "Приказ об изменении цен" создайте в процедуре "ОбработкаПроведения" движения по регистру сведений "ЦеныРеализации".
Отладчик
Отладчик - вспомогательный инструмент, облегчающий разработку программных модулей системы 1С:Предприятие 8.0. Отладчик предоставляет следующие возможности:
- Пошаговое выполнение модуля;
- Расстановка точек останова;
- Прерывание и продолжение выполнения модуля;
- Возможность отладки нескольких модулей одновременно;
- Вычисление выражений для анализа состояния переменных;
- Просмотр стека вызовов процедур и функций;
- Возможность остановки по возникновению ошибки;
- Возможность редактирования модуля в процессе отладки;
- Замер производительности.
Отладчик является встроенным в конфигуратор инструментом. Для его использования необходимо, чтобы одновременно с конфигуратором была запущена отлаживаемая конфигурация в режиме "1С:Предприятие". Последовательность запуска программ не имеет значения.
Процесс отладки заключается в последовательном выполнении следующих действий:
- Запустите конфигуратор и откройте модуль, предназначенный для отладки;
- Расставьте в требуемых строках модуля точки останова;
- Запустите режим "1С:Предприятие" для выбранной конфигурации, если режим уже был запущен, то выполните команду "Отладка - Подключиться";
- Выполните действия, которые вызовут исполнение отлаживаемого модуля (например, проведите документ);
- Проведите пошаговое выполнение нужного вам фрагмента модуля.
Если конфигурация запущена в режиме 1С: Предприятие, то необходимо в конфигураторе выбрать пункт "Отладка - Подключиться". На экран выводится окно для выбора процесса. Обычно список содержит одну строку с указанием на запущенную в режиме 1С: Предприятие конфигурацию. Если запущено несколько приложений 1С:Предприятие с данной конфигурацией, то список может содержать несколько строк. Выбор процесса указывает Отладчику, какой процесс будет отлаживаться.
Для отладки модуля внешней обработки необходимо открыть файл внешней обработки в Конфигураторе, воспользовавшись пунктом "Файл - Открыть". В дальнейшем с модулем внешней обработки в Отладчике можно работать так же, как и с любым другим модулем.
Отладчик позволяет установить на конкретную строку модуля специальный маркер - точку останова, - при достижении которой исполнение программного модуля останавливается и управление передается отладчику. Точку останова можно установить в любой строке модуля, в любой момент работы с Отладчиком. В случае, если строка, на которой устанавливается точка останова, не содержит операторов (например, пустая строка), содержит неисполняемый текст (например, заголовок процедуры или функции, определение переменных) или является продолжением оператора, начатого на предыдущих строках, положение точки останова будут автоматически скорректировано.
Для управления точками останова используются команды меню "Отладка" или команды из контекстного меню, вызываемого из строки.
Точки останова могут быть безусловными или с условием. При достижении безусловной точки останова исполнение программного модуля останавливается в любом случае.
При достижении точки останова с условием, выполнение программного модуля останавливается только в том случае, если заданное условие истинно:
Отладчик поддерживает возможность отключения точек останова. При этом строка модуля остается отмечена маркером, однако на ход исполнения модуля он никакого влияния не оказывает.
При большом количестве точек останова удобно использовать отдельное окно для работы с точками останова, позволяющее просматривать и редактировать их в едином списке:
После того, как при достижении точки останова управление прикладным решением передано отладчику, существует возможность дальнейшего исполнения модуля в нескольких режимах: пошаговое выполнения, исполнение вызова функции или процедуры, прерывание пошагового исполнения функции или процедуры, выполнения модуля до той строки, на которой стоит курсор или продолжение свободного выполнения модуля:
С помощью табло и диалога "Выражение" можно получить значения интересующих выражений. Стек вызовов позволяет проследить последовательность вызова процедур и функций.
В случае, если не хотим продолжить пошаговое выполнение модуля дальше, с помощью команды "Отладка - Продолжить отладку" разрешим системе 1С:Предприятие 8.0 свободное выполнение модуля (до следующей точки останова).
В случае, если требуется прервать процесс отладки в целом, снимите все точки останова со всех модулей и выполните команду "Отладка - Продолжить", если в данный момент сработала точка останова. Если необходимо прервать отладку только данного модуля, воспользуйтесь командой "Отладка - Прекратить".
Установленные точки останова запоминаются при закрытии конфигурации. Если снова открыть конфигурацию, то посмотреть список точек останова можно с помощью диалога "Точки остановки", вызываемого пунктом меню "Отладка - Список точек останова".
В процессе отладки допускается редактирование текущей конфигурации и сохранение изменений.
Внимание! Хотя в процессе отладки возможно редактирование отлаживаемого модуля, Отладчик не производит компилирование измененного кода - продолжается отладка кода конфигурации базы данных (на момент запуска отладчика или подключения). Для отладки изменений потребуется завершить работу в режиме "1С:Предприятие", сохранить изменения, обновить конфигурацию базы данных и повторно запустить Отладчик.
Режим замера производительности позволяет разработчику оценивать скорость работы как всей конфигурации в целом, так и отдельной ее части. В этом режиме измеряется частота использования конкретных участков кода и скорость их выполнения. Подобный анализ помогает выбирать наиболее оптимальный способ программной реализации алгоритмов работы системы, а также определять пути для повышения быстродействия прикладного решения.
Результат замера производительности представляет собой список ссылок на конкретные строки модуля, с указанием частоты их выполнения и длительности (абсолютного времени выполнения и относительного, в процентах от общего времени выполнения замеряемого участка):
Результаты замера можно видеть также непосредственно в окне с исходным текстом модуля. Щелчком мыши на выбранной строке списка можно перейти к тексту модуля, для которого на отдельном поле будет отображено количество вызовов и относительное время выполнения каждой строки:
Результаты замера могут быть отсортированы по любой из колонок, например, по количеству вызовов строки. Кроме этого, режим замера производительности позволяет производить выборочное суммирование строк замера, для получения суммарных характеристик выполнения некоторых строк.
Дополнительной возможностью является включение в замер или исключение из замера времени выполнения вызываемых процедур и функций. Использование этой возможности позволяет получать картину замера, максимально приближенную к реальной, в случае, когда из замеряемого модуля вызываются внешние по отношению к нему, процедуры.
Разработчик может сохранить результаты замера в файл для последующего анализа и сравнения с результатами других замеров.
Сервисные функции
Синтакс - помощник
"Синтакс - Помощник" - средство, облегчающее разработку модулей. Основная задача "Синтакс - Помощника" - предоставить специалисту, выполняющему конфигурирование системы 1С:Предприятие 8.0, оперативную подсказку по встроенному языку. Для вызова "Синтакс - Помощника" в режиме "Конфигуратор" служит пункт "Справка - Синтакс - Помощник".
Синтакс-Помощник состоит из содержания, индекса, справочной информации. Содержание представляет структуру справочной информации в виде дерева и предназначено для быстрого перехода к нужной теме справки.
Индекс содержит список ключевых слов справки и используется для поиска по справочной информации.
Справочная информация отображает собственно страницу с информацией по выбранной теме/режиму приложения. Информация может быть представлена на английском и русском языках. Возможен поиск по подстроке и перетаскивание готовых синтаксических конструкций в модуль. Комбинация клавиш для вызова Синтакс-Помощника - Ctrl+Shift+F1.
Подсказку по конкретному элементу языка (оператору, процедуре, функции, свойству, методу) можно получить, если поместить курсор в модуле на этот элемент языка и нажать клавиши Ctrl+F1. В Синтакс - Помощнике будет выдано описание выбранного элемента встроенного языка.
Синтаксический контроль
Редактируемый модуль может быть проверен на правильность использования синтаксических конструкций встроенного языка. Для выполнения синтаксического контроля модуля необходимо воспользоваться пунктом "Текст - Синтаксический контроль".
Синтаксический контроль выполняется в следующей последовательности:
- Общие модули;
- Модуль приложения;
- Модуль объекта;
- Модуль формы.
При этом контроль модулей выполняется, если модуль еще не проходил контроля или был изменен. При контроле проверяются только те модули, которые в списке расположены до данного модуля.
При наличии ошибок их список будет выдан в окне сообщений с указанием полного адреса месторасположения и описания ошибки. Для перехода к строке модуля, вызвавшей ошибку, следует дважды щелкнуть мышью по этому сообщению.
В режиме настройки параметров Конфигуратора (пункт "Сервис - Параметры" закладка "Текст модуля" реквизит "Проверять автоматически") можно включить режим автоматической проверки модуля. В этом случае, если модуль был изменен, при закрытии окна модуля или при сохранении конфигурации в целом будет выполняться синтаксический контроль модуля.
Для полного синтаксического контроля всех модулей конфигурации за один проход следует выбрать пункт "Конфигурация - Синтаксический контроль модулей".
Лабораторная работа №6
По дисциплине «Эксплуатация ИС»
Тема: «Встроенный язык»
Общее описание встроенного языка
Встроенный язык является важной частью технологической платформы 1С:Предприятия 8.0, поскольку позволяет разработчику описывать собственные алгоритмы функционирования прикладного решения.
Встроенный язык имеет много общих черт с другими языками, такими как Pascal, Java Script, Basic, что облегчает его освоение начинающими разработчиками. Однако он не является прямым аналогом какого-либо из перечисленных языков.
Вот лишь некоторые, наиболее значимые особенности встроенного языка:
- предварительная компиляция; перед исполнением модули, содержащие текст на встроенном языке, преобразуются во внутренний код;
- кэширование скомпилированных модулей в памяти;
- мягкая типизация - тип переменной определяется типом значения, которое она содержит, и может изменяться в процессе работы;
- отсутствие программного описания объектов конфигурации; разработчик может использовать либо встроенные в платформу объекты, либо объекты, созданные системой в результате визуального конструирования прикладного решения.
Событийная ориентированность встроенного языка. Назначение встроенного языка в системе 1С:Предприятие определяется идеологией создания прикладных решений. Прикладные решения в 1С:Предприятии 8.0 не кодируются целиком. Большая часть прикладного решения создается разработчиком путем визуального конструирования - создания новых объектов конфигурации, задания их свойств, форм представления, взаимосвязей и пр. Встроенный язык используется лишь для того, чтобы определить поведение объектов прикладного решения, отличное от типового, и создать собственные алгоритмы обработки данных.
По этой причине модули, содержащие текст на встроенном языке, используются системой в конкретных, заранее известных ситуациях, которые могут возникнуть в процессе работы прикладного решения. Такие ситуации называются событиями. События могут быть связаны с функционированием объектов прикладного решения или с самим прикладным решением, как таковым.
Например, с функционированием объекта прикладного решения Справочник связан ряд событий, среди которых есть событие ПередЗаписью. Это событие возникает непосредственно перед тем, как данные элемента справочника должны быть записаны в базу данных. Разработчик, используя встроенный язык, может описать алгоритм, который, например, будет проверять корректность данных, введенных пользователем. Разместив этот алгоритм в соответствующем модуле, разработчик обеспечит то, что каждый раз, как пользователь будет выполнять запись элемента справочника, система будет выполнять созданный разработчиком алгоритм и проверять, не забыл ли пользователь заполнить обязательные реквизиты справочника.
Таким образом можно сказать, что встроенный язык является скриптовым языком для программирования бизнес-логики, а использование модулей на встроенном языке является событийно-зависимым, т.е. выполнение модулей происходит при возникновении определенных событий в процессе функционирования прикладного решения.