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

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

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

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

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

Особенность, которая удивляет новичков: встроенный язык 1С может писаться как на русском, так и на английском синтаксисе. Один и тот же оператор допустимо записать как «Если ... Тогда ... Иначе ... КонецЕсли» или «If ... Then ... Else ... EndIf». Обе формы эквивалентны, компилятор платформы понимает обе, а в большинстве российских конфигураций исторически используется русский вариант.

При этом работа программиста 1С не сводится к одному языку. Помимо встроенного языка приходится использовать язык запросов 1С (похож на SQL), язык выражений системы компоновки данных для отчётов, а для интеграций — внешние технологии: HTTP, веб-сервисы, COM, иногда Python, JavaScript или C# для внешних компонент. Ниже разберём каждый инструмент отдельно.

Встроенный язык 1С: что это и как устроен

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

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

Типовые конструкции языка знакомы любому программисту: переменные без явного объявления типа (типизация динамическая), условные операторы, циклы «Для» и «Пока», процедуры и функции с параметрами, обработка исключений через «Попытка ... Исключение ... КонецПопытки». Коллекции представлены массивами, структурами, соответствиями и списками значений.

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

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

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

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

Выборка данных из базы в 1С выполняется на собственном языке запросов, который синтаксически близок к SQL, но работает не с физическими таблицами СУБД, а с объектами метаданных: документами, справочниками, регистрами. Запрос «ВЫБРАТЬ ... ИЗ Документ.РеализацияТоваровУслуг» платформа сама преобразует в SQL для конкретной СУБД.

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

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

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

Язык выражений СКД и макеты отчётов

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

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

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

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

  • Интеграции через HTTP и веб-сервисы — обмен с сайтами, CRM, маркетплейсами по REST API; здесь нужно понимать JSON, XML, форматы запросов, а иногда читать документацию на примерах кода на других языках.
  • Внешние компоненты — библиотеки по технологии Native API или COM, которые пишут на C++, C# или Delphi, когда платформе не хватает возможностей (работа со специфическим оборудованием, криптография, нестандартные протоколы).
  • JavaScript и HTML — для полей HTML-документа в формах, визуализаций, карт, нестандартных интерфейсных элементов.
  • SQL диалект конкретной СУБД — при администрировании и диагностике производительности полезно читать планы запросов в MS SQL Server или PostgreSQL.
  • OneScript — независимая реализация интерпретатора языка 1С для скриптов автоматизации: сборка, тестирование, развёртывание (инструменты vanessa-runner, gitsync и подобные).

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

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

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

Язык запросов

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

СКД и язык выражений

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

Внешние языки (C#, Python, JS)

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

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

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

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

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

Частые ошибки начинающих разработчиков

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

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

Как понять, что язык освоен

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

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

Чтение чужого кода
Норма

Свободно читаете модули типовой конфигурации и понимаете логику

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

Каждая вторая конструкция требует поиска в синтакс-помощнике

Запросы
Норма

Пишете запрос с соединениями и виртуальными таблицами без конструктора

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

Любая выборка делается перебором в цикле

Отчёты
Норма

Собираете отчёт на СКД с настройками пользователя

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

Отчёт формируется только программным выводом в табличный документ

Доработки
Норма

Используете расширения и не меняете типовой код

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

Конфигурация снята с поддержки ради мелких правок

Итог

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

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

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

Язык 1С — это полноценный язык программирования?

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

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

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

Почему в 1С код пишут на русском — это не моветон?

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

Чем язык запросов 1С отличается от обычного SQL?

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

Сколько времени нужно, чтобы научиться программировать в 1С?

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

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

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