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

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

Какой язык используется в 1С:Предприятие

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

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

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

Код на встроенном языке не сохраняется в отдельных файлах, как в классических языках программирования. Он хранится внутри конфигурации — в модулях объектов, форм, общих модулях, модулях менеджеров. Редактируется код в конфигураторе или в среде разработки 1C:Enterprise Development Tools (EDT), построенной на базе Eclipse.

Что представляет собой встроенный язык 1С

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

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

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

Русский и английский синтаксис: в чём разница

Два варианта синтаксиса — уникальная черта 1С. Русский вариант исторически доминирует: большинство типовых конфигураций фирмы «1С» (Бухгалтерия, Управление торговлей, Зарплата и управление персоналом) написаны на русском. Английский синтаксис чаще встречается в международных проектах и у разработчиков, привыкших к классическим языкам.

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

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

Где именно пишется код: виды модулей

Код в 1С распределён по модулям, и понимание их структуры важнее знания синтаксиса. Основные места размещения кода:

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

Каждый модуль имеет контекст исполнения: клиент или сервер. В клиент-серверном режиме код, обращающийся к базе данных, должен выполняться на сервере — это ограничение платформы, а не рекомендация. Нарушение приводит к ошибкам вида «Процедура или функция с указанным именем не определена» при вызове серверной процедуры с клиента.

Язык запросов — второй «язык» внутри 1С

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

Язык запросов 1С похож на SQL, но оперирует не таблицами базы данных, а объектами конфигурации: ВЫБРАТЬ Номенклатура.Наименование ИЗ Справочник.Номенклатура. Платформа сама преобразует запрос в SQL для конкретной СУБД (Microsoft SQL Server, PostgreSQL, Oracle или IBM Db2).

Главное правило производительности в 1С: выборку данных делать запросом, а не перебором в цикле. Обращение к базе внутри цикла — самая частая причина «тормозов» в доработках, и её видно уже на небольших объёмах данных.

bsl
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка, Наименование ИЗ Справочник.Номенклатура ГДЕ НЕ ПометкаУдаления";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
	Сообщить(Результат.Наименование);
КонецЦикла;

Чем язык 1С отличается от Python, C# и Java

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

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

Для интеграции с внешними системами из кода 1С доступны HTTP-запросы, веб-сервисы, работа с JSON и XML, COM-объекты (на Windows) и механизм внешних компонент по технологии Native API. Так что «чужой» код на C++ или другом языке подключить можно, но как внешнюю компоненту, а не как часть конфигурации.

Сравнение подходов

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

Единственный вариант для логики внутри конфигурации. Ограничение: работает только внутри платформы, не подходит для задач вне 1С.

Внешние компоненты (Native API)

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

Интеграция через HTTP и веб-сервисы

Оптимальна для связи 1С с системами на других языках. Ограничение: нужен контроль ошибок и надёжности канала.

Что нужно, чтобы начать писать на языке 1С

Для старта достаточно установить платформу 1С:Предприятие (есть учебная версия) и открыть конфигуратор. Практический минимум пути выглядит так:

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

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

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

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

Когда встроенного языка недостаточно

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

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

Итог

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

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

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

Можно ли писать в 1С на Python или C#?

Нет, внутри конфигурации код пишется только на встроенном языке 1С. Python, C# и другие языки можно использовать рядом: во внешних сервисах, с которыми 1С обменивается данными по HTTP, или во внешних компонентах по технологии Native API. Но бизнес-логика конфигурации всегда остаётся на встроенном языке.

Какой синтаксис выбрать новичку — русский или английский?

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

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

Глубокое знание SQL не обязательно — 1С использует собственный язык запросов, который платформа сама переводит в SQL конкретной СУБД. Но понимание принципов SQL (соединения, группировки, индексы) заметно помогает писать эффективные запросы и разбираться в проблемах производительности.

Сложно ли перейти в 1С-разработку с другого языка?

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

Где хранится исходный код конфигурации 1С?

Код хранится внутри файла конфигурации или информационной базы, а не в отдельных текстовых файлах. Для командной разработки и контроля версий конфигурацию выгружают в файлы конфигуратором или используют EDT с интеграцией с Git — тогда модули представлены отдельными файлами и доступны стандартные инструменты совместной работы.