Разработка и Конфигурация · 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С: выборку данных делать запросом, а не перебором в цикле. Обращение к базе внутри цикла — самая частая причина «тормозов» в доработках, и её видно уже на небольших объёмах данных.
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка, Наименование ИЗ Справочник.Номенклатура ГДЕ НЕ ПометкаУдаления";
Результат = Запрос.Выполнить().Выбрать();
Пока Результат.Следующий() Цикл
Сообщить(Результат.Наименование);
КонецЦикла;Чем язык 1С отличается от Python, C# и Java
Разработчики, приходящие в 1С из других языков, обычно отмечают несколько принципиальных отличий. Во-первых, в 1С нет классов и объектно-ориентированного наследования в привычном виде: прикладные объекты описываются в метаданных конфигурации, а код лишь дополняет их поведение. Во-вторых, нет работы с файлами проекта и систем сборки — вся разработка ведётся внутри конфигуратора или EDT.
В-третьих, значительная часть «программирования» в 1С — это вообще не написание кода, а настройка метаданных: создание справочников, документов, регистров, ролей, подсистем. Платформа автоматически строит интерфейс и структуру таблиц по описанию объектов. Код нужен там, где стандартного поведения недостаточно.
Для интеграции с внешними системами из кода 1С доступны HTTP-запросы, веб-сервисы, работа с JSON и XML, COM-объекты (на Windows) и механизм внешних компонент по технологии Native API. Так что «чужой» код на C++ или другом языке подключить можно, но как внешнюю компоненту, а не как часть конфигурации.
Сравнение подходов
Единственный вариант для логики внутри конфигурации. Ограничение: работает только внутри платформы, не подходит для задач вне 1С.
Подходят для узких задач: работа с оборудованием, специфические алгоритмы. Требуют знания C++ и усложняют сопровождение.
Оптимальна для связи 1С с системами на других языках. Ограничение: нужен контроль ошибок и надёжности канала.
Что нужно, чтобы начать писать на языке 1С
Для старта достаточно установить платформу 1С:Предприятие (есть учебная версия) и открыть конфигуратор. Практический минимум пути выглядит так:
- 1Установите платформу и откройте конфигуратор на учебной или демонстрационной базе
- 2Изучите дерево конфигурации: справочники, документы, регистры — без этого код не имеет смысла
- 3Напишите первую процедуру в общем модуле и вызовите её из обработки
- 4Освойте отладчик: точки останова, просмотр значений переменных, стек вызовов
- 5Перейдите к языку запросов и конструктору запросов
- 6Изучите событийную модель: обработчики ПриЗаписи, ОбработкаПроведения, ПриОткрытии
Отладчик в конфигураторе полноценный: точки останова, пошаговое выполнение, табло значений, вычисление выражений. Не пренебрегайте им — чтение кода глазами в 1С почти всегда проигрывает пошаговой отладке, потому что поведение сильно зависит от контекста: клиент или сервер, транзакция, права пользователя.
Полезные источники: встроенный синтакс-помощник в конфигураторе (вызывается по Ctrl+F1 на любом операторе), документация, поставляемая с платформой, и типовые конфигурации — чтение их кода остаётся лучшим способом увидеть принятые в экосистеме подходы.
Когда встроенного языка недостаточно
Есть задачи, где язык 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 — тогда модули представлены отдельными файлами и доступны стандартные инструменты совместной работы.