Разработка и Конфигурация · 10 мин
Что такое синтаксис языка 1С и как он устроен
Синтаксис языка 1С простыми словами: операторы, условия, циклы, процедуры и функции, русские и английские варианты команд, типичные ошибки новичков.
Синтаксис языка 1С — это набор правил, по которым записываются команды во встроенном языке платформы «1С:Предприятие». Он определяет, как объявлять переменные, писать условия, циклы, процедуры и функции, как завершать операторы и оформлять комментарии. Если правила нарушены, конфигуратор не сохранит модуль и покажет ошибку синтаксического контроля с указанием строки.
Главная особенность языка 1С — двуязычный синтаксис: одни и те же конструкции можно писать по-русски (Если ... Тогда ... КонецЕсли;) и по-английски (If ... Then ... EndIf;). Оба варианта равнозначны, компилятор воспринимает их одинаково, а внутри одного модуля допустимо даже смешение, хотя на практике так делать не стоит.
Знание синтаксиса нужно не только разработчикам. Внедренцы пишут обработки и расширения, аналитики читают код, чтобы понять логику документа, а администраторы разбирают текст ошибок. Ниже разобраны базовые конструкции, правила оформления и типичные ошибки, которые чаще всего мешают новичкам.
Что входит в понятие синтаксиса 1С
Синтаксис охватывает всё, что касается формы записи кода: ключевые слова, знаки препинания, порядок элементов конструкции. К нему относятся объявление переменных через Перем, оператор присваивания =, условный оператор, циклы, описание и вызов процедур и функций, работа с исключениями через Попытка ... Исключение ... КонецПопытки;.
Важно отличать синтаксис от семантики. Синтаксически правильная строка Итог = Количество * Цена; может быть бессмысленной, если переменные не заполнены — но это уже ошибка логики, а не записи. Синтаксический контроль проверяет только форму: закрыты ли скобки, стоит ли точка с запятой, существует ли вызываемая процедура.
Отдельный пласт — синтаксис языка запросов 1С. Это самостоятельный подъязык внутри платформы со своими ключевыми словами (ВЫБРАТЬ, ИЗ, ГДЕ, СГРУППИРОВАТЬ ПО), который используется только для чтения данных из информационной базы.
Базовые правила записи кода
Каждый оператор завершается точкой с запятой. Это самая частая ошибка новичков: пропущенный символ ; приводит к сообщению «Ожидается символ ';'». Комментарии начинаются с двойного слэша // и действуют до конца строки.
Строковые литералы заключаются в двойные кавычки, даты — в одинарные: '20260115'. Числа пишутся без кавычек, разделитель дробной части — точка. Имена переменных и процедур могут содержать русские и латинские буквы, цифры и знак подчёркивания, но не должны начинаться с цифры.
Язык нечувствителен к регистру: Сообщить, сообщить и СООБЩИТЬ — одна и та же процедура. Тем не менее принятый стиль — писать ключевые слова с заглавной буквы, а длинные конструкции оформлять отступами, чтобы визуально видеть вложенность блоков.
Перем СуммаДокумента;
Процедура РассчитатьИтог(Количество, Цена)
СуммаДокумента = Количество * Цена; // простое присваивание
Если СуммаДокумента > 10000 Тогда
Сообщить("Крупная сделка");
КонецЕсли;
КонецПроцедурыУсловия, циклы и ветвления
Условный оператор строится по схеме Если ... Тогда ... ИначеЕсли ... Иначе ... КонецЕсли;. Ветки ИначеЕсли и Иначе необязательны. Условие — любое выражение, дающее булево значение; сравнения записываются знаками =, <>, >, <, логические связки — словами И, ИЛИ, НЕ.
Циклов три. Для Сч = 1 По 10 Цикл ... КонецЦикла; — со счётчиком. Для Каждого Строка Из ТаблицаЗначений Цикл ... КонецЦикла; — обход коллекции. Пока Условие Цикл ... КонецЦикла; — с предусловием. Досрочный выход выполняется оператором Прервать;, переход к следующей итерации — Продолжить;.
Типичная ловушка — бесконечный цикл Пока, когда условие внутри тела не меняется. Перед запуском такой конструкции убедитесь, что в теле цикла есть действие, приближающее завершение, иначе сеанс зависнет, и прервать его придётся принудительно.
Процедуры и функции: в чём разница
Процедура — именованный блок кода, который выполняет действия и не возвращает значение. Описывается как Процедура Имя(Параметр1, Параметр2) ... КонецПроцедуры. Функция отличается тем, что обязана вернуть результат оператором Возврат Значение; и закрывается словом КонецФункции.
Параметры передаются по значению по умолчанию; ключевое слово Знач фиксирует это явно. Без Знач параметр передаётся по ссылке — изменения внутри процедуры затронут переменную вызывающего кода. Это частый источник трудноуловимых ошибок, поэтому мутацию входных параметров лучше избегать.
Директивы компиляции &НаКлиенте, &НаСервере, &НаСервереБезКонтекста ставятся перед объявлением и определяют, где будет исполняться код. Перепутанная директива — типичная причина ошибок вида «Процедура или функция с указанным именем не определена» при вызове серверной процедуры с клиента.
Процедура или функция
Подходит для действий без результата: проведение документа, вывод сообщения, запись в журнал. Не возвращает значение.
Подходит, когда нужен результат вычисления: сумма, признак проверки, найденная ссылка. Обязана содержать оператор Возврат.
Русский и английский варианты синтаксиса
Платформа поддерживает два встроенных варианта ключевых слов. Русский используется в подавляющем большинстве типовых конфигураций и учебных материалов, английский удобен тем, кто пришёл из других языков, и при работе с международными командами. Вариант синтаксиса модуля задаётся в свойствах конфигурации.
Имена объектов метаданных — справочников, документов, реквизитов — не зависят от выбранного синтаксиса и всегда пишутся так, как заданы в конфигураторе. Обращение к ним идёт через точку: Справочники.Номенклатура.НайтиПоКоду("0001").
| Конструкция | Русский вариант | Английский вариант |
|---|---|---|
| Условие | Если ... Тогда ... КонецЕсли; | If ... Then ... EndIf; |
| Цикл со счётчиком | Для ... По ... Цикл ... КонецЦикла; | For ... To ... Do ... EndDo; |
| Обход коллекции | Для Каждого ... Из ... Цикл | For Each ... In ... Do |
| Функция | Функция ... КонецФункции | Function ... EndFunction |
| Обработка ошибок | Попытка ... Исключение ... КонецПопытки; | Try ... Except ... EndTry; |
Как проверить код и исправить ошибки
Проверка выполняется в конфигураторе: меню «Конфигурация» → «Проверка конфигурации» или кнопка синтаксического контроля модуля (Ctrl+F7 в открытом модуле). Ошибки выводятся в окне сообщений с указанием модуля, строки и описания; двойной щелчок переносит курсор к проблемному месту.
Разбирать ошибки следует сверху вниз: одна пропущенная точка с запятой часто порождает цепочку последующих сообщений, и исправление первой строки убирает остальные. Для пошаговой диагностики логики используется отладчик — точки останова ставятся щелчком по полю слева от строки.
- 1Сохраните модуль и запустите синтаксический контроль (Ctrl+F7).
- 2Прочитайте первое сообщение об ошибке и перейдите к строке двойным щелчком.
- 3Исправьте запись: точка с запятой, закрывающее слово КонецЕсли/КонецЦикла, парность скобок.
- 4Повторите контроль, пока список ошибок не станет пустым.
- 5Запустите код в режиме предприятия и проверьте результат на тестовых данных.
Типичные ошибки и ограничения
Помимо пропущенной точки с запятой, часто встречаются: незакрытые блочные конструкции (Если без КонецЕсли), обращение к несуществующей процедуре, неверное число параметров при вызове и использование клиентских объектов на сервере. Все они выявляются синтаксическим контролем до запуска.
Есть и ограничения самого языка: нет вложенных объявлений процедур внутри других процедур, нет многострочных строк без символа переноса |, а динамическое обращение к переменной по имени возможно только через Вычислить() или Выполнить() — эти методы следует использовать осторожно, так как они исполняют произвольный код и замедляют работу.
Что важно запомнить
Синтаксис 1С — это правила записи операторов: точка с запятой в конце, блочные конструкции с закрывающими словами, русские или английские ключевые слова. Проверяйте модули синтаксическим контролем, исправляйте ошибки сверху вниз и тестируйте код на копии базы.
Частые вопросы
Нужно ли знать английский, чтобы писать на языке 1С?
Нет. Все ключевые слова имеют русский вариант, а типовые конфигурации и документация в основном используют именно его. Английский полезен лишь для чтения материалов из международных источников и понимания общих терминов программирования.
Чем синтаксис языка 1С отличается от языка запросов?
Встроенный язык описывает логику: вычисления, условия, обработку событий. Язык запросов служит только для выборки и группировки данных из базы и записывается внутри строки, которая передаётся объекту Запрос. У них разные ключевые слова и разное назначение.
Почему конфигуратор пишет «Ожидается символ ';'», хотя строка выглядит правильно?
Обычно причина в предыдущей строке: там не хватает точки с запятой, закрывающей скобки или слова КонецЕсли/КонецЦикла. Проверьте одну-две строки выше указанной в сообщении.
Можно ли смешивать русские и английские ключевые слова в одном модуле?
Технически компилятор это допускает, но делать так не следует: смешанный стиль затрудняет чтение и поиск по коду. Выберите один вариант и придерживайтесь его во всей конфигурации.
Что такое синтакс-помощник и как им пользоваться?
Это встроенный справочник по языку в конфигураторе. Открывается через меню «Справка» или по Ctrl+F1, когда курсор стоит на имени процедуры. В нём описаны назначение, параметры и примеры использования каждого оператора и метода.
Подходит ли язык 1С для изучения программирования с нуля?
Да, если цель — работа в сфере учётных систем: русскоязычные ключевые слова и наглядная связь кода с документами облегчают старт. Однако концепции общего программирования (структуры данных, алгоритмы) придётся осваивать параллельно, так как язык заточен под прикладные задачи платформы.