Формат программного модуля

Выше было отмечено, что программный модуль пакета 1С: Предприятие не является самостоятельной программкой в принятом смысле этого слова. Это связано с тем, что он не может быть выполнен независимо от конфигурации. Более того, он, обычно, и не имеет внутри себя целостного метода работы, а только содержит набор процедур и функций, которые Формат программного модуля вызываются в определенные моменты времени (к примеру, при нажатии кнопки, при открытии формы, из какой-нибудь другой процедуры модуля). В этом смысле процедуры и функции в значимой степени независимы друг от друга.

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

Пример:

Контр = док.Контрагент; //в переменную контр будет

//скопировано наименование контрагента

//это тоже комментарий, занимающий всю строчку до конца

Затронем два принципиальных понятия языка: константыи переменные.

Константа – это неизменная величина, значение которой не может изменяться во время выполнения программки. Тип константы соответствует некому базисному Формат программного модуля типу. Как следует, константы разделяются на:

- числовые – это не что другое, как десятичное число, к примеру: 235, -5, 54.8;

- строковые – это произвольные последовательности знаков, заключенные в кавычки.

Пример: "Это и есть строковая константа";

- константы типа «дата» – это взятые в одинарные кавычки три двухразрядных числа, разбитых точками, к примеру: '23.04.03', '10.01.99'. Для записи года Формат программного модуля разрешается использовать четыре числа: '15.02.1995';

- системные строковые константы. К ним относятся РазделительСтраниц, РазделительСтрок и СимволТабуляции.

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

Воззвание в программках к объектам, строчкам и т.д., осуществляется средством имен (идентификаторов) переменных. Именованием переменной, процедуры либо функции может быть неважно какая последовательность букв, символов подчеркивания «_» и цифр, начинающаяся с буковкы либо со знака подчеркивания. Как Формат программного модуля и в любом языке программирования, вновь создаваемые имена не должны совпадать с теми, которые уже есть; не считая того, они должны отличаться и от зарезервированных слов языка, имен имеющихся процедур и функций. Регистр букв значения не имеет. Переменная абв – это то же самое, что и АБВ, АбВ, абВ и т Формат программного модуля.д.

В любом языке программирования есть зарезервированные слова. Это такие слова, которые не могут употребляться в качестве имен переменных и процедур (функций) и несут свою предопределенную смысловую нагрузку. В языке 1С они имеют два представления – российское и английское. Как и в именах переменных, регистр букв не Формат программного модуля учитывается. В табл. 3.2 приведен полный перечень ключевиков встроенного языка в обоих вариантах представления (русско- и английском).

Таблица 3.2–Ключевики встроенного языка 1С: Предприятие

Если If Либо Or
Тогда Then He Not
ИначеЕсли Elslf Знач Val
По другому Else СтрДлина StrLen
КонецЕсли Endlf СокрЛ TrimL
Цикл Do СокрП TrimR
Для For Лев Left Формат программного модуля
По To Прав Right
Пока While Сред Mid
КонецЦикла EndDo Цел Int
Процедура Procedure Окр Round
Функция Function Число Number
КонецПроцедуры EndProcedure Строчка String
КонецФункции EndFunction Дата Date
Перем Var Формат Format
Перейти Goto Разм Dim
Возврат Return Вопрос DoQueryBox
Продолжить Continue Предупреждение DoMessageBox
Оборвать Break Контекст Context
И And Формат программного модуля

Хоть какой программный модуль 1С: Предприятия имеет одну и ту же структуру. Программный модуль состоит из последующих разделов:

- раздел определения переменных;

- раздел описания процедур и функций;

- раздел выполняемой части, т.е. основной программки.

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

Раздел описания переменных содержит внутри себя операторы объявления переменных Перем, разбитые эмблемой «;». Завершается он с началом описания первой процедуры либо функции (словом Процедура либо Функция с следующим идентификатором такой),

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

Раздел основной программки завершает программный модуль. Любопытно, что он отчаливает на выполнение сразу в момент пуска модуля. Этот раздел может содержать только исполняемые операторы. Более верно использовать Формат программного модуля его для инициализации некими требуемыми нам значениями переменных, которые могут быть нужны перед внедрением в процедурах либо функциях модуля.

В конце концов, приведем список особых знаков встроенного языка.


Таблица 3.3 – Особые знаки встроенного языка

Написание знака Значение знака
// Начинает комментарий. Комментарий длится до конца строчки
; Знак разделения операторов
( ) В круглые скобки Формат программного модуля мы заключаем перечень характеристик процедур, функций и способов
, Запятой делят характеристики в перечне характеристик функций, процедур, способов
| Знак переноса строчки. Употребляется исключительно в начале строчки и значит, что данная строчка есть продолжение предшествующей
[ ] В квадратных скобках задается размерность массива
« » В двойные кавычки заключаются строковые константы
‘ ’ В одинарные кавычки заключаются Формат программного модуля константы типа «Дата»
. Десятичная точка в константах типа «Число». Служит также разделителем при воззвании к атрибутам и способам объектов
? Системная процедура «условное выполнение»
: Двоеточие служит последним эмблемой в имени метки
= Логическая операция «равно» либо знак присвоения значения
+ Символ операции арифметического сложения. Символ конкатенации строк
- Символ операции арифметического вычитания. Унарный минус Формат программного модуля
* Символ операции умножения
/ Операция деления
% Символ «процент» значит остаток от деления
> Символ логической операции «больше»
< Символ логической операции «меньше»
>= Символ логической операции «больше либо равно»
<= Символ логической операции «меньше либо равно»
¹ Символ логической операции «не равно»
~ Тильда. Этим знаком начинается метка оператора

Типы данных системы

В любом Формат программного модуля языке программирования существует собственный набор типов данных. Их обычно систематизируют по таким признакам, как набор допустимых операций, вид сохраняемой инфы (числовые типы, строковые и т.д.), спектр вероятных значений.

Во интегрированном языке программирования системы 1С: Предприятие типы данных принято подразделять на базисные и агрегатные.

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

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

Базисные типы данных

К базисным типам данных в 1С относятся:

- числовой. В данных числового типа разрешается хранить хоть какое десятичное число. Над ним определены арифметические и Формат программного модуля логические операции, операция присваивания. Очевидных ограничений на спектр вероятных значений переменных числового типа не накладывается;

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

- дата. В переменных типа «дата» можно сохранять календарные даты в формате ДД.ММ Формат программного модуля.ГГ либо ДД.ММ.ГГГГ (тут ДД – это две числа для представления денька месяца, ММ – номер месяца, ГГ (ГГГГ) – последние числа (либо полный номер) года).

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

1) Число®Строка. Строковым преобразованием числа Формат программного модуля является его полное представление с учетом десятичной точки. К примеру, если у нас было число -34.5, то в итоге такового преобразования мы получим строчку "-34.5".

2) Дата®Строка. При преобразовании даты в строчку сохраняются разделители в виде точек. Если имелась дата '23.12.02', то она перейдет в строчку "23.12.02".

3) Строка®Число. При попытке Формат программного модуля (это не всегда может быть) конвертировать строчку в число анализируются ее 1-ые знаки. Если они являются десятичными цифрами, то они и употребляются в качестве результата преобразования, по другому результирующее число равно 0. К примеру, строчка "5 рублей" перейдет в число 5, а строчка "5 рублей" – в 0.

4) Дата®Число. В итоге мы получаем численное представление даты.

5) Строка Формат программного модуля®Дата. Ситуация несколько припоминает преобразование строчки в число. Если сначала строчки есть нечто, что могло бы быть строковым представлением даты в формате ДД.ММ.ГГ, то преобразование будет осуществлено. В неприятном случае мы получим нулевую дату '00.00.00'.

6) Число®Дата. При всем этом вновь делается попытка проинтерпретировать целую часть Формат программного модуля числа как численное представление даты Оно и будет результатом; если же число негативно, то получится нулевая дата ('00.00.00').

Принципиально отметить, что, кроме рассмотренного неявного преобразования типов в языке, есть возможность преобразовывать типы очевидно. Для этого служат особые системные функции Число(), Строчка() и Дата(). В итоге их внедрения значения выражений, переданных в Формат программного модуля качестве характеристик функций, преобразуются в данные типы (см. листинг 3.1).

Листинг 3.1. Пример программного модуля

//Объявляем очевидно переменные модуля, т.е. начинается раздел

//описания переменных

Перем a;

Перем б;

Перем стр;

Перем дат;

//Основная программка, (процедур и функций нет)

а=5; б=6; //Присваиваем значения двум переменным.

//Они, соответственно, получают числовой тип

стр = "Это строчка"; //присваиваем значение переменной Формат программного модуля стр

дат = '01.01.03'; //то же соответственно

а = стр; //сейчас а = "Это строчка" и имеет строковый тип

б = 1*дат; //после выполнения этой строчки б = 2452641

б = "" + б; //сейчас б = "2452641", обратите

//внимание на метод приведения типа

стр = стр + " " + дат; //стр = "Это строчка 01.01.03"

б = 1*стр; //б = 0

дат = Дата(2452640); //дат = '31.12.02'

//Применим особые функции

а = Число(дат); //а = 2452641

стр Формат программного модуля = Строчка((123+453)/5); //стр = "115.2"

дат = Дата("23.45.ыва"); //дат = ' . . ', т.е.

//преобразование не вышло

//конец программки (модуля)

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

Следует снова направить внимание на важную особенность языка программирования Формат программного модуля 1С, которая состоит в том, что тип переменных может изменяться неявно, т.е. без прямого указания. Это может время от времени приводить к ошибкам, которые тяжело отыскать, что просит бдительности, контроля за операциями, которые осуществляются с теми либо другими переменными.

Во интегрированном языке предусмотрена возможность использования одномерных массивов. Массив Формат программного модуля объявляется так же, как и рядовая скалярная переменная:

Перем Элементы[5]; //объявлен массив из 5 частей

Массивом именуется таковой объект данных, который содержит несколько значений, доступ к которым делается по их индексу. Размером массива является число его частей. Приведенный выше пример массива (вектора). Элементы имеет размер 5 частей.

Воззвание к элементам массива, осуществляется средством указания Формат программного модуля имени массива и порядкового номера элемента (т.е. индекса). 1-ый элемент имеет индекс 1. Тип каждого элемента массива определяется исходя из типа присвоенного ему значения. В одном массиве могут содержаться элементы различных типов.

Элементы[1] = 234; //1-ый элемент - число

Элементы[2] = "2-ой элемент имеет строковой тип";

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

Перем М[10];

Для i = 1 По 10 Цикл

M[i] = 1; //все элементы массива будут равны 1

КонецЦикла;"

Агрегатные типы данных

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

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

Доступ к атрибутам и способам переменных агрегатных типов данных осуществляется не так, как к переменным базисных типов. Для присвоения некого значения переменной базисного типа Формат программного модуля она записывается слева от оператора присваивания, к примеру:

а = 34;

С агрегатными объектами дело обстоит несколько труднее. Они могут иметь огромное количество атрибутов, и обычное размещение идентификатора объекта слева от оператора «=» ни к чему не приведет (во всяком случае, приведет не к тому, что нам требуется). Потому для таких Формат программного модуля объектов существует собственный подход к адресации. Он выражается в том, что все атрибуты и способы записываются через точку после имени объекта:

[ | ]

Пример:

Спр = СоздатьОбъект("Справочник.Продукты");

Спр = НайтиПоНаименованию ("Булка");

Спр.Стоимость.ИспользоватьДату('01.05.02');

Спр.Стоимость = 325;

Не считая того, во интегрированном языке системы 1С: Предприятие связь меж объектами формируется в момент выполнения Формат программного модуля кода программки. Это означает, что ошибка неверного доступа к объекту выявится только при запуске соответственного метода.

Для хоть какого объекта агрегатного типа данных можно выделить типовую последовательность действий при работе с ним, состоящую из 4 главных шагов:

- создание (в памяти компьютера) требуемого объекта с помощью функции СоздатьОбъект() и одновременное присвоение Формат программного модуля ссылки на него какой-нибудь переменной с помощью оператора присваивания;

- размещение объекта на подходящем элементе данных. Дело в том, что «просто» сделанный объект не определен, а означает, не содержит никакого значения. Потому его необходимо позиционировать на каком-нибудь интересующем нас элементе справочника, на документе и т.д. зависимо от типа Формат программного модуля объекта. Это делается с помощью соответственных способов поиска и перемещения на разыскиваемый элемент;

- воплощение подходящих действий с объектом (получение инфы, ее обработка, запись новых данных и т.д.);

- необязательный пункт. Если объект больше не нужен, то его можно отсоединить от переменной, содержащей ссылку на него. Этой переменной можно Формат программного модуля просто присвоить какое-либо значение базисного типа (к примеру, число 0). Таким методом можно прирастить объем свободной оперативки.

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

//Сделаем объект типа "Справочник.Номенклатура"

продукт = СоздатьОбъект("Справочник.Номенклатура");

//Переместим ссылку на продукт, подходящий нам ("Шоколад");

продукт.НайтиПоНаименованию("Шоколад");

//этот способ Формат программного модуля позиционирует ссылку на разыскиваемом элементе

Если продукт.Избран()=1 Тогда //если продукт найден.

//Способ Избран() возвращает 1, если переменная продукт позиционирована

//на элементе

Сказать("Стоимость продукта " + продукт.Наименование + " " + продукт.Стоимость);

По другому //если продукт не найден

Сказать("Продукт не найден в справочнике!");

КонецЕсли;

продукт = 0; //в конце концов, отсоединяем объект от переменной

Приведем перечень всех Формат программного модуля вероятных агрегатных типов данных: «Константа», «Справочник», «Перечисление», «Документ» «Регистр», «ПланСчетов», «Вид субконто», «Операция», «Счет», «БухгалтерскиеИтоги», «ЖурналРасчетов», «ВидРасчета», «Календарь», «Запрос», «Периодический», «Текст», «Таблица», «СписокЗначений», «ТаблицаЗначений», «Картинка», «ФС» и «XBase». Все типы с «Константы» по «Календарь» включительно можно повстречать в дереве метаданных. Как следует, они соответствуют объектам конфигурации. Другие агрегатные типы являются служебными Формат программного модуля и расширяют способности программера при работе с системой.

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

- глобальная область видимости. Ей владеют переменные, объявленные в разделе определения переменных Формат программного модуля глобального модуля с главным словом Экспорт. Такие переменные могут употребляться в любом модуле конфигурации (и хоть какой его подпрограмме);

- переменные модуля. Такую видимость имеют переменные, объявленные в разделе объявления переменных некого модуля. Они доступны в границах такого же модуля;

- локальные переменные. Ими являются такие переменные, которые объявлены в Формат программного модуля теле процедуры либо функции.

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

Листинг 3.2. Пример совпадения имен переменных

Перем а; //объявляем переменную модуля ‘a’

Процедура Проц()

Перем а; //объявляем локальную переменную Формат программного модуля ла'

а = 5;

Сказать("Значение переменной 'а' в теле процедуры Проц() равно " + а);

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

а = 10;

Таким макаром, как и было сказано, переменные с наименьшей областью видимости перекрывают переменные с большей, если их идентификаторы совпали.


forma-podvedeniya-itogov.html
forma-polucheniya-obshego-obrazovaniya-detmi-invalidami-doklad-mbou-sosh57.html
forma-pravleniya-gosudarstva-i-ee-vidi-istoricheskie-formi-respublik-i-monarhij-sovremennie-vidi-monarhij.html