На чём пишут код в 1С: встроенный язык, запросы и всё, что к ним прилагается
Содержание
Для работы в 1С нужен один язык программирования — встроенный язык платформы 1С:Предприятие 8. Его дополняет язык запросов, похожий на SQL. Ни Python, ни Java, ни C# знать не нужно: вся прикладная логика конфигураций — Бухгалтерии, ЗУП, УТ — написана именно на встроенном языке.
Типичная ситуация: бухгалтер, который пять лет работает в 1С, решает перейти в программисты и открывает список курсов. Там десятки языков, и непонятно, с чего начинать. Ответ короткий: начинать надо с самого языка 1С и запросов. Остальное — веб, SQL-администрирование, Git — добирается по мере задач.
Встроенный язык 1С: что это за язык и как он устроен
Встроенный язык (его часто называют «1С-ный» или просто «язык 1С») создан фирмой 1С специально для платформы. Отдельно от неё он почти не живёт: код выполняется только внутри 1С:Предприятия.
Главные свойства языка:
- 🇷🇺 Русские ключевые слова.
Если … Тогда … КонецЕсли,Для Каждого … Из … Цикл,Процедура,Функция. При этом у каждого слова есть английский вариант:If … Then … EndIf,For Each … In … Do. Обе формы можно смешивать в одном модуле, хотя на практике пишут на русском. - 🔤 Динамическая типизация. Тип переменной не объявляют:
Сумма = 0— число,Сумма = "0"— строка. - 🧩 Объектный, но без своих классов. Разработчик пользуется готовыми типами платформы (справочники, документы, регистры, табличные части), но объявить собственный класс с наследованием нельзя. Роль классов играют объекты метаданных и общие модули.
- 🖥️ Клиент и сервер в одном коде. Над процедурой ставят директиву:
&НаКлиенте,&НаСервере,&НаСервереБезКонтекста. От неё зависит, где выполнится код и какие данные ему доступны. - ⚠️ Исключения обрабатывают конструкцией
Попытка … Исключение … КонецПопытки, свои исключения вызывают черезВызватьИсключение. - ⏳ Асинхронность. В новых версиях платформы (начиная с 8.3.18) появились
АсинхиЖдать— аналог async/await. Раньше то же делали через обработчики оповещений.
Код живёт в модулях: модуль объекта, модуль менеджера, модуль формы, общие модули, модуль сеанса. Новичка сбивает именно это: программы как одного файла нет, логика разложена по десяткам модулей конфигурации.
Короткий пример на встроенном языке — найти контрагента по ИНН и вывести сообщение:
&НаСервереБезКонтекста
Функция НайтиПоИНН(ИНН)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1
| Контрагенты.Ссылка КАК Ссылка
|ИЗ
| Справочник.Контрагенты КАК Контрагенты
|ГДЕ
| Контрагенты.ИНН = &ИНН";
Запрос.УстановитьПараметр("ИНН", ИНН);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Ссылка;
КонецЕсли;
Возврат Неопределено;
КонецФункции
Тот же фрагмент на английском синтаксисе выглядит так: Query = New Query;, Query.SetParameter("ИНН", ИНН);, Selection = Query.Execute().Select();. Платформа поймёт оба варианта.
Строки многострочного текста в 1С продолжают символом | в начале строки. Конструктор запроса в Конфигураторе вставляет их сам — руками набирать не нужно.
Чем язык 1С отличается от Python, Java, C# и JavaScript
Язык 1С проще большинства универсальных языков по синтаксису, но привязан к платформе. Сравнение по ключевым признакам:
| Признак | Язык 1С | Python | Java / C# | JavaScript |
|---|---|---|---|---|
| Где выполняется | Только в 1С:Предприятии | Везде | JVM / .NET | Браузер, Node.js |
| Типизация | Динамическая | Динамическая | Статическая | Динамическая |
| Свои классы | Нет | Есть | Есть | Есть |
| Работа с БД | Встроена: объекты и запросы | Через библиотеки | Через ORM/драйверы | Через библиотеки |
| Формы, печать, отчёты | Встроены в платформу | Сторонние фреймворки | Сторонние фреймворки | HTML/CSS |
| Порог входа | Низкий | Низкий | Средний | Низкий |
Что из этого следует на практике:
- ✅ Опыт в другом языке помогает. Циклы, условия, функции, коллекции устроены знакомо. Джависту или питонисту хватит пары недель, чтобы читать код типовой конфигурации.
- ❌ Но не заменяет знание платформы. Сложность 1С не в синтаксисе, а в модели данных: регистры накопления и сведений, проведение документов, периодичность, план счетов , субконто. Этого нет ни в одном другом языке.
- 🔁 Обратный переход сложнее. Программисту 1С, который решит уйти в Java, придётся учить ООП с нуля: классы, интерфейсы, наследование в языке 1С не используются.
Отдельно стоит OneScript — открытый интерпретатор языка 1С, который работает без платформы. На нём пишут скрипты автоматизации: сборку, выгрузку, деплой. Для прикладной работы он не нужен, но полезен, когда хочется писать утилиты на привычном синтаксисе.
Язык запросов 1С и SQL: нужен ли SQL программисту 1С
Второй язык, без которого не обойтись, — язык запросов 1С. Он построен на основе SQL, и человеку со знанием SELECT он покажется знакомым через час.
ВЫБРАТЬ
Остатки.Номенклатура КАК Номенклатура,
Остатки.КоличествоОстаток КАК Количество
ИЗ
РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, Склад = &Склад) КАК Остатки
ГДЕ
Остатки.КоличествоОстаток > 0
Отличия от обычного SQL:
| Что | SQL | Язык запросов 1С |
|---|---|---|
| Изменение данных | INSERT, UPDATE, DELETE | Нет, только чтение. Запись — через объекты встроенного языка |
| Таблицы | Физические таблицы СУБД | Объекты метаданных: Справочник.Контрагенты, Документ.РеализацияТоваровУслуг |
| Остатки и обороты | Пишутся вручную через SUM и GROUP BY | Готовые виртуальные таблицы .Остатки, .Обороты, .СрезПоследних |
| Обращение через точку | Нужен JOIN | Контрагенты.ОсновнойДоговор.Валюта — платформа сама построит соединения |
| Временные таблицы | CREATE TEMP TABLE / #temp | ПОМЕСТИТЬ ВТ_Имя внутри пакета запросов |
| Зависимость от СУБД | Диалект конкретной СУБД | Один текст работает на файловой базе, MS SQL Server, PostgreSQL |
Писать в таблицы СУБД 1С напрямую через SQL нельзя — платформа об этом не узнает, кэши и итоги регистров разойдутся с данными, а база может перестать открываться. Запись делают только средствами 1С.
Нужен ли тогда «настоящий» SQL? Для старта — нет. Он становится полезен, когда начинается оптимизация:
- 🐢 разбор медленных запросов через технологический журнал и планы запросов СУБД;
- 🔒 поиск причин блокировок и взаимоблокировок;
- 🛠️ администрирование MS SQL Server или PostgreSQL: индексы, статистики, обслуживание.
Программисту уровня middle и выше понимание индексов и планов запросов нужно обязательно. Отсюда частая ошибка в запросах: обращение через точку к полю составного типа порождает множество соединений, и запрос тормозит. Без знания того, во что 1С превращает запрос на уровне СУБД, такое не найти.
Третий близкий инструмент — система компоновки данных (СКД). Это не язык, а механизм отчётов: запрос плюс настройки группировок, отборов и оформления. Почти все отчёты типовых конфигураций сделаны на СКД, поэтому разбираться в ней обязан каждый разработчик.
Веб-технологии в работе разработчика 1С
Чистому прикладнику, который дорабатывает формы и отчёты, HTML и JavaScript не нужны. Веб-клиент 1С формирует интерфейс сам, из той же управляемой формы.
Знания веба понадобятся в интеграциях — а это сейчас заметная доля задач:
- 🌐 HTTP и REST. Обмен с сайтом, маркетплейсом, банком, CRM. В языке 1С для этого есть
HTTPСоединение,HTTPЗапрос, а для входящих запросов — HTTP-сервисы в конфигурации. - 📦 JSON и XML. Чтение и запись —
ЧтениеJSON,ЗаписьJSON,ЧтениеXML,ЗаписьXML, а также XDTO-пакеты для XML со схемой. - 🔌 OData. Стандартный REST-интерфейс 1С: внешняя система читает справочники и документы без написания кода в базе.
- 🖼️ HTML и JavaScript. Нужны, если на форме выводится поле HTML-документа: графики, нестандартная вёрстка, встроенные виджеты.
- 🖥️ Публикация на веб-сервере. Apache или IIS, настройка
default.vrd, сертификаты — это граница с администрированием.
Минимум, с которым стоит прийти к первой интеграции: понимать методы GET и POST, коды ответа (200, 401, 404, 500), заголовки и формат JSON. Остальное осваивается на задаче.
Среда разработки: Конфигуратор, EDT и сопутствующие инструменты
Код на языке 1С пишут в одной из двух сред.
| Среда | Что это | Когда выбирают |
|---|---|---|
| Конфигуратор | Встроенный режим платформы, запускается из окна выбора баз | Доработки типовых, небольшие команды, поддержка у клиента |
| 1C:Enterprise Development Tools (EDT) | Отдельная среда на базе Eclipse | Крупные проекты, работа через Git, командная разработка |
В Конфигураторе есть всё для старта: дерево метаданных, редактор модулей с подсказкой, конструктор запросов, отладчик, сравнение и объединение конфигураций. Для командной работы в нём используют хранилище конфигурации — объекты захватывают и помещают обратно.
EDT хранит конфигурацию в виде файлов, поэтому с ней работают через Git: ветки, пулл-реквесты, код-ревью. Среда требовательнее к памяти компьютера, зато удобнее в больших проектах.
Что ещё входит в набор разработчика:
- 📚 БСП — Библиотека стандартных подсистем. На ней построены все типовые конфигурации. Знать её общие модули — половина скорости работы: печать, права, файлы, обмены уже написаны.
- 🧪 Тестирование. Vanessa Automation — сценарные тесты на языке Gherkin; встроенные механизмы тестирования платформы.
- 🔍 Статический анализ. BSL Language Server и SonarQube с плагином для 1С проверяют код на ошибки и соответствие стандартам.
- 🧱 Расширения конфигурации . Механизм с платформы 8.3.6: доработка типовой без снятия с поддержки. Сейчас это основной способ дорабатывать типовые, и с него стоит начинать любой новый проект.
Учитесь на копии базы или на демонстрационной базе, а не на рабочей. Ошибка в обработке проведения или в обработчике записи меняет реальные данные пользователей.
Как выучить язык 1С и куда он ведёт
Порядок освоения, который работает у большинства начинающих:
- Учебная версия платформы. Её бесплатно выкладывает фирма 1С. Ограничения по числу записей есть, но для обучения хватает.
- Объекты метаданных. Справочники, документы, регистры сведений и накопления, перечисления, константы. Понять, зачем каждый нужен.
- Синтаксис встроенного языка. Переменные, условия, циклы, процедуры и функции, коллекции:
Массив,Структура,Соответствие,ТаблицаЗначений. - Управляемые формы. Клиент и сервер, директивы компиляции, реквизиты формы, обработчики событий.
- Язык запросов и СКД. Виртуальные таблицы, пакеты, временные таблицы, отчёт на СКД с нуля.
- Проведение документов. Движения по регистрам, контроль остатков, оперативное и неоперативное проведение.
- Типовая конфигурация. Открыть Бухгалтерию или УТ, найти, где формируются движения конкретного документа, сделать доработку через расширение.
Учебники фирмы 1С («Разработка в системе 1С:Предприятие 8» и похожие) по-прежнему дают хорошую базу. Синтаксис-помощник в Конфигураторе — главный справочник: там описан каждый тип и метод.
Карьера. Ступени обычно такие: стажёр → младший программист → программист → ведущий разработчик или архитектор. Отдельная ветка — консультанты и аналитики, которые знают учёт и лишь частично пишут код.
Фирма 1С проводит сертификацию: «1С:Профессионал» — тест по знанию платформы или конфигурации, «1С:Специалист» — практический экзамен с задачей, которую решают в Конфигураторе. Многие работодатели смотрят на «Специалиста» по платформе как на подтверждение уровня.
Ориентиры по зарплате (примерно, по открытым вакансиям в крупных городах, сильно зависят от региона):
| Уровень | Опыт | Ориентировочно, ₽/мес |
|---|---|---|
| Стажёр, junior | до 1 года | 60 000 – 110 000 |
| Middle | 2–4 года | 150 000 – 250 000 |
| Senior, ведущий | 5+ лет | 250 000 – 400 000 и выше |
Сильное преимущество — знание учёта. Программист, который понимает, что такое закрытие месяца , НДС или расчёт зарплаты, решает задачи быстрее и ценится выше. Поэтому бывшие бухгалтеры нередко становятся сильными 1С-никами.