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

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

1С программирование: какой язык программирования используется

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

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

Ключевая особенность встроенного языка — двуязычный синтаксис. Операторы и ключевые слова можно писать как на русском (Если, Иначе, Цикл, Функция), так и на английском (If, Else, While, Function). Компилятор понимает оба варианта и даже их смешение в одном модуле, хотя на практике так делать не стоит. В типовых российских конфигурациях преобладает русский синтаксис.

Помимо встроенного языка, разработчик 1С постоянно работает с языком запросов 1С — декларативным языком, похожим на SQL, но адаптированным под объекты конфигурации. А для интеграций и расширения возможностей платформы применяются внешние языки и технологии: SQL на уровне СУБД, COM, веб-сервисы, HTTP-запросы, внешние компоненты на C++ или C#. Разберём каждый слой подробно.

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

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

Язык поддерживает процедуры и функции с параметрами, условные операторы, циклы, коллекции (массивы, структуры, соответствия, списки значений), работу с датами и строками, механизм исключений через конструкцию Попытка — Исключение. Типизация динамическая: тип переменной определяется присвоенным значением.

Пример простого кода на встроенном языке:

Функция РассчитатьСкидку(СуммаПокупки)

Если СуммаПокупки >= 100000 Тогда

Возврат СуммаПокупки * 0.1;

ИначеЕсли СуммаПокупки >= 50000 Тогда

Возврат СуммаПокупки * 0.05;

Иначе

Возврат 0;

КонецЕсли;

КонецФункции

Русский или английский синтаксис: что выбрать

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

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

Язык запросов 1С и его связь с SQL

Язык запросов — второй обязательный «язык» разработчика 1С. Внешне он напоминает SQL: есть SELECT (ВЫБРАТЬ), WHERE (ГДЕ), соединения таблиц, группировки, итоги. Но работает он не с физическими таблицами базы данных, а с объектами метаданных: справочниками, документами, регистрами сведений и накопления.

Платформа сама транслирует запрос 1С в SQL-запрос конкретной СУБД (MS SQL Server, PostgreSQL, Oracle или файловый вариант). Поэтому писать на чистом SQL напрямую к таблицам базы 1С не нужно и опасно: структура физических таблиц не документирована и может меняться между релизами платформы.

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

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

"ВЫБРАТЬ

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

| СУММА(Продажи.СуммаОборот) КАК Сумма

|ИЗ

| РегистрНакопления.Продажи.Обороты(&Начало, &Конец, , ) КАК Продажи

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

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

Прямая запись в таблицы базы средствами SQL — одна из самых разрушительных ошибок. Она обходит бизнес-логику, контроль итогов и механизмы платформы, что приводит к рассогласованию данных. Все изменения данных должны идти только через объекты встроенного языка.

Где в 1С используются другие языки

Хотя вся логика конфигурации пишется на встроенном языке, реальные проекты редко обходятся без внешних технологий. Внешние компоненты по технологии Native API или COM пишут на C++ или C# — так реализуют работу с оборудованием, криптографию, нестандартные протоколы.

JavaScript встречается в расширениях web-клиента и в HTML-полях форм. HTTP-запросы, REST и SOAP-сервисы, обмен JSON и XML описываются встроенным языком, но требуют понимания соответствующих форматов. Для мобильной платформы 1С также используется тот же встроенный язык с ограниченным набором объектов.

Язык / технологияГде применяется в 1С
Встроенный язык 1СВся бизнес-логика конфигурации, обработчики, отчёты
Язык запросов 1СВыборка данных из объектов конфигурации
SQLТолько чтение на копии базы, задачи администрирования СУБД
C++ / C#Внешние компоненты, работа с оборудованием
JavaScriptРасширения web-клиента, HTML-поля форм

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

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

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

Внешние компоненты на C++/C#

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

Скрипты СУБД (SQL)

Подходят для администрирования и аналитики на копии. Ограничение: запрещены для изменения данных рабочей базы.

Что нужно, чтобы начать программировать в 1С

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

Практичный порядок освоения: сначала структура конфигурации (справочники, документы, регистры), затем основы встроенного языка, далее язык запросов и только потом управляемые формы, СКД и механизмы обмена. Попытка начать с форм и отчётов без понимания объектной модели почти всегда приводит к тупику.

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

Типичные ошибки начинающих разработчиков 1С

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

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

Типичные ошибки
01
Запрос к базе внутри цикла — деградация производительности на реальных объёмах; решение — один запрос с соединениями и группировками
02
Прямая правка типовых модулей вместо расширения конфигурации — потеря изменений при обновлении
03
Смешение русского и английского синтаксиса в одном проекте — затрудняет чтение и ревью кода
04
Игнорирование директив компиляции (&НаСервере, &НаКлиенте) — ошибки исполнения и лишние серверные вызовы
05
Работа с данными через SQL в обход платформы — рассогласование итогов и повреждение базы

Как проверить, что вы движетесь в правильном направлении

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

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

Контрольные точки

Как проверить результат

Модуль компилируется
Норма

Конфигуратор не выдаёт ошибок при проверке модуля

Тревожный признак

Сообщения о синтаксических ошибках или несуществующих методах

Код работает в нужном контексте
Норма

Процедуры выполняются на сервере или клиенте согласно директивам

Тревожный признак

Ошибки вызова методов, недоступных в текущем контексте

Производительность обработки
Норма

Время выполнения не растёт линейно от числа строк данных

Тревожный признак

Замедление пропорционально объёму — признак запросов в цикле

Итог

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

Основной язык 1С — встроенный язык платформы с русским и английским синтаксисом, плюс язык запросов для выборки данных. SQL, C# и JavaScript применяются только на стыках: СУБД, внешние компоненты, web. Вся бизнес-логика пишется только на встроенном языке.

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

Подойдёт ли знание Python или Java для изучения 1С?

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

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

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

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

На базовом уровне — нет, язык запросов 1С закрывает большинство задач. Но понимание SQL полезно для диагностики производительности: план запроса на стороне СУБД часто объясняет, почему запрос 1С работает медленно.

Чем конфигуратор отличается от EDT и что учить?

Конфигуратор — классический встроенный инструмент разработки. EDT — среда на базе Eclipse с поддержкой Git, статического анализа и командной работы. Новичку проще начать с конфигуратора; EDT имеет смысл осваивать при переходе к командной разработке и хранению кода в git.

Можно ли расширить 1С своим кодом на C# или Python?

Напрямую встроить код на другом языке в конфигурацию нельзя. Варианты обхода: внешние компоненты (C++, C#), вызов внешних сервисов по HTTP, COM-соединение или запуск внешних скриптов из пакетных операций. Бизнес-логика при этом всё равно остаётся на встроенном языке.