Разработка и Конфигурация · 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С
Для старта достаточно установить платформу 1С:Предприятие и учебную версию любой конфигурации. Весь инструментарий разработчика уже встроен: конфигуратор с редактором модулей, отладчик, синтакс-помощник, конструкторы запросов и форм. Отдельная среда разработки не требуется, хотя существует и 1C:Enterprise Development Tools (EDT) на базе Eclipse для командной разработки.
Практичный порядок освоения: сначала структура конфигурации (справочники, документы, регистры), затем основы встроенного языка, далее язык запросов и только потом управляемые формы, СКД и механизмы обмена. Попытка начать с форм и отчётов без понимания объектной модели почти всегда приводит к тупику.
- 1Установите платформу и учебную конфигурацию
- 2Изучите объекты метаданных: справочники, документы, регистры
- 3Напишите первую процедуру в модуле обработки и запустите её через отладчик
- 4Освойте язык запросов через конструктор запросов
- 5Создайте простой отчёт на СКД и проверьте результат на тестовых данных
Типичные ошибки начинающих разработчиков 1С
Первая распространённая ошибка — попытка применить привычки из других языков без учёта специфики платформы. Например, обход коллекции с запросом к базе внутри цикла вместо одного запроса с соединением. Такой код работает на тестовых данных, но кладёт сервер на реальных объёмах.
Вторая группа ошибок связана с контекстом исполнения: вызов серверных методов с клиента без директив компиляции, обращение к несуществующим в данном контексте объектам, игнорирование разделения модулей. Третья — правка типовой конфигурации напрямую вместо использования расширений, что превращает каждое обновление в ручную свёртку изменений.
Как проверить, что вы движетесь в правильном направлении
Хороший критерий освоения языка — вы можете без подсказок написать обработчик проведения документа с движениями по регистру, запросом остатков и контролем отрицательных остатков. Это базовый сценарий, который покрывает встроенный язык, запросы, транзакции и объектную модель одновременно.
Второй ориентир — умение читать типовой код. Откройте модуль любого документа в типовой конфигурации: если логика обработчиков понятна, а незнакомые конструкции находятся через синтакс-помощник за минуты, фундамент сформирован.
Как проверить результат
Конфигуратор не выдаёт ошибок при проверке модуля
Сообщения о синтаксических ошибках или несуществующих методах
Процедуры выполняются на сервере или клиенте согласно директивам
Ошибки вызова методов, недоступных в текущем контексте
Время выполнения не растёт линейно от числа строк данных
Замедление пропорционально объёму — признак запросов в цикле
Что важно запомнить
Основной язык 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-соединение или запуск внешних скриптов из пакетных операций. Бизнес-логика при этом всё равно остаётся на встроенном языке.