Встроенный язык 1С под лупой: полноценный язык или надстройка над учётной программой
Содержание
Да, 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С
- Директивы компиляции.
&НаСервере,&НаКлиенте,&НаСервереБезКонтекстауказывают, где выполняется код. Форма живёт на клиенте, запросы к базе — только на сервере. Неправильная директива — самая частая ошибка новичка. - Встроенный язык запросов. Текст после
ВЫБРАТЬ— это не SQL, а собственный язык запросов 1С. Он похож на SQL, но обращается к объектам конфигурации (Документ.РеализацияТоваровУслуг), а не к таблицам СУБД. Платформа сама переводит его в запрос к PostgreSQL или MS SQL. - Динамическая типизация. Тип переменной не объявляют:
Сумма = 0— число,Сумма = "ноль"— уже строка. Тип можно проверить функциейТипЗнч(). - Готовые прикладные типы.
ТаблицаЗначений,Структура,Соответствие,ТабличныйДокумент,ДеревоЗначений. Их не нужно писать или подключать библиотекой. - Нет своих классов. Объявить класс, наследование или интерфейс нельзя. Объектами выступают сами метаданные: у документа есть модуль объекта, у справочника — модуль менеджера.
- Обработка исключений. Конструкция
Попытка … Исключение … КонецПопытки, текст ошибки получают черезОписаниеОшибки()илиИнформацияОбОшибке().
Код из модулей платформа не исполняет построчно «как текст»: перед выполнением модуль компилируется во внутреннее представление, которое исполняет виртуальная машина платформы. Поэтому синтаксическую ошибку конфигуратор видит при проверке модуля, ещё до запуска.
Чем 1С отличается от Java, C# и Python
Сравнение «язык или не язык» обычно упирается в вопрос: можно ли на нём написать что угодно. Формально — да. Практически — 1С выбирают, когда задача учётная.
| Критерий | 1С (встроенный язык) | Java / C# | Python |
|---|---|---|---|
| Где выполняется | Только внутри платформы 1С:Предприятие | JVM / .NET, любая ОС | Интерпретатор, любая ОС |
| Типизация | Динамическая | Статическая | Динамическая |
| ООП | Нет своих классов, объекты = метаданные | Полное | Полное |
| Работа с БД | Встроена, свой язык запросов | Через ORM или драйвер | Через ORM или драйвер |
| Формы и интерфейс | Генерируются по метаданным | Отдельный фреймворк | Отдельный фреймворк |
| Права, транзакции, блокировки | Встроены в платформу | Пишутся или подключаются | Пишутся или подключаются |
| Пакеты сторонних библиотек | Почти нет экосистемы | Maven, NuGet | pip |
| Лицензия на запуск | Нужна лицензия платформы | Бесплатно | Бесплатно |
Отсюда честная формулировка. 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С ведут учёт сотни тысяч компаний, и каждой нужны обновления, доработки и интеграции.
Чем занимается специалист на разных уровнях
- Начинающий. Печатные формы, отчёты на СКД, простые обработки, обновление типовых конфигураций .
- Средний уровень. Доработки документов и регистров, обмены, расширения, оптимизация запросов.
- Ведущий, архитектор. Проектирование решений, высоконагруженные базы, работа с СУБД, кластер серверов , код-ревью.
Ориентиры по зарплате сильно зависят от города и опыта. Примерно: начинающий получает от 60–90 тыс. ₽, специалист с опытом 3–5 лет — 150–250 тыс. ₽, ведущий разработчик в крупном проекте — больше. Цифры приблизительные, перед решением смотрите вакансии своего региона.
Как учиться программированию на 1С
- 📘 Учебная версия платформы. Бесплатная, с ограничениями на число записей и пользователей. Для изучения языка достаточно.
- 🏁 Порядок освоения: встроенный язык → объекты метаданных → проведение документов и регистры → язык запросов → СКД → управляемые формы и директивы компиляции → обмены и расширения.
- 🎓 Сертификация. Экзамены «1С:Профессионал» (тест) и «1С:Специалист» (практическая задача) — ими подтверждают квалификацию при трудоустройстве и у партнёров.
- 🧮 Знание учёта. Программист, который понимает проводки, себестоимость и НДС, ценится выше того, кто знает только код.
Переход из другого языка обычно занимает несколько месяцев: синтаксис учится за неделю, а логика регистров и проведения — дольше.