Разработка и Конфигурация · 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С
Знакомая блочная структура и явные границы блоков; придётся привыкнуть к отсутствию строгой типизации и классов.
Похожая событийная модель и работа с объектами через точку; переход обычно самый быстрый.
Схожая динамическая типизация и высокий уровень абстракции; непривычны русский синтаксис и привязка к метаданным.
Прямое попадание в язык запросов 1С; но основной язык модулей придётся учить с нуля.
Полезен опыт алгоритмизации, но модель 1С без классов и наследования потребует перестройки мышления.
Что в 1С не похоже ни на один популярный язык
Главная уникальная черта — двуязычный синтаксис. Одни и те же операторы можно писать по-русски (Если) и по-английски (If), причём в одном модуле допустимо смешение. Ни один распространённый язык такого не допускает. Для новичков-непрограммистов это снижает порог входа, а для опытных разработчиков иногда становится источником путаницы при чтении чужого кода.
Вторая особенность — отсутствие классов в привычном объектно-ориентированном смысле. В 1С нет наследования, интерфейсов и полиморфизма как в Java или C#. «Объектность» реализована через типы метаданных: справочник, документ, регистр — это готовые шаблоны с предопределённым поведением, которые разработчик расширяет, но не создаёт с нуля. Ближайшая аналогия — работа с фреймворком, где каркас задан платформой.
Третья черта — событийная модель, жёстко привязанная к объектам конфигурации. Обработчики ПередЗаписью, ПриПроведении, ПриОткрытии вызываются платформой в строго определённые моменты жизненного цикла объекта. Это напоминает триггеры в СУБД и обработчики событий в UI-фреймворках одновременно.
Как оценить свой порог входа: практическая проверка
Чтобы понять, насколько легко вам дастся 1С, полезно пройти короткий самотест: откройте любой модуль типовой конфигурации и попробуйте прочитать логику обработчика. Если вы без словаря различили условия, циклы и вызовы функций — синтаксическая часть не станет проблемой. Если же сложность вызвали обращения к регистрам и виртуальным таблицам — это нормально: именно там начинается специфика платформы.
- 1Откройте конфигуратор и найдите общий модуль или модуль документа.
- 2Прочитайте один обработчик целиком, отмечая знакомые конструкции: условия, циклы, присваивания.
- 3Найдите в коде запрос и сопоставьте его ключевые слова с SQL-аналогами.
- 4Выпишите незнакомые элементы — обычно это обращения к метаданным и виртуальным таблицам.
- 5Оцените результат: знакомо более половины конструкций — порог входа низкий.
При переходе с другого языка типичная ошибка — переносить привычные паттерны напрямую. Например, разработчик с SQL-прошлым пытается решать всё запросами там, где в 1С принято использовать последовательное проведение документов; а пришедший из ООП-языков ищет наследование и пытается строить иерархии там, где платформа предлагает подсистемы и функциональные опции.
Кому и зачем полезно знать аналогии
Понимание того, на что похож 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 даёт сильное преимущество в освоении запросов независимо от основного языка.