﻿### Синтаксис встроенного языка **1С:Предприятие**

> Ключевые слова не чувствительны к регистру и почти всегда имеют русскую **и** английскую форму. Ниже в примерах показан только русский вариант, но английские синонимы работают так же.

---

## Комментарии

```1c
// однострочный комментарий
А = 5;  // комментарий после кода
```

---

## Примитивные типы и литералы

| Тип            | Литерал(ы)                                     | Пример                  |                            |
| -------------- | ---------------------------------------------- | ----------------------- | -------------------------- |
| `NULL`         | `NULL`                                         | `А = NULL;`             |                            |
| `Неопределено` | `Неопределено` / `Undefined`                   | `А = Неопределено;`     |                            |
| `Булево`       | `Истина`, `Ложь`                               | `Флаг = Истина;`        |                            |
| `Число`        | десятичные, `.` как разделитель                | `Сумма = -1234.56;`     |                            |
| `Дата`         | `'ГГГГММДДччммсс'`, допускаются сокращения     | `ДатаДок = '20250101';` |                            |
| `Строка`       | `"…"`, поддерживает многострочный синтаксис \` | \`                      | `Имя = "ООО ""Василек""";` |

---

## Объявление переменных

```1c
Перем ГлобальнаяПеременная Экспорт;   // видна из других модулей
Перем Лок1, Лок2;                     // две переменные модуля
```

*Первое появление имени слева от `=` тоже создает переменную.*

---

## Оператор присваивания

```1c
Перем А;
А = 10 + 5;
```

---

## Выражения и операторы

### Арифметика

`+  −  *  /  %`

### Конкатенация строк

```1c
ФИО = Фамилия + " " + Имя;
```

### Сравнение / логика

```
>  >=  <  <=  =  <>      // сравнение
И  ИЛИ  НЕ               // AND OR NOT
```

### Тернарный «короткий IF»

```1c
Статус = ?(Скидка > 10, "VIP", "Обычный");
```

---

## Управляющие конструкции

### Условие

```1c
Если Цена > 0 Тогда
    Сообщить("Ок");
ИначеЕсли Цена = 0 Тогда
    Сообщить("Бесплатно");
Иначе
    Сообщить("Отрицательная цена?!");
КонецЕсли
```

### Циклы

```1c
// Для … По …
Для Сч = 1 По 10 Цикл
    Сообщить(Сч);
КонецЦикла;

// Для каждого … Из …
Для каждого Стр Из Таблица Цикл
    // …
КонецЦикла;

// Пока …
Пока Сч < 100 Цикл
    Сч = Сч * 2;
КонецЦикла;
```

`Прервать;` — выйти из цикла, `Продолжить;` — к следующей итерации.

---

## Процедуры и функции

### Объявление процедуры

```1c
Процедура ОбработатьДок(Документ, Режим = "Просмотр") Экспорт
    // тело
КонецПроцедуры
```

### Объявление функции

```1c
Функция ПолучитьСумму(Число1, Знач Число2 = 0) Экспорт
    Возврат Число1 + Число2;
КонецФункции
```

*`Знач` — передача по значению; без него — по ссылке.*

---

## Исключения

```1c
Попытка
    Результат = 1 / 0;
Исключение
    Предупреждение("Деление на ноль!");
КонецПопытки;
```

Принудительный выброс:

```1c
ВызватьИсключение "Ошибка бизнес-логики";
```

---

## Создание объектов

```1c
Массив = Новый Массив(3);          // встроенные коллекции
Док = Новый(Тип("Документ.Счет")); // прикладные объекты через второй синтаксис
```

---

## Доступ к свойствам

```1c
Имя = Контрагент.Наименование;      // точка
Имя = Контрагент["Наименование"];   // по строке
```

---

## Метки и переход

```1c
Перейти ~МеткаКонца;
// …
~МеткаКонца: Сообщить("Перешли");
```

---

## Препроцессор и директивы компиляции

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

```1c
#Если ВебКлиент Тогда
    // код только для web-клиента
#Иначе
    // остальная режимы работы платформы
#КонецЕсли
```

### Директивы перед методами/переменными

```1c
&НаКлиенте
Процедура ОткрытьФорму() … КонецПроцедуры

&НаСервереБезКонтекста
Функция Сервисная() … КонецФункции
```

*Возможные метки: `НаКлиенте`, `НаСервере`, `НаСервереБезКонтекста`, `НаКлиентеНаСервереБезКонтекста`.*

---

## Коллекция Массив и доступ по индексу

```1c
Массив = Новый Массив;        // пустой
Массив2 = Новый Массив(10);   // сразу 10 “пустых” ячеек
Первый = Массив[0];       // индексы с 0
Для каждого Элемент Из Массив Цикл … КонецЦикла;
```

---

