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

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

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

Язык 1С программирования: что это, как устроен встроенный язык платформы, где применяется, какие объекты описывает и с чего начать изучение новичку.

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

Главная особенность языка — предметная ориентация. Вместо абстрактных конструкций работы с памятью разработчик описывает хозяйственные операции: «провести документ», «списать товар со склада», «рассчитать остаток по регистру». За счёт этого типовые задачи учёта решаются значительно быстрее, чем на языках общего назначения, а порог входа для специалиста с экономическим образованием оказывается ниже.

Второй важный факт — язык исторически поддерживает русскоязычный синтаксис: ключевые слова «Если», «Тогда», «Цикл», «Процедура» являются полноценной частью языка наряду с английскими аналогами. Это не псевдокод и не упрощение, а официальная возможность платформы, хотя в крупных проектах часто используют английский вариант для совместимости с внешними инструментами.

Что представляет собой встроенный язык платформы

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

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

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

Из чего состоит программа: модули и объекты

Код в 1С распределяется по модулям, каждый из которых привязан к определённому контексту исполнения. Модуль объекта описывает поведение конкретного объекта (например, что происходит при записи документа), модуль формы — логику экранной формы, общий модуль — переиспользуемые процедуры и функции, доступные всей конфигурации. Есть также модуль приложения, модуль сеанса и модули менеджеров объектов.

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

  • Справочники — условно постоянные списки: номенклатура, контрагенты, сотрудники;
  • Документы — факты хозяйственной жизни: поступление, реализация, начисление зарплаты;
  • Регистры (накопления, сведений, расчёта, бухгалтерии) — структуры для хранения итогов и состояний;
  • Отчёты и обработки — инструменты анализа данных и сервисные операции;
  • Перечисления, планы счетов, планы видов характеристик — вспомогательные типы данных.

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

Как выглядит код: пример с объяснением

Типичный фрагмент кода на встроенном языке выглядит так:

Процедура РассчитатьСкидку(ДокументОбъект) Экспорт

СуммаДокумента = ДокументОбъект.Товары.Итог("Сумма");

Если СуммаДокумента > 100000 Тогда

ПроцентСкидки = 10;

ИначеЕсли СуммаДокумента > 50000 Тогда

ПроцентСкидки = 5;

Иначе

ПроцентСкидки = 0;

КонецЕсли;

Для Каждого СтрокаТовара Из ДокументОбъект.Товары Цикл

СтрокаТовара.Скидка = СтрокаТовара.Сумма * ПроцентСкидки / 100;

КонецЦикла;

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

Здесь видны характерные черты языка: процедура объявляется ключевым словом «Процедура», обращение к табличной части документа идёт через точку, агрегатная функция «Итог» вычисляет сумму по колонке, цикл «Для Каждого» перебирает строки. Весь тот же код можно написать английскими ключевыми словами — Procedure, If, For Each — и платформа воспримет оба варианта как эквивалентные.

Обратите внимание на слово «Экспорт»: оно делает процедуру доступной из других модулей. Без него процедура считается локальной и видна только внутри своего модуля — это основной механизм инкапсуляции в 1С.

Где исполняется код: клиент, сервер, тонкий и веб-клиент

Платформа «1С:Предприятие» — трёхуровневая система: клиентское приложение, сервер 1С и СУБД. Код может выполняться на клиенте или на сервере, и разработчик обязан явно указывать контекст исполнения с помощью директив компиляции: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста.

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

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

Язык запросов — вторая половина встроенного языка

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

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Товары.Номенклатура КАК Номенклатура,

| СУММА(Товары.Количество) КАК Количество

|ИЗ

| Документ.РеализацияТоваров.Товары КАК Товары

|ГДЕ

| Товары.Ссылка.Дата >= &НачалоПериода

|СГРУППИРОВАТЬ ПО

| Товары.Номенклатура";

Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ТекущаяДатаСеанса()));

Результат = Запрос.Выполнить().Выгрузить();

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

Типичные ошибки новичков
01
Читать данные обходом объектов в цикле вместо запроса — на большой базе такой код работает в разы медленнее
02
Игнорировать директивы &НаКлиенте/&НаСервере и вызывать серверные процедуры из клиентского контекста — код падает с ошибкой или не компилируется
03
Изменять типовую конфигурацию напрямую вместо расширения — при обновлении все доработки теряются или блокируют обновление
04
Хранить промежуточные данные в глобальных переменных модуля — в клиент-серверном режиме это приводит к непредсказуемому поведению

Чем язык 1С отличается от языков общего назначения

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

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

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

С чего начать изучение: пошаговый маршрут

Изучение языка 1С эффективнее всего строить вокруг практической задачи, а не чтения синтаксиса. Рабочая последовательность выглядит так:

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

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

Проверка первого результата
  1. 1
    Создайте регистр накопления «ОстаткиТоваров» и свяжите его с документом поступления
  2. 2
    Напишите в модуле документа обработчик ОбработкаПроведения с записью движений
  3. 3
    Проведите документ в режиме «Предприятие» и откройте движения документа — записи должны появиться в регистре
  4. 4
    Постройте отчёт по регистру через СКД и сверьте итог с данными документа

Когда стоит привлекать специалиста

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

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

Итог

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

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

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

Язык 1С — это настоящий язык программирования или скриптовый?

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

Нужно ли знать другой язык программирования перед изучением 1С?

Нет, это не обязательно. Многие разработчики 1С начинали без технического образования. Базовое понимание логики программирования (переменные, условия, циклы) осваивается прямо на встроенном языке. Знание SQL заметно ускорит изучение языка запросов, но и его можно освоить параллельно.

Почему в 1С код пишут на русском языке?

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

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

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

Чем отличается программист 1С от внедренца или консультанта?

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

Сколько времени нужно, чтобы начать писать простые доработки?

При регулярных занятиях с практикой базовые навыки — простые обработки, печатные формы, несложные отчёты на СКД — обычно формируются за несколько месяцев. Уверенная работа с проведением документов, регистрами и клиент-серверной архитектурой требует заметно больше времени и опыта на реальных задачах.