Разработка и Конфигурация · 11 мин
Что такое синтаксис в 1С и как устроен встроенный язык
Синтаксис в 1С — это правила написания кода на встроенном языке. Разбираем структуру операторов, типичные ошибки, проверку синтаксиса и отличия от других языков.
Синтаксис в 1С — это набор правил, по которым записываются команды на встроенном языке платформы «1С:Предприятие». Он определяет, как объявлять переменные, вызывать процедуры и функции, строить условия и циклы, обращаться к объектам конфигурации. Если правило нарушено, модуль не пройдёт проверку, и код не выполнится.
Встроенный язык 1С похож на смесь классических языков программирования, но имеет важную особенность: ключевые слова можно писать как на русском, так и на английском языке. Операторы Если...Тогда...КонецЕсли и If...Then...EndIf полностью равнозначны. Это снижает порог входа для специалистов без программистского прошлого.
Понимание синтаксиса нужно не только разработчикам. Бухгалтеру или администратору, который читает чужой код в обработке или отчёте, важно уметь распознать структуру: где объявлена переменная, где начинается цикл, какое условие проверяется. Это помогает находить ошибки и оценивать, что именно делает доработка, прежде чем запускать её в рабочей базе.
Что входит в понятие синтаксиса 1С
Синтаксис охватывает несколько уровней. Первый — лексика: допустимые имена переменных, ключевые слова, литералы (числа, строки, даты). Имя переменной не может начинаться с цифры и не должно совпадать с зарезервированными словами языка. Строковые значения заключаются в двойные кавычки, даты — в одиночные, например '20260115'.
Второй уровень — структура операторов. Каждый оператор завершается точкой с запятой. Составные конструкции (условие, цикл, процедура) имеют обязательное открывающее и закрывающее слово: Если и КонецЕсли;, Для и КонецЦикла;, Процедура и КонецПроцедуры. Пропуск закрывающего слова — одна из самых частых ошибок у новичков.
Третий уровень — семантика встроенных конструкций: как обращаться к реквизитам объектов через точку (Документ.Номер), как вызывать методы (Запрос.Выполнить()), как передавать параметры в процедуры. Здесь ошибка не всегда ловится синтаксической проверкой: код может быть формально корректен, но обращаться к несуществующему реквизиту.
Базовые конструкции языка
Переменные в 1С объявляются либо явно через ключевое слово Перем, либо неявно — при первом присваивании значения. Язык слабо типизированный: одна и та же переменная может сначала хранить число, а затем строку. Это удобно, но требует аккуратности: сложение строки и числа без преобразования приведёт к ошибке времени выполнения.
Условный оператор строится так:
Если СуммаДокумента > 100000 Тогда
ТребуетсяСогласование = Истина;
ИначеЕсли СуммаДокумента > 0 Тогда
ТребуетсяСогласование = Ложь;
Иначе
Сообщить("Сумма документа не заполнена");
КонецЕсли;
Циклы представлены тремя видами: Для...По...Цикл (счётчик), Для Каждого...Из...Цикл (обход коллекции) и Пока...Цикл (условие). Для выборок из запроса чаще всего применяется Для Каждого или метод Следующий() внутри Пока. Прерывание цикла выполняется оператором Прервать, переход к следующей итерации — Продолжить.
Процедуры и функции — основные единицы структурирования кода. Функция обязана вернуть значение через оператор Возврат, процедура может использовать Возврат только для досрочного выхода. Параметры передаются по значению, а с ключевым словом Знач явно указывается, что изменения параметра внутри не затронут переданную переменную.
Функция РассчитатьСкидку(Сумма, Знач Процент) Экспорт
Если Процент > 30 Тогда
Процент = 30;
КонецЕсли;
Возврат Сумма * Процент / 100;
КонецФункцииРусский и английский варианты синтаксиса
Платформа поддерживает два встроенных языка: русский и английский. Все ключевые слова имеют два написания, и компилятор воспринимает оба. Допустимо даже смешивание в одном модуле, хотя на практике это считается плохим стилем: такой код труднее читать и сопровождать.
В типовых российских конфигурациях код написан на русском варианте. Английский синтаксис чаще встречается в международных решениях и в командах, где работают разработчики с опытом других языков. Настройка варианта языка по умолчанию задаётся в свойствах конфигурации и влияет на то, какой вариант предлагает контекстная подсказка.
Два варианта синтаксиса
Стандарт для типовых конфигураций в РФ. Проще для специалистов без программистского опыта. Ограничение: менее привычен разработчикам из других языков.
Подходит для международных команд и интеграций. Ограничение: смешение с русским кодом типовой конфигурации ухудшает читаемость.
Технически работает, но считается нарушением стандартов разработки. Избегайте в рабочих доработках.
Как проверить синтаксис модуля
Конфигуратор выполняет проверку автоматически при сохранении модуля, но её можно запустить вручную: меню «Конфигурация» → «Проверка конфигурации» или кнопка проверки модуля в редакторе кода. Ошибки выводятся в окне сообщений с указанием строки и описанием проблемы.
Проверка бывает двух видов. Синтаксическая проверка ловит структурные ошибки: незакрытые операторы, неверные символы, нарушения грамматики. Расширенная проверка дополнительно анализирует обращения к объектам метаданных и может выявить, например, обращение к несуществующему реквизиту. Для серьёзных доработок стоит включать оба режима.
Важно понимать границы проверки: она не гарантирует правильность логики. Код, который успешно компилируется, может давать неверный расчёт или падать с ошибкой времени выполнения при конкретных данных. Поэтому после синтаксической проверки доработку тестируют на копии базы с реальными сценариями.
- 1Напишите или измените код в модуле конфигуратора
- 2Запустите синтаксическую проверку модуля и исправьте все ошибки в окне сообщений
- 3Выполните расширенную проверку конфигурации с контролем обращений к метаданным
- 4Обновите конфигурацию базы данных на тестовой копии
- 5Прогоните типовой сценарий: создайте документ, проведите, сформируйте отчёт
- 6Только после успешного теста переносите изменение в рабочую базу
Типичные ошибки синтаксиса и как их избегать
Чаще всего встречаются пропущенные точки с запятой и незакрытые конструкции. Платформа в ряде случаев допускает отсутствие точки с запятой в конце последней строки блока, но полагаться на это не стоит: при последующем редактировании такой код легко сломать.
Вторая группа ошибок — работа со строками. Кавычка внутри строкового литерала удваивается: "Сказал ""Привет""". Перенос строки в длинном литерале оформляется символом вертикальной черты | в начале каждой следующей строки. Забытая черта превращает текст в попытку вызвать несуществующий оператор.
Третья группа — путаница с контекстом. Методы, доступные на клиенте, могут быть недоступны на сервере, и наоборот. Директивы компиляции &НаКлиенте и &НаСервере определяют, где выполняется процедура формы. Обращение к серверному методу из клиентской процедуры без соответствующего вызова — типичная причина ошибки, которую новичок принимает за «глюк платформы».
Где изучать синтаксис и как закреплять навык
Основной источник — синтакс-помощник в конфигураторе. Он содержит полное описание языка с примерами и всегда соответствует установленной версии платформы, в отличие от случайных статей в интернете, которые могут описывать устаревшие конструкции.
Второй источник — код типовых конфигураций. Чтение процедур проведения документов или формирования отчётов показывает, как синтаксис применяется в реальных задачах: работа с запросами, обход табличных частей, обработка исключений через Попытка...Исключение...КонецПопытки.
Для закрепления полезно правило: каждую новую конструкцию сразу опробовать в тестовой обработке. Написать цикл, вывести результат через Сообщить(), посмотреть поведение при граничных значениях. Такой подход быстрее запоминается, чем чтение справки без практики.
Ограничения и границы самостоятельной работы
Чтение и понимание синтаксиса безопасно: просмотр модулей в конфигураторе ничего не меняет, пока вы не сохранили изменения и не обновили конфигурацию базы данных. Опасный момент наступает именно при обновлении: некорректная доработка может нарушить проведение документов или целостность данных.
Правила безопасной работы просты. Любые изменения кода выполняйте сначала на копии базы. Не редактируйте типовые модули напрямую, если задачу можно решить через расширение конфигурации — расширения проще отключить при проблемах и они не теряются при обновлении типового решения. Перед обновлением рабочей базы убедитесь, что есть свежая резервная копия.
Что важно запомнить
Синтаксис 1С — это правила записи кода на встроенном языке: операторы с точкой с запятой, парные конструкции, процедуры и функции, русские или английские ключевые слова. Проверяйте код встроенной проверкой, тестируйте на копии базы и используйте синтакс-помощник как основной справочник.
Частые вопросы о синтаксисе 1С
Чем синтаксис 1С отличается от синтаксиса других языков программирования?
Главные отличия: двуязычные ключевые слова, слабая типизация переменных, тесная связь с объектами метаданных конфигурации (документы, справочники, регистры) и наличие отдельного языка запросов. Общая логика условий и циклов при этом близка к классическим языкам, поэтому опыт программирования переносится легко.
Можно ли писать код 1С полностью на английском?
Да, все ключевые слова имеют английский аналог, и платформа компилирует такой код без ограничений. Практическое неудобство одно: при доработке типовой конфигурации придётся постоянно читать русский код типовых модулей, поэтому в российских проектах обычно придерживаются русского синтаксиса.
Почему модуль прошёл проверку синтаксиса, но при выполнении возникает ошибка?
Синтаксическая проверка контролирует только грамматику кода, а не логику и не наличие данных. Ошибки времени выполнения возникают при обращении к пустой ссылке, делении на ноль, отсутствующем реквизите у конкретного объекта или недоступном в данном контексте методе. Такие ситуации выявляются только тестированием на реальных сценариях.
Где посмотреть описание конкретного оператора или функции?
Откройте синтакс-помощник в конфигураторе: меню «Справка» → «Синтакс-помощник». Быстрый способ — поставить курсор на ключевое слово в модуле и нажать Ctrl+F1: откроется раздел справки именно по этой конструкции с описанием параметров и примерами.
Что такое директивы &НаКлиенте и &НаСервере и зачем они нужны?
Это инструкции компилятору, определяющие, где выполняется процедура формы в управляемом приложении. Клиентский код работает на компьютере пользователя и не имеет прямого доступа к базе данных; серверный — выполняется на сервере. Неправильный выбор директивы приводит к ошибкам вызова методов и лишним серверным вызовам, замедляющим работу формы.
Нужно ли знать синтаксис 1С бухгалтеру или консультанту, который не пишет код?
Полное знание не требуется, но базовое чтение кода полезно: оно помогает понять, что делает внешняя обработка перед запуском, оценить текст ошибки в сообщении платформы и грамотно сформулировать задачу разработчику. Для этого достаточно распознавать условия, циклы и обращения к данным.