Ввиду того, что несколько хороших сайтов, посвященных программированию на 1С прекратили своё существования, я решил написать серию статей на эту тему. Итак начну.
Встроенный язык программирования 1С:Предприятие - язык программирования, который используется в семействе программ «1С:Предприятие». В версии 7.x являлся интерпретируемым языком сверхвысокого уровня. Интерпретация текста программного модуля в байт-код выполнялась в момент обращения к этому модулю в процессе работы, таким образом обычно интерпретировалась только часть текстов программных модулей (в версиях 7.7 и старше). Начиная с версии 8.х модули компилируются.
Средой исполнения языка является программная платформа «1С:Предприятие». Визуальная среда разработки («Конфигуратор») является неотъемлемой частью пакета программ «1С:Предприятие».
Диалекты языка для платформ 1С седьмых версий (7.0, 7.5, 7.7) совместимы «снизу вверх» с незначительными исключениями. Языки для платформ 1С:7.х и 1С:8.х совместимы по основным операторам, но значительно отличаются в работе с прикладными объектами, вследствие чего перенос кода из 1С:7.х в 1С:8.х не имеет смысла.
Проекты на встроенном языке 1С:Предприятия называются конфигурациями. Распространение (продажа) и внедрение таких конфигураций - это основная коммерческая деятельность фирм-партнёров 1С.
Основные характеристики языка 1С
*Интерпретатор с предварительной компиляцией - исходный код на встроенном языке компилируется во внутренний байт-код 1С, а потом исполняется виртуальной машиной стекового типа.
*Скомпилированные модули кешируются.
*Встроенный язык 1С является предметно-ориентированным языком. Обладает некоторыми возможностями объектно-ориентированных языков: обращение к свойствам и методам объектов. Но программно нельзя создавать новые классы, только визуально.
*Используется слабая типизация переменных, в выражениях можно смешивать переменные и литералы разных типов.
*Динамическая типизация переменных - тип переменной определяется в процессе выполнения программы. Одна переменная может принимать значения разных типов.
Комментарии
Комментарий используется для размещения в исходном тексте программного модуля всякого рода пояснений к работе модуля. Хорошим тоном программирования считается, когда исходный текст содержит исчерпывающий комментарий с описанием алгоритма. В режиме исполнения программы комментарии пропускаются. В тексте программного модуля комментарий начинается парой символов "//" и заканчивается концом строки. Это значит, что комментарий можно начинать с начала строки или записывать его после оператора на той же строке. После начала комментария писать оператор на той же строке нельзя, необходимо закончить комментарий концом строки.
А = В; // Это - комментарий
// Это тоже комментарий
Формат операторов
Операторы имеют вид стандартного обращения к процедуре, за исключением оператора присваивания (А = В;) и синтаксических конструкций встроенного языка (например, таких как Для, Пока, Если). Между собой операторы обязательно следует разделять символом ";" (точкой с запятой). Конец строки не является признаком конца оператора, т.е. операторы могут свободно переходить через строки и продолжаться на другой строке. Можно располагать произвольное число операторов в одной строке, разделяя их символом ";".
Операторы языка в программном модуле можно подразделить на две категории: операторы объявления переменных и исполняемые операторы.
Операторы объявления переменных создают имена переменных, которыми манипулируют исполняемые операторы.
Перем Переменная; //это оператор объявления переменной
Переменная = 1; // исполняемый оператор
МояПроцедурa(Переменная); // тоже исполняемый оператор
Имена переменных, процедур и функций
Именем переменной, объявленной процедуры или функции, может быть любая последовательность букв, цифр и знаков подчеркивания "_", начинающаяся с буквы или знака подчеркивания "_".
Вновь создаваемые имена не должны совпадать с зарезервированными словами языка или именами свойств, непосредственно доступных в текущем контексте. Распознавание имен переменных, процедур и функций ведется без учета регистра букв.
В основном в 1С используется стиль CamelCase. Это значит что если имя переменной состоит из нескольких слов, то они пишутся без пробелов, но каждое новое слово начинается с большой буквы. Как правило, первая буква имени переменной тоже большая.
//в 1С принято имена переменных начинать с большой буквы
ПеременнаяКэмелКейс = Неопределено;
//так тоже можно, но предпочтительней первый вариант
переменная_не_кэмел_кейс = Неопределено;
В 1С можно явно объявить переменную с использованием ключевого слова Перем. Если переменная объявлена через ключевое слово Перем, то ей нельзя сразу присвоить значение. Можно не объявлять отдельно, а сразу присвоить значение.
Перем ЯвнаяПеременная; //явное объявление переменной
ЯвнаяПеременная = 1; //
//неявное объявление переменной и присвоение ей значения
НеявнаяПеременная = 2;
Значение переменной можно изменять по ходу работы программы.
Переменная = 1;
Переменная = 2; //теперь Переменная стала равна двум
Переменная = 3 //теперь трем
Объявлять переменные через ключевое слово Перем можно только в начале модуля или процедуры. По середине или в конце модуля нельзя.
Функция Тестовая()
Перем Можно;
а = 0;
Перем Нельзя; //так нельзя, будет ошибка при компиляции модуля
КонецФункции
Зарезервированные слова
Приведенные далее ключевые слова являются зарезервированными и не могут использоваться в качестве создаваемых имен переменных, реквизитов объектов конфигурации и объявляемых процедур и функций. В данном варианте языка каждое из ключевых слов имеет два представления - русское и английское: Если (If), Тогда (Then), ИначеЕсли (ElsIf), Иначе (Else), КонецЕсли (EndIf), Для (For), Каждого (Each), Из (In), По (To), Пока (While), Цикл (Do), КонецЦикла (EndDo), Процедура (Procedure), Функция (Function), КонецПроцедуры (EndProcedure), КонецФункции (EndFunction), Перем (Var), Перейти (Goto), Возврат (Return), Продолжить (Continue), Прервать (Break), И (And), Или (Or), Не (Not), Попытка (Try), Исключение (Except), ВызватьИсключение (Raise), КонецПопытки (EndTry), Новый (New), Выполнить (Execute).
Специальные символы, используемые в исходном тексте
// - Двумя знаками «косая черта» начинается комментарий. Комментарием считается весь текст от знака "//" до конца текущей строки.
| - Вертикальная черта в начале строки используется только в строковых константах и означает, что данная строка является продолжением предыдущей (перенос строки).
~ - Знаком тильда начинается метка оператора.
: - Двоеточием заканчивается метка оператора.
; - Точка с запятой является символом разделения операторов.
( ) - В круглые скобки заключается список параметров методов, процедур, функций и конструкторов. Также они используются в выражениях встроенного языка.
[ ] - С помощью оператора «квадратные скобки» производится обращение к свойствам объекта по строковому представлению имени свойства. Также возможно обращение к элементам коллекций по индексу или другому параметру.
, - Запятая разделяет параметры в списке параметров методов, процедур, функций и конструкторов.
" " - В двойные кавычки заключаются строковые литералы.
' ' - В одинарные кавычки заключаются литералы даты.
. - Десятичная точка в числовых литералах. Разделитель, используемый для обращения к свойствам и методам объектов встроенного языка.
+ - Символ «плюс» обозначает операцию сложения и конкатенации.
- - Символ «минус» обозначает операцию вычитания.
* - Символ «звездочка» обозначает операцию умножения.
/ - Символ «косая черта» обозначает операцию деления.
% - Получение остатка от деления. Допускается использования дробных значений делимого и делителя.
> - Правая угловая скобка обозначает логическую операцию «больше».
>= - Логическая операция «больше или равно».
< - Левая угловая скобка обозначает логическую операцию «меньше».
<= - Логическая операция «меньше или равно».
= - Знак равенства обозначает присвоение или логическую операцию «равно».
<> - Две угловые скобки обозначают логическую операцию «не равно».
Язык написания программных модулей
Встроенный язык 1С:Предприятия является двуязычным. Почти все зарезервированные слова, имена типов значений, свойств, методов, событий имеют два имени: русское и английское.
Исключение составляю слова, не имеющие аналогов в русском языке. В тесте программных модулей эти имена можно свободно смешивать, используя то русские, то английские имена без каких-либо ограничений.
Перем Переменная;
Переменная = Undefined;
Регистры букв при написании программных модулей
Регистр букв (строчные или заглавные) при написании имен переменных, свойств, методов, процедур, функций, а также функций встроенного языка не имеет значения.
Переменная = 1;
переменная = 1;
перемеННАЯ = 2; //это все одна и та же переменная
Смотрите также:
Электронный учебник по по программированию в 1С Рекомендации по изучению программирования 1С с нуля Программирование в 1С 8.3 с нуля - краткий самоучитель Комплексная подготовка программистов 1С:Предприятие 8.2 Программное решение для сдачи и подготовки к экзаменам Сайты с уроками программирования и со справочниками Youtube-каналы с уроками программирования Сайты для обучения программированию Лекции и уроки