Разработка и Конфигурация · 11 мин
Какой язык программирования используется в 1С:Предприятие
Какой язык программирования используется в 1С:Предприятие — встроенный язык 1С, его синтаксис, русские и английские команды, внешние компоненты и интеграции.
Все прикладные решения на платформе 1С:Предприятие — бухгалтерский учёт, зарплата, торговля, производство — написаны на собственном встроенном языке, который разработчики называют «встроенный язык 1С» или просто «язык 1С». Это не Python, не Java и не C#: платформа не компилирует код в машинные инструкции, а исполняет его собственным интерпретатором внутри клиентского приложения или сервера 1С.
Главная особенность языка — двуязычный синтаксис. Одна и та же команда может быть записана по-русски (Если ... Тогда ... КонецЕсли;) или по-английски (If ... Then ... EndIf;), причём оба варианта можно смешивать в одном модуле. Именно поэтому код типовых конфигураций выглядит как русский текст, а не как привычный программный листинг.
Ниже разберём, как устроен язык 1С, где он выполняется, чем отличается от универсальных языков, когда нужны внешние компоненты на C++ или интеграции через другие технологии, и с чего начать изучение.
Что представляет собой встроенный язык 1С
Встроенный язык 1С — предметно-ориентированный язык, созданный для описания бизнес-логики: проведения документов, расчёта итогов, формирования отчётов, обработки справочников. Он тесно связан с объектной моделью конфигурации: разработчик работает не с таблицами базы данных напрямую, а с объектами «Документ», «Справочник», «РегистрНакопления» и их методами.
Язык интерпретируемый и слабо типизированный: тип переменной определяется значением в момент присваивания, объявлять типы заранее не нужно. Программный код размещается в модулях — модулях объектов, форм, общих модулях, модулях приложения и сеанса. Каждый модуль связан с контекстом исполнения, что определяет, какие объекты и методы в нём доступны.
Пример типичного кода на встроенном языке:
Функция ПолучитьОстатокТовара(Товар) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ СУММА(Количество) КАК Остаток
|ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки
|ГДЕ Номенклатура = &Товар";
Запрос.УстановитьПараметр("Товар", Товар);
Результат = Запрос.Выполнить().Выбрать();
Если Результат.Следующий() Тогда
Возврат Результат.Остаток;
Иначе
Возврат 0;
КонецЕсли;
КонецФункции
Русский и английский синтаксис: какой выбрать
Платформа поддерживает два варианта ключевых слов, и оба равнозначны. Русский вариант традиционно используется в типовых конфигурациях от фирмы «1С» и в большинстве франчайзи-разработок в России. Английский вариант чаще встречается в международных проектах и у команд, привыкших к классическим языкам.
Выбор синтаксиса задаётся в настройках конфигуратора и может отличаться для разных модулей. Смешивание в одном модуле технически допустимо, но считается дурным тоном: код становится трудно читать и сопровождать.
| Конструкция | Русский вариант | Английский вариант |
|---|---|---|
| Условие | Если ... Тогда ... КонецЕсли; | If ... Then ... EndIf; |
| Цикл | Для ... Цикл ... КонецЦикла; | For ... Do ... EndDo; |
| Процедура | Процедура ... КонецПроцедуры | Procedure ... EndProcedure |
| Функция | Функция ... КонецФункции | Function ... EndFunction |
| Попытка | Попытка ... Исключение ... КонецПопытки; | Try ... Except ... EndTry; |
Где выполняется код: клиент, сервер, тонкий и веб-клиент
Код на встроенном языке исполняется в разных средах, и это принципиально влияет на архитектуру решения. Клиентский код работает на компьютере пользователя и отвечает за интерфейс: формы, диалоги, предупреждения. Серверный код выполняется на сервере 1С:Предприятия (или в файловой базе — внутри клиентского процесса) и имеет доступ к данным, запросам и прикладным объектам.
В модулях форм контекст явно разделяется директивами компиляции: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Передавать между клиентом и сервером можно только сериализуемые данные — примитивные типы, структуры, массивы; ссылку на объект базы данных передать можно, а открытую транзакцию или объект «Запрос» — нет.
Тонкий и веб-клиент накладывают дополнительные ограничения: часть функций работы с файловой системой и COM-объектами недоступна или требует расширения работы с файлами. Это нужно учитывать при проектировании, чтобы обработка не «падала» у пользователей браузерного доступа.
Язык запросов 1С — отдельный диалект внутри платформы
Помимо встроенного языка, в платформу встроен собственный язык запросов, внешне похожий на SQL. Он предназначен для выборки данных из информационной базы и поддерживает соединения, группировки, итоги, виртуальные таблицы регистров. Ключевые слова также имеют русский и английский варианты: ВЫБРАТЬ ... ИЗ ... ГДЕ или SELECT ... FROM ... WHERE.
Язык запросов 1С — не полноценный SQL: в нём нет команд изменения данных (INSERT, UPDATE, DELETE). Записываются данные только через объектную модель встроенного языка — методами Записать() у объектов и наборов записей. Такое разделение защищает целостность бизнес-логики: платформа гарантирует, что при записи документа отработают все обработчики проведения.
Запросы используются также в системе компоновки данных (СКД) — механизме построения отчётов, где пользователь может сам менять отборы и группировки без изменения кода.
Чем язык 1С отличается от универсальных языков
Встроенный язык не предназначен для задач общего назначения: на нём не пишут драйверы, игры или высоконагруженные веб-сервисы. Его сильная сторона — скорость разработки учётных систем: готовые механизмы регистров, подсистем, прав доступа и отчётов позволяют собрать рабочее решение за недели, а не месяцы.
Ограничения, о которых стоит знать заранее:
- код исполняется только внутри платформы — отдельного компилятора и автономного рантайма нет;
- нет классов и наследования в привычном ООП-смысле; повторное использование кода достигается общими модулями и подписками на события;
- производительность интерпретируемого кода ниже, чем у компилируемых языков, поэтому тяжёлые вычисления выносят в запросы или внешние компоненты;
- работа с сетью, криптографией и оборудованием возможна, но часто требует внешних компонентов.
Сравнение подходов к расширению функциональности
Основной инструмент: бизнес-логика, проведение, отчёты. Ограничение — исполняется только внутри платформы.
Выборки и агрегация данных, отчёты на СКД. Не умеет изменять данные и работать вне информационной базы.
Драйверы оборудования, криптография, тяжёлые вычисления на C++/C#. Требуют отдельной разработки и установки на клиенты и сервер.
Обмен с внешними системами, написанными на любых языках. Требует проектирования API и обработки ошибок сети.
Когда нужны другие языки: внешние компоненты и интеграции
Если задача выходит за рамки платформы, применяют внешние компоненты по технологии Native API (или устаревший COM): их пишут на C++ или C# и подключают из кода 1С методом ПодключитьВнешнююКомпоненту(). Так реализуют драйверы касс и сканеров, нестандартную криптографию, распознавание изображений.
Второй путь — интеграция: 1С умеет публиковать HTTP-сервисы и стандартный OData-интерфейс, а также вызывать внешние веб-сервисы. Это позволяет связать учётную систему с сайтом, мобильным приложением или CRM, написанными на любом стеке, без встраивания чужого кода в платформу.
Для административных задач — пакетного обновления, тестирования, выгрузки конфигурации — используются внешние инструменты, например OneScript: открытый интерпретатор языка, совместимого с синтаксисом 1С, работающий вне платформы. На нём пишут скрипты автоматизации DevOps-процессов.
Как начать изучать язык 1С самостоятельно
Порог входа ниже, чем у большинства языков: русский синтаксис и встроенная справка в конфигураторе (по нажатию F1 на любом методе) позволяют писать первые обработки уже после нескольких дней практики. Реалистичный маршрут выглядит так.
- 1Установите учебную версию платформы и откройте конфигуратор на демонстрационной базе.
- 2Изучите структуру метаданных: справочники, документы, регистры — без понимания объектной модели код писать бессмысленно.
- 3Напишите простую внешнюю обработку: цикл по справочнику, вывод результата в табличное поле.
- 4Освойте язык запросов и конструктор запросов — большинство прикладных задач решается именно ими.
- 5Разберите типовой код конфигурации: подписки на события, общие модули, проведение документа.
- 6Проверяйте результат в пользовательском режиме: обработка должна корректно работать в тонком и веб-клиенте, а не только в толстом.
Полезная привычка с первых дней — проверять код синтаксическим контролем конфигуратора и следить за предупреждениями: они указывают на неиспользуемые переменные, недопустимые вызовы сервера с клиента и другие дефекты до запуска.
Как проверить результат обучения
Форма открывается, данные выводятся без ошибок
Ошибка «Метод объекта не обнаружен» или недоступность операций с файлами
Возвращает корректные итоги за приемлемое время
Полное сканирование таблицы, зависание на больших объёмах
Один вызов, передаются только простые типы и структуры
Вызовы в цикле, передача объектов запроса или транзакций
Частые вопросы о языке 1С
Это полноценный язык программирования или «не настоящий»?
Полноценный по выразительности: в нём есть условия, циклы, исключения, функции, коллекции, работа с XML/JSON и регулярные выражения. «Неполноценность» — миф; реальное ограничение другое: язык привязан к платформе и не исполняется вне 1С, поэтому перенести навык на другую экосистему напрямую нельзя.
Можно ли писать в 1С на Python, C# или Java?
Напрямую — нет, платформа исполняет только встроенный язык. Косвенно — да: через внешние компоненты (C++/C#), через вызов внешних веб-сервисов, написанных на любом языке, или через COM-интеграцию на Windows. Бизнес-логика конфигурации при этом всё равно остаётся на встроенном языке.
Что лучше учить — русский или английский синтаксис?
Для работы с типовыми конфигурациями и в российских командах — русский: весь типовой код и документация на нём. Английский вариант полезен для международных проектов. Поскольку конструкции полностью эквивалентны, переход между ними занимает считаные дни.
Чем язык запросов 1С отличается от обычного SQL?
Он работает не с физическими таблицами СУБД, а с логическими объектами конфигурации, поддерживает виртуальные таблицы регистров, итоги и разделители. При этом в нём нет команд изменения данных — запись выполняется только объектными методами встроенного языка.
Нужно ли знать SQL для работы с 1С?
Для прикладной разработки достаточно языка запросов 1С. Знание SQL пригодится администраторам и разработчикам при диагностике производительности: планы запросов на уровне СУБД (MS SQL, PostgreSQL) помогают находить узкие места, которые не видны из кода конфигурации.
Подойдёт ли 1С как первый язык программирования?
Да, если цель — карьера в автоматизации учёта: низкий порог входа, русский синтаксис и быстрый видимый результат. Если цель — широкая разработка (веб, мобильные приложения, игры), встроенный язык 1С этих навыков не даст, и лучше начинать с универсального языка.
Что важно запомнить
1С:Предприятие использует собственный встроенный язык (BSL) с русским и английским синтаксисом, дополненный языком запросов. Код исполняется только внутри платформы, а для задач за её пределами применяют внешние компоненты и веб-интеграции.