Встроенный язык 1С под лупой: полноценный язык или надстройка над учётной программой

· 9 мин

Содержание

Да, 1С — это язык программирования. Точнее, «1С» в разговоре означает сразу три вещи: технологическую платформу 1С:Предприятие 8.3, встроенный язык этой платформы и прикладные решения на нём (Бухгалтерия, ЗУП, УТ). Встроенный язык 1С полноценный: в нём есть переменные, условия, циклы, процедуры, функции, обработка исключений. На нём можно написать любой алгоритм. Но это предметно-ориентированный язык: он живёт только внутри платформы и заточен под учётные задачи.

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

Из чего состоит платформа 1С:Предприятие

Чтобы понять, где в 1С программирование, нужно разделить три слоя.

СлойЧто этоКто делает
ПлатформаИсполняемые файлы 1cv8.exe, 1cv8c.exe, сервер приложенийФирма 1С, код на C++ закрыт
КонфигурацияМетаданные (справочники, документы, регистры) + модули на встроенном языкеФирма 1С, партнёры, программисты компании
Информационная базаДанные пользователей: контрагенты, документы, движенияПользователи

Платформа — это движок. Он умеет хранить данные (в файле 1Cv8.1CD или в СУБД: PostgreSQL, MS SQL Server и другие), рисовать формы, исполнять код, разграничивать права. Сам по себе движок ничего не знает про НДС или отпускные.

Конфигурация — это программа, которую исполняет платформа. «Бухгалтерия предприятия 3.0» — одна конфигурация, «Зарплата и управление персоналом 3.1» — другая. Обе работают на одной и той же платформе 8.3.

Метаданные — половина программы

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

  • 📁 Справочник — список однотипных элементов (номенклатура, сотрудники).
  • 📄 Документ — факт хозяйственной операции с датой и проведением.
  • 📊 Регистр сведений / накопления / бухгалтерии — таблицы для хранения итогов и истории.
  • 🧾 Отчёт, обработка — формы для вывода данных и сервисных действий.
  • ⚙️ Общие модули, HTTP-сервисы, регламентные задания — служебный код и интеграции.

Создали справочник «Склады» — платформа сама построила таблицу в базе, форму списка, форму элемента, права доступа и место в интерфейсе. В Java для того же пришлось бы писать модель, миграцию, контроллер и шаблон.

Встроенный язык 1С: синтаксис и особенности

Синтаксис похож на Pascal и Visual Basic. Ключевые слова русские, но у каждого есть английский двойник: Если / If, Процедура / Procedure, Для Каждого / For Each. Оба варианта можно смешивать в одном модуле, хотя так никто не делает.

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

&НаСервере
Процедура ПосчитатьПродажиНаСервере()

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	СУММА(Реализация.СуммаДокумента) КАК Сумма
	|ИЗ
	|	Документ.РеализацияТоваровУслуг КАК Реализация
	|ГДЕ
	|	Реализация.Проведен
	|	И Реализация.Дата МЕЖДУ &Начало И &Конец";

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

	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Сообщить("Продажи за месяц: " + Формат(Выборка.Сумма, "ЧДЦ=2"));
	КонецЕсли;

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

В этих 20 строках видны почти все особенности языка.

Что отличает язык 1С

  1. Директивы компиляции. &НаСервере, &НаКлиенте, &НаСервереБезКонтекста указывают, где выполняется код. Форма живёт на клиенте, запросы к базе — только на сервере. Неправильная директива — самая частая ошибка новичка.
  2. Встроенный язык запросов. Текст после ВЫБРАТЬ — это не SQL, а собственный язык запросов 1С. Он похож на SQL, но обращается к объектам конфигурации (Документ.РеализацияТоваровУслуг), а не к таблицам СУБД. Платформа сама переводит его в запрос к PostgreSQL или MS SQL.
  3. Динамическая типизация. Тип переменной не объявляют: Сумма = 0 — число, Сумма = "ноль" — уже строка. Тип можно проверить функцией ТипЗнч().
  4. Готовые прикладные типы. ТаблицаЗначений, Структура, Соответствие, ТабличныйДокумент, ДеревоЗначений. Их не нужно писать или подключать библиотекой.
  5. Нет своих классов. Объявить класс, наследование или интерфейс нельзя. Объектами выступают сами метаданные: у документа есть модуль объекта, у справочника — модуль менеджера.
  6. Обработка исключений. Конструкция Попытка … Исключение … КонецПопытки, текст ошибки получают через ОписаниеОшибки() или ИнформацияОбОшибке().

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

Чем 1С отличается от Java, C# и Python

Сравнение «язык или не язык» обычно упирается в вопрос: можно ли на нём написать что угодно. Формально — да. Практически — 1С выбирают, когда задача учётная.

Критерий1С (встроенный язык)Java / C#Python
Где выполняетсяТолько внутри платформы 1С:ПредприятиеJVM / .NET, любая ОСИнтерпретатор, любая ОС
ТипизацияДинамическаяСтатическаяДинамическая
ООПНет своих классов, объекты = метаданныеПолноеПолное
Работа с БДВстроена, свой язык запросовЧерез ORM или драйверЧерез ORM или драйвер
Формы и интерфейсГенерируются по метаданнымОтдельный фреймворкОтдельный фреймворк
Права, транзакции, блокировкиВстроены в платформуПишутся или подключаютсяПишутся или подключаются
Пакеты сторонних библиотекПочти нет экосистемыMaven, NuGetpip
Лицензия на запускНужна лицензия платформыБесплатноБесплатно

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

Почему 1С иногда не считают «настоящим» языком

Претензии разработчиков с других стеков обычно такие:

  • ❌ «Не запускается без 1С». Верно: программа на встроенном языке требует платформу и лицензию. Есть открытый проект OneScript — независимый интерпретатор языка 1С для скриптов, но конфигурации на нём не работают.
  • ❌ «Нет классов и наследования». Верно. Повторное использование кода строят на общих модулях и подсистемах, а не на иерархиях.
  • ❌ «Половина работы — мышкой». Формы, макеты печати, отчёты на СКД (система компоновки данных) действительно собирают в конструкторах. Но это то же самое, что дизайнер форм в Visual Studio.
  • ❌ «Русские ключевые слова». Это вопрос привычки. Английский синтаксис полностью поддерживается.

Тьюринг-полнота, процедуры, рекурсия, работа с файлами, HTTP, XML, JSON, COM — всё это в языке есть. По формальным признакам спор закрыт; остаётся вопрос вкуса и экосистемы.

Что разрабатывают на 1С

На встроенном языке пишут не только «доработки бухгалтерии». Вот типовые задачи, за которые платят программисту 1С:

  • 🏭 Прикладные решения целиком. Типовые конфигурации фирмы 1С и тысячи отраслевых решений партнёров написаны на этом языке.
  • 🔧 Доработки под компанию. Новые реквизиты, печатные формы, проверки при проведении, отчёты.
  • 🔄 Обмены и интеграции. Обмен между базами, выгрузка в банк, загрузка с маркетплейсов, сайтов, из CRM. Для этого есть HTTP-сервисы, веб-сервисы, HTTPСоединение, чтение и запись JSON и XML.
  • 📱 Мобильные приложения. Мобильная платформа 1С собирает приложение для Android и iOS из конфигурации.
  • ⏱ Регламентные задания. Ночные пересчёты, рассылки, загрузка курсов.
  • 🧩 Расширения конфигурации . Механизм появился в платформе 8.3.6. Доработку кладут в отдельный файл .cfe, а типовую конфигурацию не трогают — её проще обновлять.

Любые доработки рабочей базы сначала проверяют на копии. Правка «на живой базе» в рабочее время может остановить работу всех пользователей — например, при обновлении структуры базы нужен монопольный доступ.

Инструменты разработчика и отладка кода

Код 1С пишут в одной из двух сред.

Конфигуратор

Режим запуска платформы 1cv8.exe, в стартовом окне — кнопка «Конфигуратор». В нём:

  • дерево метаданных и редакторы модулей;
  • синтакс-помощник — встроенный справочник по всем объектам и методам языка;
  • конструкторы запросов, форм, печати, СКД;
  • отладчик: точки останова (F9), пошаговое выполнение, табло для просмотра значений переменных;
  • замер производительности — показывает, какая строка кода сколько времени заняла;
  • сравнение и объединение конфигураций — без него не обновить доработанную типовую.

1С:Enterprise Development Tools (EDT)

Среда на базе Eclipse. Хранит конфигурацию в виде файлов, поэтому с ней удобно работать через Git и командой. Тяжелее конфигуратора по требованиям к памяти, но для больших проектов её выбирают всё чаще.

Что ещё входит в набор

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

Отладка на сервере в клиент-серверной базе требует включить её на сервере 1С. Без этого точки останова в серверных процедурах не срабатывают, и новичок думает, что отладчик «сломан».

Профессия программиста 1С: перспективы и обучение

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

Чем занимается специалист на разных уровнях

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

Ориентиры по зарплате сильно зависят от города и опыта. Примерно: начинающий получает от 60–90 тыс. ₽, специалист с опытом 3–5 лет — 150–250 тыс. ₽, ведущий разработчик в крупном проекте — больше. Цифры приблизительные, перед решением смотрите вакансии своего региона.

Как учиться программированию на 1С

  • 📘 Учебная версия платформы. Бесплатная, с ограничениями на число записей и пользователей. Для изучения языка достаточно.
  • 🏁 Порядок освоения: встроенный язык → объекты метаданных → проведение документов и регистры → язык запросов → СКД → управляемые формы и директивы компиляции → обмены и расширения.
  • 🎓 Сертификация. Экзамены «1С:Профессионал» (тест) и «1С:Специалист» (практическая задача) — ими подтверждают квалификацию при трудоустройстве и у партнёров.
  • 🧮 Знание учёта. Программист, который понимает проводки, себестоимость и НДС, ценится выше того, кто знает только код.

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

Проверьте себя
На каком уровне в 1С выполняется запрос к базе данных?
Можно ли в 1С объявить собственный класс с наследованием?
С какой версии платформы появились расширения конфигурации?

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

Можно ли писать на 1С на английском?
Да. У каждого ключевого слова и метода есть английское имя: If, Procedure, Query. Интерфейс конфигуратора тоже переключается на английский.
Нужно ли знать SQL, чтобы программировать в 1С?
Не обязательно для старта: в 1С свой язык запросов. Но понимание SQL помогает оптимизировать запросы и разбирать технологический журнал.
Что такое BSL?
Так часто называют встроенный язык 1С (1C:Enterprise Script, или BSL — Business Scripting Language). Под этим именем есть плагины подсветки и анализаторы кода.
Можно ли запустить код 1С без платформы?
Конфигурацию — нет. Отдельные скрипты на синтаксисе 1С можно запускать в открытом интерпретаторе OneScript, но объектов конфигурации там нет.
Сложнее ли 1С, чем Python?
Сам язык проще: меньше конструкций, нет классов. Сложность в другом — в объёме типовых конфигураций и знании учёта.