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