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

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

Язык программирования 1С: что это такое и как он работает

Что такое встроенный язык 1С, где он применяется, как устроен синтаксис на русском и английском, чем отличается от других языков и как начать на нём писать.

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

Главная особенность языка — возможность писать код на русском языке. Инструкции, названия функций и системные перечисления имеют русские и английские синонимы, поэтому один и тот же фрагмент можно записать как «Если ... Тогда ... КонецЕсли» или «If ... Then ... EndIf». Это снижает порог входа для специалистов без классического программистского образования.

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

Что представляет собой язык 1С и зачем он нужен

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

Без языка конфигурация ограничена декларативными настройками: можно создать справочник или документ, но нельзя задать нетривиальную логику. Код на встроенном языке подключается через обработчики событий — например, «ПриЗаписи», «ОбработкаПроведения», «ПриОткрытии» формы. Платформа сама вызывает эти обработчики в нужные моменты, а разработчику остаётся описать реакцию системы.

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

Как устроен синтаксис языка

Синтаксис языка 1С напоминает паскалевидные языки: программа состоит из процедур и функций, ветвления описываются конструкцией «Если ... Тогда ... Иначе ... КонецЕсли», циклы — «Для ... Цикл ... КонецЦикла» и «Пока ... Цикл». Каждая инструкция завершается точкой с запятой. Регистр букв значения не имеет.

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

Пример простейшей процедуры, проверяющей заполненность реквизита:

Процедура ПроверитьКонтрагента(Документ) Экспорт

Если Не ЗначениеЗаполнено(Документ.Контрагент) Тогда

ВызватьИсключение "Не заполнен контрагент в документе";

КонецЕсли;

КонецПроцедуры

Типы данных делятся на примитивные (строка, число, дата, булево, неопределено) и ссылочные (ссылки на объекты базы данных — элементы справочников, документы). Значение «Неопределено» аналогично null в других языках и часто становится источником ошибок, если его не обрабатывать явно.

Клиентский и серверный контекст исполнения

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

В модулях форм контекст размечают директивами компиляции: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. Вызов серверной процедуры с клиента — это сетевое обращение, поэтому перегруженные клиент-серверные вызовы в цикле резко замедляют работу формы.

Дополнительно в клиент-серверном режиме действует разделение на тонкий клиент, веб-клиент и толстый клиент. Не весь код доступен во всех вариантах: например, некоторые методы работы с файловой системой требуют расширения работы с файлами в веб-клиенте. Перед использованием метода стоит проверять его доступность в синтакс-помощнике конфигуратора.

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

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

Запросы поддерживают соединения таблиц, группировки, итоги, виртуальные таблицы регистров (например, «Остатки» и «Обороты»), временные таблицы и пакетное выполнение. Основная масса отчётов и обработок строится именно на запросах, а не на переборе данных в цикле.

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

Чем язык 1С отличается от универсальных языков

Сравнение с языками общего назначения помогает понять, где 1С уместен, а где нет.

КритерийВстроенный язык 1СУниверсальные языки (C#, Java, Python)
Область примененияУчётные и бизнес-задачи внутри платформыЛюбые: веб, мобильные приложения, системное ПО
Среда выполненияТолько платформа «1С:Предприятие»Операционная система, браузер, виртуальная машина
Работа с даннымиОбъектная модель + встроенный язык запросовSQL, ORM, ручная работа с БД
ТипизацияДинамическая, нестрогаяЧаще статическая и строгая
ИнфраструктураПроведение, регистры, права — из коробкиРеализуется библиотеками и фреймворками

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

Как начать писать на языке 1С

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

Первые шаги в изучении
  1. 1
    Установите платформу и создайте пустую информационную базу
  2. 2
    Создайте справочник и документ, свяжите их реквизитом
  3. 3
    В модуле документа опишите обработчик ОбработкаПроведения
  4. 4
    Напишите простой запрос к справочнику и выведите результат в отчёт
  5. 5
    Научитесь пользоваться синтакс-помощником и отладчиком конфигуратора

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

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

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

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

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

Итог

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

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

Частые вопросы о языке 1С

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

Нет. Русскоязычный синтаксис и предметная направленность снижают порог входа: многие разработчики 1С приходят из бухгалтерии, экономики или смежных областей. Важнее понимать учётные процессы и логику работы базы данных, а алгоритмическую базу можно освоить параллельно.

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

Да, у большинства инструкций и встроенных функций есть английские синонимы: If вместо Если, Procedure вместо Процедура. Смешивать варианты в одном проекте можно технически, но не стоит — единый стиль кода упрощает чтение и сопровождение.

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

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

Подходит ли язык 1С для задач вне учёта?

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

Что такое расширение конфигурации и когда его применять?

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

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

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