Синтаксис языка 1С

Содержание

Слайд 2

Структура темы Общие сведения о языке 1С Синтаксис языка Типы данных

Структура темы

Общие сведения о языке 1С
Синтаксис языка
Типы данных
Условные операторы и операторы

цикла
Коллекции значений
Слайд 3

Событийная зависимость модулей

Событийная зависимость модулей

Слайд 4

Общие сведения об языке 1С ПеременнаяА идентично переменнаяа Идентификаторы: НДС_20, _СчетчикЦикла

Общие сведения об языке 1С

ПеременнаяА идентично переменнаяа
Идентификаторы: НДС_20, _СчетчикЦикла
НДС_20

= 20; _СчетчикЦикла = 0;
// Текст программы, предваряемый символами «//» считается комментарием.
значения не имеет процедур, функций между собой порядок описания
Встроенные процедуры и функции: Сообщить(), ТекущаяДата(), …
Системные перечисления: ВидСчета.Активный, ИспользованиеСреза.Первые, …
Встроенные классы: Файл, Форма, ТабличныйДокумент, …
Обращение к методам через «.»
Обращение к свойствам через «.» или «[ ]»
Разыменование через «.»: Сотр.Адрес.Дом, Запр.Выполнить().Выбрать()
Различный контекст исполнения (сервер, клиент, модуль)
Слайд 5

Тип встроенного языка 1С Предметно-ориентирован Элементом ООП в 1С являются наследование

Тип встроенного языка 1С

Предметно-ориентирован
Элементом ООП в 1С являются наследование встроенных методов

прикладных объектов создаваемым разработчиком
все методы объекта «Документ» наследуется документом «Реализация товаров», если он создается в конфигурации
У программиста нет возможности создавать собственные классы, свойства, методы объектов.
Но можно создавать свойства и методы «подобъектов».
Слайд 6

Структура программного модуля Раздел объявления переменных Раздел объявления процедур и функций Основной раздел модуля

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

Раздел объявления переменных
Раздел объявления процедур и функций
Основной раздел модуля

Слайд 7

Виды программных модулей Модуль приложения. В нем располагаются процедуры-обработчики событий, которые

Виды программных модулей

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

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

Область видимости переменных, процедур, функций или «контекст» Глобальный контекст. Доступен в

Область видимости переменных, процедур, функций или «контекст»

Глобальный контекст. Доступен в любом

модуле.
Встроенные функции, системные перечисления
Переменные, процедуры и функции модуля приложения с ключевым словом «Экспорт»
Переменные, процедуры и функции общих модулей с ключевым словом «Экспорт»
Локальный контекст. Доступен только в локальных участках конкретных модулей
Слайд 9

Типы значений Мягкая типизация Но! В каждый момент времени тип значения

Типы значений

Мягкая типизация
Но! В каждый момент времени тип значения переменных всегда

однозначен.
1. Примитивные типы
Число
Строка (фиксированной или неограниченной длины)
Дата (может хранить и дату, и время)
Булево (два значения: Истина и Ложь)
Null (константное значение)
Неопределено (константное значение)
Тип (может быть получен встроенными функциями Тип() и ТипЗнч())
Слайд 10

Типы значений 2. Универсальные коллекции значений Массив Структура Соответствие Таблица значений

Типы значений

2. Универсальные коллекции значений
Массив
Структура
Соответствие
Таблица значений
Дерево значений и др.
3. Общие типы
Текстовый

документ
Табличный документ
Файл
COM-объект
Слайд 11

Типы значений 4. Интерфейсные типы Форма Кнопка Поле ввода Цвет Линия

Типы значений

4. Интерфейсные типы
Форма
Кнопка
Поле ввода
Цвет
Линия
5. Типы значений, создаваемые в конфигурации
Справочники
Документы
Планы видов

характеристик
Планы счетов
Планы видов расчета
Перечисления
Регистры сведений
Регистры накопления
Слайд 12

Примитивные типы Литералы примитивных типов Операции с примитивными типами

Примитивные типы

Литералы примитивных типов
Операции с примитивными типами

Слайд 13

Типы, образуемые в прикладном решении В зависимости от объектов конфигурации, будут

Типы, образуемые в прикладном решении

В зависимости от объектов конфигурации, будут добавляться

различные типы данных:
Справочник «Сотрудники» (Ссылочные типы):
Тип СправочникМенеджер.Сотрудники
Тип СправочникСсылка.Сотрудники
Тип СправочникОбъект.Сотрудники
Тип СправочникВыборка.Сотрудники
Тип СправочникСписок.Сотрудники
Регистр сведений «Курсы валют» (Нессылочные типы):
Тип РегистрСведенийМенеджер.КурсыВалют
Тип РегистрСведенийВыборка.КурсыВалют
Тип РегистрСведенийСписок.КурсыВалют
Тип РегистрСведенийМенеджерЗаписи.КурсыВалют
Тип РегистрСведенийНаборЗаписей.КурсыВалют
Тип РегистрСведенийЗапись.КурсыВалют
Тип РегистрСведенийКлючЗаписи.КурсыВалют
Слайд 14

Типы, образуемые в прикладном решении Краткое описание создаваемых типов: Менеджер. Объекты

Типы, образуемые в прикладном решении

Краткое описание создаваемых типов:
Менеджер. Объекты этого типа

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

Операторы языка 1С Операторы языка

Операторы языка 1С

Операторы языка

Слайд 16

Операторы языка 1С Операторы языка

Операторы языка 1С

Операторы языка

Слайд 17

Операторы языка 1С Операторы языка

Операторы языка 1С

Операторы языка

Слайд 18

Встроенные функции языка 1С Встроенные функции работы со строками

Встроенные функции языка 1С

Встроенные функции работы со строками

Слайд 19

Встроенные функции языка 1С Встроенные функции работы с датами

Встроенные функции языка 1С

Встроенные функции работы с датами

Слайд 20

Встроенные функции языка 1С Прочие встроенные функции

Встроенные функции языка 1С

Прочие встроенные функции

Слайд 21

Встроенные функции языка 1С Процедуры и функции интерактивной работы

Встроенные функции языка 1С

Процедуры и функции интерактивной работы

Слайд 22

Описание собственных процедур и функций Собственные процедуры и функции Виды передачи

Описание собственных процедур и функций

Собственные процедуры и функции
Виды передачи параметров в

процедуры/функции:
По ссылке (по умолчанию). Изменение формального параметра внутри процедуры/функции приводит к изменению фактического параметра. Пример:
Функция ВыделитьСловаВТексте(УчастокТекста)
По значению. Изменение формального параметра внутри процедуры/функции не влияет на фактический параметр. Для этого перед именем процедуры/функции необходимо записать ключевое слово Знач. Пример:
Функция ВыделитьСловаВТексте(Знач УчастокТекста)
Слайд 23

Описание собственных процедур и функций Значения параметров процедуры/функции «по умолчанию» Если

Описание собственных процедур и функций

Значения параметров процедуры/функции «по умолчанию»
Если параметру задано

значение по умолчанию, и он является последним в списке, то при вызове процедуры его можно опускать в списке передаваемых фактических параметров и не ставить запятую перед опущенным параметром. Пример:
Функция МассивЧиселВСтроку(МассивЧисел, Разделитель = “;”)
………………………………………………………………………………………………………………
МассивЧиселВСтроку(МассивЧисел, “!”); МассивЧиселВСтроку(МассивЧисел);
Если параметру не задано значения по умолчанию, то при вызове процедуры его можно опускать в списке передаваемых фактических параметров, но разделительную запятую надо ставить.
Функция МассивЧиселВСтроку(МассивЧисел, Разделитель)
………………………………………………………………………………………………………………
МассивЧиселВСтроку(МассивЧисел,);
Если параметр при вызове процедуры опущен, то он принимает либо установленное по умолчанию значение (если оно есть) либо значение Неопределено.
Если при вызове метода, процедуры или функции параметры не передаются (пустой список параметров), то, тем не менее, круглые скобки обязательно требуется ставить.
Слайд 24

Описание собственных процедур и функций Пример описания и вызова процедуры Процедура

Описание собственных процедур и функций

Пример описания и вызова процедуры
Процедура ПолучитьФИО(ФИО,Фамилия,Имя,Отчество)
ПозицияПробела =

Найти(ФИО,« »);
Фамилия = Лев(ФИО, ПозицияПробела-1);
ФИО = Прав(ФИО, СтрДлина(ФИО) - ПозицияПробела);
ПозицияПробела = Найти(ФИО,« »);
Имя = Лев(ФИО, ПозицияПробела-1);
Отчество = Прав(ФИО, СтрДлина(ФИО) - ПозицияПробела);
КонецПроцедуры
ФИО = «Иванов Иван Иванович»;
Фамилия = «»; Имя = «»; Отчество = «»;
ПолучитьФИО(ФИО,Фамилия,Имя,Отчество);
Сообщить(«Фамилия = » + Фамилия + «, имя = » + Имя + «, отчество = » + Отчество);
Пример описания и вызова функции
Функция МодульЧисла(Значение)
Возврат Макс(Значение,-Значение);
КонецФункции
Значение = -5;
Модуль = МодульЧисла(Значение);
Слайд 25

Универсальные коллекции значений Массив Упорядоченная последовательность значений любого типа А[0] =

Универсальные коллекции значений

Массив Упорядоченная последовательность значений любого типа
А[0] = 1;

А[1] = “25”; А[2] = ‘20090503’
Структура Каждый элемент коллекции содержит пару “Ключ” (строка) и “Значение” (произвольный тип)
А[“Цвет волос”] = “блондин”; А[“Рост”] = 186
Соответствие Каждый элемент коллекции содержит пару “Ключ” (произвольный тип) и “Значение” (произвольный тип)
КурсВалют[‘20090510’] = 10.19; КурсВалют[‘20090513’] = 10.22
Список значений Как правило, используется для визуализации списка значений
Таблица значений Используется для хранения двумерных данных
Дерево значений Используется для хранения иерархических двумерных данных
Слайд 26

Универсальные коллекции значений Создание значения типа массив // массив с 0

Универсальные коллекции значений

Создание значения типа массив
// массив с 0 элементами
А

= Новый Массив();
// одномерный массив
// из 10 элементов
А = Новый Массив(10);
// двумерный массив
А = Новый Массив(10,5);
Заполнение массива
// через индексы массива
А = Новый Массив(5);
А[0] = 1;
A[1] = “второй элемент”;
// с использованием
// метода Добавить()
А = Новый Массив();
А.Добавить(1);
А.Добавить(«Второй элемент»);
Перебор массива
А = Новый Массив(2);
А[0] = 1;
А[1] = 2;
Сумма = 0;
Для Каждого Б Из А Цикл
Сумма = Сумма + Б;
КонецЦикла;
Слайд 27

Универсальные коллекции значений Создание значения типа структура // без указания ключей

Универсальные коллекции значений

Создание значения типа структура
// без указания ключей и значений
А

= Новый Структура();
// ключи указаны в констукторе
А = Новый Структура(«Цвет волос, Рост»);
// ключи и значения указаны в конструкторе
А = Новый Структура(«Цвет волос, Рост», «Блондин», 186);
Заполнение структуры
// через ключи структуры
А = Новый Структура(«Цвет волос, Рост»);
А[«Цвет волос»] = «Блондин»; А[«Рост»] = 186;
// с использованием метода Добавить()
А = Новый Структура();
А.Вставить(«Цвет волос», «Блондин»);
А.Вставить(«Рост», 186);
Перебор структуры
А = Новый Структура(«Цвет волос, Рост», «Блондин», 186);
Для Каждого ЭлементСтруктуры Из А Цикл
Сообщить(ЭлементСтруктуры.Значение); Сообщить(ЭлементСтруктуры.Ключ);
КонецЦикла;
Слайд 28

Универсальные коллекции значений Создание значения типа таблица значений тзСотрудники = Новый

Универсальные коллекции значений

Создание значения типа таблица значений
тзСотрудники = Новый ТаблицаЗначений;
// определение

колонок
тзСотрудники.Колонки.Добавить(«Сотрудник»,Новый ОписаниеТипов(«Строка»,,Новый КвалификаторыСтроки(100)));
тзСотрудники.Колонки.Добавить(«Рост»,Новый ОписаниеТипов(«Число»,Новый КвалификаторыЧисла(5,2)));
Заполнение таблицы значений
// тзСотрудники – таблица значений (Колонки – «Сотрудник», «Рост»)
// добавление одной строки в таблицу
НоваяСтрока = тзСотрудники.Добавить();
НоваяСтрока.Сотрудник = «Иванов Иван Иванович»;
НоваяСтрока.Рост = 186;
Перебор таблицы значений
// тзСотрудники – таблица значений (Колонки – «Сотрудник», «Рост»)
СреднийРост = 0; МаксРост = 0; МинРост = 999;
Для Каждого СтрокаТзСотрудники Из тзСотрудники Цикл
МаксРост = Макс(МаксРост, СтрокаТзСотрудники.Рост);
МинРост = Мин(МинРост, СтрокаТзСотрудники.Рост);
СреднийРост = СреднийРост + СтрокаТзСотрудники.Рост;
КонецЦикла;
СреднийРост = СреднийРост / тзСотрудники.Количество().
Сообщить(«Средний=» + СреднийРост + «,макс = » + МаксРост + «, мин = » + МинРост);
.
Слайд 29

Универсальные коллекции значений Создание значения типа дерево значений деревоЗаказов = Новый

Универсальные коллекции значений

Создание значения типа дерево значений
деревоЗаказов = Новый ДеревоЗначений;
// определение

колонок
деревоЗаказов.Колонки.Добавить(«Заказ»,Новый ОписаниеТипов(«Строка»,,Новый КвалификаторыСтроки(100)));
деревоЗаказов.Колонки.Добавить(«Сумма»,Новый ОписаниеТипов(«Число»,Новый КвалификаторыЧисла(5,2)));
Заполнение дерева значений
// деревоЗаказов – дерево значений (Колонки – «Заказ», «Сумма»)
// добавление строки первого уровня
Строка1 = деревоЗаказов.Строки.Добавить();
Строка1.Заказ = «Контрагент1»;
// добавление строки второго уровня
Строка2 = Строка1.Строки.Добавить();
Строка2.Заказ = «Заказ №1»;
// добавление строки третьего уровня
Строка3 = Строка2.Строки.Добавить();
Строка3.Заказ = «Накладная №1»; Строка3.Сумма = 1000.45;
Слайд 30

Инструкции препроцессора Синтаксис: #Если Тогда #ИначеЕсли Тогда #КонецЕсли В качестве используются:

Инструкции препроцессора

Синтаксис:
#Если <ЛогическоеВыражение> Тогда
#ИначеЕсли <ЛогическоеВыражение> Тогда
#КонецЕсли
В качестве < ЛогическоеВыражение> используются:
НаКлиенте
Клиент
ТонкийКлиент
ВебКлиент
НаСервере
Сервер
ВнешнееСоединение
Перед передачей

программного модуля сервером на клиент, сервер выполняет обработку инструкций препроцессора, находящихся в модуле. Текст, который не выполняется на стороне клиента, удаляется.
Слайд 31

Директивы компиляции Синтаксис: & В качестве используются: НаКлиенте НаСервере НаСервереБезКонтекста НаКлиентеНаСервереБезКонтекста

Директивы компиляции

Синтаксис:
& <Директива>
<Описание процедуры|Описание функции|Описание переменной>
В качестве <Директива> используются:
НаКлиенте
НаСервере
НаСервереБезКонтекста
НаКлиентеНаСервереБезКонтекста
НаКлиентеНаСервере
Директивы компиляции используются

только в модулях форм и в модулях команд. Компиляция происходит уже после обработки инструкций препроцессора. При этом директивы определяют, будет ли включена та или иная процедура в клиентский или серверный скомпилированный вариант модуля.
Слайд 32

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

Рекомендации по написанию текстов программ

Не обязательно заучивать все процедуры и функции

языка 1С. Достаточно научиться работать с синтакс-помощником.
Основной «язык» языка 1С – русский. Однако поддерживаются и английские эквиваленты операторов и функций.
Если A > B Тогда If A > B Then
Сообщить(A); Message(A);
КонецЕсли; EndIf;
Рекомендация: использовать русские эквиваленты.
Идентификаторы ключевых слов, встроенных процедур и функций, объявленных ранее собственных процедур и функций, переменных система «подсказывает» по «Ctrl+пробел».
Часто повторяющиеся языковые конструкции можно оформлять в шаблоны текста. Вставить шаблон текста можно по «Ctrl-Q».
Большинство ошибок ввода в тексте программы можно устранить, используя «Синтаксический контроль» (или «Ctrl-F7»).
Слайд 33

Рекомендации по написанию текстов программ Правило №1. Всем идентификаторам переменных, процедур,

Рекомендации по написанию текстов программ

Правило №1. Всем идентификаторам переменных, процедур, функций,

объектов системы необходимо давать осмысленные имена, недопустимо использовать односложные переменные типа А, x, i и т.д. Тот же принцип должен использоваться при именовании элементов формы (недопустимо использовать имена Кнопка1, ТабличноеПоле1 и т.д.)
Рекомендация. В идентификаторы переменных «сложных» типов лучше добавлять префиксы, идентифицирующие тип объекта, а смысловые части слов начинать с большой буквы, например:
тз – таблица значений (тзСотрудники, тзРезультат)
дз, дерево – дерево значений (деревоЗаказов)
мас, массив – массив (массивСотрудников, массивРезультатов)
спр – справочник (спрСотрудники, спрТовары)
док, документ – документ (докВыплатаДенег, документПриемНаРаботу)