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

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

1С — язык программирования какого уровня

Разбираем, к какому уровню относится встроенный язык 1С:Предприятие, чем он отличается от C++ и Python, где применяется и с чего начать изучение.

Встроенный язык платформы 1С:Предприятие относится к языкам высокого уровня. Это означает, что разработчик описывает бизнес-логику в терминах предметной области — документы, справочники, проводки, накопление — а платформа сама транслирует код в низкоуровневые операции: обращения к СУБД, управление памятью, работу с транзакциями. Программист не управляет указателями, не выделяет память вручную и не пишет SQL-запросы для типовых операций.

По классификации язык 1С ближе всего к предметно-ориентированным языкам (DSL) высокого уровня с элементами четвёртого поколения (4GL). Он существует только внутри платформы и не компилируется в машинный код напрямую: код исполняется виртуальной машиной платформы, которая сама написана на C/C++. Это важно понимать при оценке производительности и выборе инструментов.

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

Что означает «уровень языка» и где находится 1С

Уровень языка программирования показывает степень абстракции от аппаратного обеспечения. Низкоуровневые языки (ассемблер, машинный код) оперируют регистрами процессора и адресами памяти. Языки среднего уровня (C, C++) дают контроль над памятью, но уже имеют структуры данных и функции. Высокоуровневые языки (Python, Java, C#, встроенный язык 1С) скрывают детали железа и операционной системы, предлагая разработчику готовые абстракции.

Язык 1С стоит в верхней части этой шкалы, причём выше многих «классических» высокоуровневых языков по степени абстракции от инфраструктуры. Например, чтобы записать документ и сформировать движения по регистрам, разработчик не пишет ни одного SQL-запроса — платформа сама строит запросы к СУБД, управляет транзакциями и блокировками.

Дополнительно язык 1С относят к четвёртому поколению языков (4GL), потому что он ориентирован на работу с данными и декларативное описание структуры прикладного решения: метаданные конфигурации (справочники, документы, регистры, отчёты) описываются в конфигураторе, а код лишь дополняет их поведением.

Как устроен встроенный язык 1С технически

Код на встроенном языке хранится в модулях конфигурации: модулях объектов, форм, общих модулях, модулях менеджеров. При запуске платформа компилирует модуль в промежуточный байт-код, который исполняется встроенной виртуальной машиной. Это похоже на модель Java или C#, но без возможности запуска кода вне платформы.

Язык поддерживает два синтаксиса — русский и английский, причём ключевые слова взаимозаменяемы: Если ... Тогда ... КонецЕсли; эквивалентно If ... Then ... EndIf;. Типизация динамическая: тип переменной определяется значением в момент присваивания. Сборка мусора и управление памятью полностью на стороне платформы.

Пример типичного кода, демонстрирующего высокий уровень абстракции:

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Продажи.Номенклатура,

| СУММА(Продажи.Количество) КАК Количество

|ИЗ

| РегистрНакопления.Продажи КАК Продажи

|СГРУППИРОВАТЬ ПО

| Продажи.Номенклатура";

Результат = Запрос.Выполнить().Выгрузить();

Обратите внимание: запрос написан на собственном языке запросов 1С, который внешне похож на SQL, но оперирует объектами конфигурации, а не физическими таблицами. Платформа сама преобразует его в SQL конкретной СУБД — MS SQL Server, PostgreSQL, Oracle или IBM Db2.

Сравнение с другими языками по уровню абстракции

Чтобы точнее позиционировать язык 1С, полезно сопоставить его с распространёнными языками по ключевым признакам.

КритерийC / C++Python / C#Встроенный язык 1С
УровеньНизкий / среднийВысокийВысокий (4GL, DSL)
Управление памятьюРучноеАвтоматическоеАвтоматическое
Работа с БДЧерез библиотеки и SQLSQL или ORMВстроенные объекты и язык запросов
ТипизацияСтатическаяДинамическая / статическаяДинамическая
ИсполнениеМашинный кодВМ / интерпретаторВиртуальная машина платформы
Область примененияУниверсальнаяУниверсальнаяТолько внутри платформы 1С

Ключевое отличие: Python или C# — языки общего назначения, на них пишут что угодно. Язык 1С решает одну задачу — описание прикладной логики учётных систем — и делает это максимально коротким способом за счёт готовых абстракций платформы.

Сравнение вариантов

Встроенный язык 1С

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

Внешние компоненты (C++)

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

Расширения и HTTP-интеграции

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

Что высокий уровень языка даёт на практике

Первое следствие — скорость разработки. Типовые операции (запись объекта, проведение документа, построение отчёта через СКД) требуют минимального кода, потому что платформа берёт на себя формирование SQL, управление транзакциями, контроль прав доступа и блокировки. Задача, которая на «голом» SQL и C# заняла бы сотни строк, в 1С часто решается несколькими строками кода и настройками в метаданных.

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

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

Где язык 1С не подходит и что использовать вместо него

Есть классы задач, для которых встроенный язык не предназначен, и попытки решить их «в лоб» приводят к проблемам производительности или поддержки:

  • Обработка больших объёмов данных в реальном времени — лучше выносить на сторону СУБД или внешние сервисы.
  • Работа с оборудованием (сканеры, ККТ, весы) нестандартным способом — используются внешние компоненты по технологии Native API или COM.
  • Математически интенсивные вычисления, машинное обучение, обработка изображений — выносятся в сервисы на Python, C# или C++ с обменом через HTTP.
  • Веб-фронтенд и мобильные приложения общего назначения — разрабатываются на профильных технологиях, 1С выступает бэкендом учётных данных.

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

С чего начать изучение языка 1С

Оптимальный путь для новичка — идти от предметной области к синтаксису, а не наоборот. Сначала нужно понять, что такое справочник, документ, регистр накопления и регистр сведений, как документ формирует движения. Без этого знание операторов языка не даёт практической пользы.

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

Порядок действий
  1. 1
    Установите учебную версию платформы и откройте демонстрационную конфигурацию
  2. 2
    Изучите объекты метаданных: справочники, документы, регистры — и их связи
  3. 3
    Освойте базовый синтаксис: условия, циклы, процедуры, коллекции
  4. 4
    Научитесь писать запросы в конструкторе запросов и читать их текст
  5. 5
    Напишите простое проведение документа с движениями по регистру
  6. 6
    Проверьте результат: движения видны в регистре, отчёт по регистру показывает корректные итоги

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

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

Частые вопросы об уровне и возможностях языка 1С

1С — это язык высокого или низкого уровня?

Однозначно высокого. Разработчик не управляет памятью, не пишет SQL для типовых операций и не работает с системными вызовами. По степени абстракции язык 1С стоит даже выше Python или C#, потому что дополнительно скрывает слой работы с СУБД.

Относится ли язык 1С к 4GL?

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

Можно ли использовать язык 1С вне платформы?

Нет. Код исполняется только виртуальной машиной платформы 1С:Предприятие. Для задач вне платформы применяются другие языки, а связь с 1С организуется через веб-сервисы, HTTP-интерфейсы или внешние компоненты.

Сложно ли перейти на 1С программисту, знающему Python или C#?

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

Почему код 1С иногда работает медленно, если язык высокоуровневый?

Почти всегда причина не в языке, а в архитектуре решения: запросы в циклах, отсутствие индексов по используемым полям, чтение лишних данных, неоптимальная структура регистров. Оптимизация начинается с анализа запросов и плана их выполнения на стороне СУБД.

Нужно ли знать SQL для разработки на 1С?

Для обычной разработки достаточно встроенного языка запросов 1С. Знание SQL полезно на уровне администрирования и диагностики производительности — чтобы читать планы запросов и понимать, как платформа транслирует запросы в конкретную СУБД.

Итог

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

Встроенный язык 1С — высокоуровневый предметно-ориентированный язык (4GL), исполняемый платформой. Его сила — в скорости разработки учётной логики, его граница — задачи вне платформы. Эффективная работа строится на понимании метаданных, запросов и механизмов платформы, а не на системном программировании.