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

· 9 мин

Содержание

Для работы в 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СPythonJava / 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С. Ограничения по числу записей есть, но для обучения хватает.
  2. Объекты метаданных. Справочники, документы, регистры сведений и накопления, перечисления, константы. Понять, зачем каждый нужен.
  3. Синтаксис встроенного языка. Переменные, условия, циклы, процедуры и функции, коллекции: Массив, Структура, Соответствие, ТаблицаЗначений.
  4. Управляемые формы. Клиент и сервер, директивы компиляции, реквизиты формы, обработчики событий.
  5. Язык запросов и СКД. Виртуальные таблицы, пакеты, временные таблицы, отчёт на СКД с нуля.
  6. Проведение документов. Движения по регистрам, контроль остатков, оперативное и неоперативное проведение.
  7. Типовая конфигурация. Открыть Бухгалтерию или УТ, найти, где формируются движения конкретного документа, сделать доработку через расширение.

Учебники фирмы 1С («Разработка в системе 1С:Предприятие 8» и похожие) по-прежнему дают хорошую базу. Синтаксис-помощник в Конфигураторе — главный справочник: там описан каждый тип и метод.

Минимум для первой работы программистом 1С
Выполнено: 0 / 8

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

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

Ориентиры по зарплате (примерно, по открытым вакансиям в крупных городах, сильно зависят от региона):

УровеньОпытОриентировочно, ₽/мес
Стажёр, juniorдо 1 года60 000 – 110 000
Middle2–4 года150 000 – 250 000
Senior, ведущий5+ лет250 000 – 400 000 и выше

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

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

Можно ли писать для 1С на Python или C#?
Прикладную логику конфигурации — нет, только на встроенном языке. Внешние программы на Python или C# могут работать с базой через HTTP-сервисы, OData или COM-соединение, а платформу можно расширять внешними компонентами на C++.
Обязательно ли знать английский?
Нет. Синтаксис, справка и документация доступны на русском. Английский пригодится для EDT, Git и материалов по СУБД, но не для старта.
Сколько времени уходит на освоение языка 1С с нуля?
Синтаксис — две-три недели регулярных занятий. До уровня, когда можно взять задачу по доработке типовой, обычно проходит три-шесть месяцев практики.
Нужно ли математическое или техническое образование?
Не нужно. Важнее логика и понимание учёта. Многие программисты 1С пришли из бухгалтерии, экономики или торговли.
Язык 1С и 1С:Битрикс — это одно и то же?
Нет. 1С-Битрикс — платформа для сайтов на PHP, к языку 1С:Предприятия она отношения не имеет. Общее у них только название.