К статье
Практический материал

Разработка и Конфигурация · 9 мин

На какой язык похож встроенный язык 1С

Разбираем, на какой язык программирования похож встроенный язык 1С: синтаксис, типизация, русские ключевые слова и чем он отличается от Pascal, BASIC и Python.

Встроенный язык 1С (его часто называют языком 1С или «кодом конфигуратора») ближе всего по духу к классическим процедурным языкам — прежде всего к Pascal и BASIC. От Pascal он унаследовал строгую блочную структуру с явными окончаниями блоков, от BASIC — простоту порога входа и заточенность под прикладные бизнес-задачи, а не под системное программирование.

Главное отличие, которое сразу бросается в глаза, — русскоязычный синтаксис. Ключевые слова вроде Если, Тогда, КонецЕсли, Процедура, Функция делают язык уникальным среди мейнстримовых сред разработки. При этом платформа поддерживает и англоязычный вариант синтаксиса (If, Then, EndIf), и код может смешивать оба варианта.

Если вы приходите в 1С из Python, JavaScript или C#, знакомыми покажутся динамическая типизация, встроенные коллекции (массивы, структуры, соответствия) и работа со строками. Но объектная модель 1С устроена иначе: здесь нет классов в привычном смысле, наследования и интерфейсов — вместо них типы объектов задаются метаданными конфигурации.

Синтаксис: почему 1С сравнивают с Pascal

Структурно программа на 1С читается как программа на Pascal: есть явное начало и конец каждого блока, процедуры и функции объявляются отдельными ключевыми словами, а вложенные конструкции закрываются парными «закрывашками». Сравните фрагменты:

// 1С

Функция СуммаЧисел(Предел)

Результат = 0;

Для Сч = 1 По Предел Цикл

Результат = Результат + Сч;

КонецЦикла;

Возврат Результат;

КонецФункции

// Pascal

function SumNumbers(Limit: Integer): Integer;

var i: Integer;

begin

Result := 0;

for i := 1 to Limit do

Result := Result + i;

end;

Общие черты очевидны: именованные функции с возвратом значения, цикл со счётчиком, явное завершение каждой конструкции (КонецЦикла / end). Отличие в том, что 1С не требует объявлять переменные заранее и не использует типы в сигнатурах — переменная получает тип в момент присваивания.

Типизация и переменные: сходство с Python и JavaScript

1С — язык с динамической типизацией. Одна и та же переменная может сначала хранить число, затем строку, затем ссылку на документ. Это роднит его с Python и JavaScript и резко отличает от Pascal, C# или Java, где тип фиксируется при объявлении.

Коллекции тоже устроены привычно для скриптовых языков: Массив аналогичен списку, Соответствие — словарю (dict/Map), Структура напоминает объект с именованными полями. Перебор коллекций делается циклом Для Каждого ... Из ... Цикл, что по смыслу совпадает с for ... in в Python.

Однако есть и ограничения. В 1С нет анонимных функций, лямбд, генераторов и замыканий в полном смысле. Функции не являются объектами первого класса — их нельзя свободно передавать как значения, как в Python или JavaScript. Для обратных вызовов используется специальный механизм ОписаниеОповещения.

С чем сравнивать 1С при изучении

Pascal

Лучший ориентир по структуре: блоки, процедуры, явные окончания. Подходит для понимания каркаса кода, но типизация в Pascal строгая.

BASIC

Близок по философии: простой язык для прикладных задач, минимум формальностей. Полезен как аналогия для новичков.

Python

Схожая динамическая типизация и коллекции. Помогает освоить логику работы с данными, но объектная модель 1С принципиально другая.

SQL

Не язык общего назначения, но встроенный язык запросов 1С основан именно на SQL — его стоит учить параллельно.

Объектная модель: почему 1С не похож на C# и Java

Разработчики, приходящие из объектно-ориентированных языков, часто ищут в 1С классы — и не находят. В 1С нельзя объявить собственный класс, унаследовать его или реализовать интерфейс. Типы объектов (справочники, документы, регистры, отчёты) создаются в дереве метаданных конфигурации, а их поведение описывается в модулях.

Модуль — это просто контейнер с процедурами и функциями, привязанный к объекту метаданных, форме или приложению в целом. Ближайшая аналогия из мейнстримовых языков — модуль в Python или статический класс в C#, но без возможности инстанцирования и наследования.

Такой подход осознанный: 1С — предметно-ориентированная платформа. Разработчик не строит объектную иерархию с нуля, а описывает бизнес-сущности в терминах предметной области: «Документ.РеализацияТоваров», «Справочник.Номенклатура», «РегистрНакопления.ОстаткиТоваров». Платформа сама берёт на себя хранение, транзакции и интерфейс.

Русский синтаксис: уникальная черта языка

Ни один распространённый язык общего назначения не использует русские ключевые слова как основной вариант. В 1С это стандарт: вся типовая конфигурация пишется на русском синтаксисе, и именно он встречается в подавляющем большинстве проектов.

При этом язык двуязычен: практически каждое ключевое слово имеет английский аналог, и платформа корректно компилирует смешанный код. Встроенные функции также существуют в двух вариантах, например Сообщить() и Message(), ТекущаяДата() и CurrentDate().

Для разработчика с опытом это иногда неудобно: автодополнение, поиск по коду и чтение чужих модулей требуют привыкания. Для новичков без технического образования, наоборот, русский синтаксис заметно снижает порог входа — код читается почти как инструкция на естественном языке.

bsl
Если ЗначениеЗаполнено(Документ.Контрагент) Тогда
    Сообщить("Контрагент указан: " + Документ.Контрагент);
Иначе
    ВызватьИсключение "Заполните контрагента перед проведением";
КонецЕсли;

Язык запросов 1С: отдельное сходство с SQL

Внутри платформы существует второй язык — язык запросов, и он почти дословно повторяет SQL: ВЫБРАТЬ ... ИЗ ... ГДЕ ... СГРУППИРОВАТЬ ПО соответствуют SELECT ... FROM ... WHERE ... GROUP BY. Тот, кто знает SQL, освоит запросы 1С за считанные часы.

Отличия касаются расширений под учётные задачи: виртуальные таблицы регистров (Остатки, Обороты), разыменование ссылок через точку прямо в запросе, итоги по иерархии и параметризованные виртуальные таблицы. Этого в стандартном SQL нет, но общая логика выборки и соединений таблиц полностью совпадает.

Практический вывод: если вы выбираете, что учить перед стартом в 1С, SQL даст больший выигрыш, чем любой язык общего назначения. Запросы используются в отчётах, динамических списках и обработках повсеместно.

Как быстрее освоить язык 1С с опытом в других языках
  1. 1
    Вспомните структуру Pascal: блоки с явными окончаниями — каркас любого модуля 1С.
  2. 2
    Перенесите привычки из Python: динамическая типизация, коллекции, работа со строками — здесь они почти совпадают.
  3. 3
    Изучите язык запросов как диалект SQL — это половина повседневной работы.
  4. 4
    Разберитесь с моделью метаданных: справочники, документы, регистры заменяют классы и таблицы, которые вы проектировали вручную.
  5. 5
    Потренируйтесь читать типовой код конфигурации — это лучший способ привыкнуть к русскому синтаксису.

Что учить перед 1С и какие ошибки совершают переходящие

Оптимальная база для старта: основы SQL, понимание реляционных данных и любой процедурный язык на уровне «циклы, условия, функции». Знание Python или Pascal ускорит освоение, но не является обязательным — многие успешные 1С-разработчики начинали с нуля именно с встроенного языка.

Типичные проблемы возникают у тех, кто механически переносит привычки из других экосистем. Попытки строить код в стиле ООП, игнорирование механизмов платформы и работа с данными «в лоб» через циклы вместо запросов — самые частые источники медленного и неподдерживаемого кода.

Типичные ошибки переходящих в 1С
01
Выборка данных циклом по таблице вместо запроса — код работает медленно и блокирует записи.
02
Поиск классов и наследования вместо использования метаданных — архитектура усложняется без выигрыша.
03
Игнорирование встроенных функций платформы и написание собственных велосипедов для форматирования, работы с датами и строками.
04
Смешивание русского и английского синтаксиса в одном модуле без необходимости — код труднее читать и сопровождать.

Отдельно стоит помнить про границы языка: 1С не предназначен для системного программирования, работы с памятью, потоками или низкоуровневыми API. Для интеграций используются внешние компоненты, веб-сервисы и HTTP-запросы, а тяжёлую логику выносят на сторонние сервисы.

Итог

Что важно запомнить

Язык 1С — процедурный язык с синтаксисом в духе Pascal и BASIC, динамической типизацией как у Python, русскоязычными ключевыми словами и встроенным диалектом SQL. Классов и наследования в нём нет: структура приложения задаётся метаданными конфигурации.

Частые вопросы о языке 1С

Можно ли писать на 1С полностью на английском синтаксисе?

Технически да: у всех ключевых слов и встроенных функций есть английские аналоги, и платформа скомпилирует такой код. На практике в российских проектах стандарт — русский синтаксис, и код на английском будет необычен для команды и затруднит поддержку типовых конфигураций.

Сложно ли перейти в 1С с Python или JavaScript?

Переход обычно занимает меньше времени, чем освоение языка с нуля: типизация, коллекции и строки работают похоже. Основные усилия уйдут не на синтаксис, а на понимание платформы — метаданных, регистров, проведения документов и языка запросов.

Есть ли в 1С объектно-ориентированное программирование?

В классическом смысле нет: нельзя объявлять классы, наследовать их и создавать интерфейсы. Роль типов выполняют объекты метаданных, а переиспользование кода достигается через общие модули и подписки на события.

Насколько язык запросов 1С похож на обычный SQL?

Очень похож: основные конструкции выборки, соединений, группировки и условий совпадают по логике с SQL, только на русском. Добавлены специфические возможности — виртуальные таблицы регистров, разыменование ссылок и итоги по иерархии.

Какой язык выучить перед тем, как начать программировать в 1С?

Наибольшую пользу даст SQL — запросы встречаются в 1С повсеместно. Из языков общего назначения подойдёт любой процедурный на базовом уровне: Pascal или Python помогут быстрее привыкнуть к структуре кода, но обязательным это не является.