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

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

На что похож язык программирования 1С

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

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

При этом 1С — не копия ни одного популярного языка. У него есть уникальные черты: встроенные прикладные типы (документы, справочники, регистры), двуязычный синтаксис (русский и английский), тесная интеграция с запросами на языке, близком к SQL, и событийная модель, привязанная к объектам конфигурации. Поэтому корректнее говорить не «1С похож на X», а «1С сочетает черты нескольких языков и парадигм».

Чем синтаксис 1С напоминает Pascal и Basic

Структурно программа на 1С строится из процедур и функций, объявляемых ключевыми словами Процедура / Функция и завершаемых КонецПроцедуры / КонецФункции. Это прямое наследие Pascal-подобных языков: блочная структура, явные границы блоков, отсутствие фигурных скобок. Условный оператор Если ... Тогда ... Иначе ... КонецЕсли; и цикл Пока ... Цикл ... КонецЦикла; читаются почти как псевдокод.

С Visual Basic язык 1С роднит ориентация на прикладную автоматизацию: работа с объектами через точку (Документ.Номер), событийные обработчики, отсутствие строгой необходимости объявлять переменные заранее. Разработчик, пришедший из VBA или VB6, обычно осваивает 1С быстрее, чем пришедший из C++ или Java, где мышление построено на классах и статической типизации.

Динамическая типизация: сходство с Python и JavaScript

Переменные в 1С не требуют объявления типа: значение определяется в момент присваивания, и одна и та же переменная может последовательно хранить число, строку или ссылку на объект. В этом 1С похож на Python и JavaScript. Однако строгость проверок отличается: попытка сложить несовместимые типы приведёт к ошибке времени выполнения, а не к неявному приведению, как в JavaScript.

Ещё одна параллель с Python — высокий уровень абстракции. Разработчик 1С не управляет памятью, не работает с указателями и не пишет шаблонный код для подключения к базе данных: платформа сама хранит данные, строит формы и выполняет запросы. Как и в Python, фокус смещён с «как устроено внутри» на «что должно получиться».

// 1С

Сумма = 0;

Для Каждого Строка Из ТаблицаТоваров Цикл

Сумма = Сумма + Строка.Цена * Строка.Количество;

КонецЦикла;

# Python (аналогичная логика)

summa = 0

for row in goods:

summa += row.price * row.qty

Язык запросов 1С — это почти SQL

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

Отличия кроются в деталях: вместо таблиц используются объекты метаданных (справочники, документы, регистры), соединения описываются конструкцией ЛЕВОЕ СОЕДИНЕНИЕ, а специфические возможности вроде виртуальных таблиц (РегистрНакопления.Продажи.Обороты) и итогов по иерархии (ИТОГИ ПО) в классическом SQL отсутствуют. То есть это диалект, адаптированный под предметную область учёта.

С какого языка проще перейти на 1С

Pascal / Delphi

Знакомая блочная структура и явные границы блоков; придётся привыкнуть к отсутствию строгой типизации и классов.

Visual Basic / VBA

Похожая событийная модель и работа с объектами через точку; переход обычно самый быстрый.

Python

Схожая динамическая типизация и высокий уровень абстракции; непривычны русский синтаксис и привязка к метаданным.

SQL

Прямое попадание в язык запросов 1С; но основной язык модулей придётся учить с нуля.

C++ / Java / C#

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

Что в 1С не похоже ни на один популярный язык

Главная уникальная черта — двуязычный синтаксис. Одни и те же операторы можно писать по-русски (Если) и по-английски (If), причём в одном модуле допустимо смешение. Ни один распространённый язык такого не допускает. Для новичков-непрограммистов это снижает порог входа, а для опытных разработчиков иногда становится источником путаницы при чтении чужого кода.

Вторая особенность — отсутствие классов в привычном объектно-ориентированном смысле. В 1С нет наследования, интерфейсов и полиморфизма как в Java или C#. «Объектность» реализована через типы метаданных: справочник, документ, регистр — это готовые шаблоны с предопределённым поведением, которые разработчик расширяет, но не создаёт с нуля. Ближайшая аналогия — работа с фреймворком, где каркас задан платформой.

Третья черта — событийная модель, жёстко привязанная к объектам конфигурации. Обработчики ПередЗаписью, ПриПроведении, ПриОткрытии вызываются платформой в строго определённые моменты жизненного цикла объекта. Это напоминает триггеры в СУБД и обработчики событий в UI-фреймворках одновременно.

Как оценить свой порог входа: практическая проверка

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

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

При переходе с другого языка типичная ошибка — переносить привычные паттерны напрямую. Например, разработчик с SQL-прошлым пытается решать всё запросами там, где в 1С принято использовать последовательное проведение документов; а пришедший из ООП-языков ищет наследование и пытается строить иерархии там, где платформа предлагает подсистемы и функциональные опции.

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

Кому и зачем полезно знать аналогии

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

Третья ситуация — интеграции. Когда 1С обменивается данными с внешними системами (через HTTP-сервисы, веб-сервисы, файлы обмена), разработчику приходится мыслить в двух парадигмах сразу: предметной логике 1С и универсальных форматах вроде JSON и REST. Знание того, какие концепции 1С уникальны, а какие универсальны, помогает правильно проектировать границы обмена.

Итог

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

По синтаксису 1С ближе всего к Pascal и Visual Basic, по типизации и уровню абстракции — к Python, а язык запросов — диалект SQL. Уникальны двуязычный синтаксис, отсутствие классов и привязка кода к метаданным. Сходство с другими языками ускоряет старт, но не заменяет изучения платформы.

Частые вопросы

1С — это настоящий язык программирования или скриптовый язык?

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

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

Да, все операторы имеют английские синонимы (If, Then, While, Function), и платформа одинаково понимает оба варианта. Однако имена объектов конфигурации в типовых решениях обычно русские, поэтому на практике полностью английский код встречается редко.

Поможет ли знание SQL освоить запросы в 1С?

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

Почему в 1С нет классов и наследования?

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

С какого языка легче всего перейти на 1С?

Быстрее всего адаптируются те, кто работал с VBA, Visual Basic или Delphi: знакомы и блочный синтаксис, и событийная модель, и работа с прикладными объектами. Опыт SQL даёт сильное преимущество в освоении запросов независимо от основного языка.