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

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

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

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

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

При этом вокруг 1С:ERP существует экосистема смежных технологий: язык запросов 1С для выборки данных, SQL на уровне СУБД, JavaScript и HTML внутри веб-клиента и расширений интерфейса, внешние компоненты на C++. Из-за этого возникает путаница — кажется, что система «написана на нескольких языках». На практике разработчику, который дорабатывает 1С:ERP, нужен один основной язык и несколько вспомогательных навыков.

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

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

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

Ключевая особенность — двуязычность. Код можно писать как на русском, так и на английском синтаксисе, и платформа воспринимает оба варианта одинаково. Типовая 1С:ERP написана на русском синтаксисе, поэтому для её доработки нужно свободно читать русский код: Запрос.Выполнить(), Документы.РеализацияТоваровУслуг и так далее. Переменные необязательно объявлять заранее — типизация динамическая.

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

Язык запросов 1С — вторая половина работы

Выборка данных в 1С:ERP выполняется не циклами по таблицам, а декларативным языком запросов. Он похож на SQL, но оперирует объектами конфигурации: ВЫБРАТЬ ... ИЗ Документ.РеализацияТоваровУслуг, виртуальные таблицы регистров (РегистрНакопления.ТоварыНаСкладах.Остатки), временные таблицы и пакетные запросы.

Запрос — это строка внутри кода на встроенном языке. Платформа транслирует его в SQL для конкретной СУБД (Microsoft SQL Server, PostgreSQL, Oracle или IBM Db2), поэтому писать «сырой» SQL внутри конфигурации не требуется и обычно невозможно штатными средствами. Это защищает от SQL-инъекций и обеспечивает переносимость между СУБД.

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

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

Где в 1С:ERP встречаются другие языки

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

JavaScript и HTML используются в полях HTML-документа внутри форм: интерактивные дашборды, карты, визуализации. Также JavaScript нужен при разработке внешних веб-сервисов и порталов, которые интегрируются с 1С:ERP через HTTP-сервисы или OData. Но это уже внешняя разработка, а не доработка самой конфигурации.

Для интеграций дополнительно применяются: XML/JSON для обменов, SOAP и REST для веб-сервисов, внешние компоненты по технологии Native API или COM (их пишут на C++, C#, Delphi). Все эти языки — опциональны и нужны только в конкретных проектах.

Языки вокруг 1С:ERP

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

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

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

Выборки и отчёты внутри конфигурации. Обязателен наравне со встроенным языком.

SQL

Администрирование СУБД и диагностика. Для разработки прикладной логики не используется.

JavaScript/HTML

Визуализации в формах и внешние веб-приложения для интеграций. Опционально.

C++/C#

Внешние компоненты и вспомогательные сервисы. Требуется редко, на отдельных проектах.

Что учить разработчику для доработки 1С:ERP

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

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

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

Расширения и изменение типовой конфигурации: границы безопасности

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

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

Типичные ошибки программистов из других стеков

Разработчики, приходящие из C#, Java или Python, часто пытаются переносить привычные паттерны: пишут длинные циклы вместо запросов, создают «сущности» через структуры вместо объектов конфигурации, игнорируют транзакции проведения. Результат — медленный и хрупкий код, который конфликтует с типовой логикой.

Вторая группа ошибок — пренебрежение контекстом исполнения. Код с директивой &НаКлиенте не имеет доступа к запросам и прямой работе с данными; попытка обойти это приводит к лишним серверным вызовам и тормозам интерфейса. Правильный подход — тонкий клиентный код и вся работа с данными на сервере.

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

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

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

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

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

Обновление тестовой базы на новый релиз
Норма

Обновление проходит автоматически, расширение применяется без ошибок

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

Конфликты ссылок на изменённые типовые объекты, требуется ручное слияние

Сверка отчётов до и после доработки
Норма

Итоги типовых отчётов совпадают

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

Расхождения в остатках или оборотах

Закрытие месяца на копии
Норма

Все регламентные операции выполняются без ошибок

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

Новые ошибки в расчёте себестоимости или проведении

Полезно также прогнать доработанный код встроенной проверкой конфигуратора и, при наличии, автоматизированными инструментами контроля качества кода (например, на базе EDT и SonarQube с плагином для языка 1С). Это выявляет типовые дефекты до того, как они попадут в эксплуатацию.

Итог

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

1С:ERP написана на встроенном языке платформы «1С:Предприятие 8», а данные выбираются языком запросов — эти два языка обязательны для разработчика. SQL, JavaScript и другие языки нужны только для администрирования и интеграций. Дорабатывайте систему через расширения, тестируйте на копии и никогда не правьте данные напрямую в СУБД.

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

1С:ERP написана на C++ или на языке 1С?

Сама платформа «1С:Предприятие» (ядро, которое исполняет код) написана на C++, но прикладная конфигурация 1С:ERP — вся бизнес-логика, документы, отчёты — написана на встроенном языке 1С. Разработчик, дорабатывающий ERP, работает только со встроенным языком и никогда не касается кода платформы.

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

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

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

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

Можно ли интегрировать 1С:ERP с программой на Python или C#?

Да, через HTTP-сервисы и REST-интерфейс OData, которые публикует платформа, а также через веб-сервисы SOAP, файловые обмены XML/JSON или брокеры сообщений. Внешняя программа пишется на любом языке — внутри 1С для такого обмена создаётся HTTP-сервис на встроенном языке.

Что такое OneScript и относится ли он к 1С:ERP?

OneScript — независимый open-source интерпретатор с синтаксисом, похожим на язык 1С. Он используется для скриптов автоматизации DevOps-задач (сборка, тестирование, выгрузка конфигураций), но не является частью платформы и не исполняется внутри 1С:ERP.

С чего начать изучение языка 1С для доработки ERP?

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