На чём пишут код в 1С:ERP: встроенный язык, запросы и инструменты разработчика
Содержание
В 1С:ERP код пишут на встроенном языке 1С — собственном языке платформы «1С:Предприятие 8.3». Выбирать другой язык не придётся: ни Java, ни C#, ни Python внутри конфигурации не работают. К встроенному языку прилагается язык запросов, похожий на SQL, и система компоновки данных для отчётов.
Если вы пришли из другой разработки и не понимаете, с чего начать, или руководитель просит оценить, кого нанимать под ERP, — ниже разбор: как устроен язык, чем он отличается от привычных, как выглядит реальный код в ERP и сколько времени уходит на обучение.
Что за язык используется в 1С:ERP и как он устроен
1С:ERP Управление предприятием 2 — это прикладное решение (конфигурация) на платформе 1С:Предприятие 8.3. Платформа одна для всех типовых решений: БП, ЗУП, УТ, КА и ERP. Поэтому язык программирования в 1С ERP тот же, что и в бухгалтерии, — отличается только объём и сложность конфигурации.
Из чего состоит «программирование в 1С»:
- 🧩 Встроенный язык — процедуры, функции, условия, циклы, работа с объектами базы. Синтаксис ближе всего к Visual Basic и Паскалю.
- 🔎 Язык запросов — выборка данных из таблиц. По смыслу это SQL, но с русскими ключевыми словами и обращением к объектам конфигурации, а не к физическим таблицам СУБД.
- 📊 Система компоновки данных (СКД) — декларативное описание отчётов: запрос, поля, группировки, отборы.
- 🗂️ Метаданные — справочники, документы, регистры, которые создаются в дереве конфигурации, а не кодом.
Большая часть работы 1С-разработчика — не «алгоритмы с нуля», а правильное сочетание метаданных, запросов и небольших кусков кода в модулях.
Есть и английский вариант синтаксиса: Если ... Тогда можно писать как If ... Then. Типовые конфигурации, включая ERP, написаны на русском, поэтому учить стоит русский вариант.
Чем встроенный язык 1С отличается от Java, C# и Python
Человек с опытом в «обычных» языках осваивает синтаксис 1С за неделю. Сложности начинаются в другом месте — в модели исполнения и в предметной области.
| Признак | Встроенный язык 1С | Java / C# / Python |
|---|---|---|
| Ключевые слова | Русские (есть английские синонимы) | Английские |
| Типизация | Динамическая, тип переменной не объявляется | Статическая или динамическая |
| Классы и наследование | Нет, вместо них объекты метаданных и модули | Есть |
| Где выполняется код | Явно размечено: клиент или сервер | Обычно в одном процессе |
| Доступ к БД | Через объектную модель и язык запросов | ORM, драйверы, SQL |
| Сборка и деплой | Конфигурация обновляется в базе | Компиляция, пакеты, контейнеры |
| Пакеты и библиотеки | Почти нет, общий код — в общих модулях и БСП | Огромные экосистемы |
Три вещи, которые ломают привычки новичка из других языков:
- Клиент и сервер разделены директивами. Процедура с
&НаКлиентене видит базу данных напрямую. Чтобы прочитать данные, вызывают процедуру&НаСервере. Каждый такой вызов — сетевой запрос, и их число важно для скорости. - Нет ООП в привычном виде. Вместо класса — объект метаданных (например, документ) с модулем объекта, модулем менеджера и формами.
- Транзакции и блокировки — на совести разработчика. В ERP используется управляемый режим блокировок, и ошибка здесь проявляется только под нагрузкой.
Примеры кода на встроенном языке для 1С:ERP
Ниже три типичных фрагмента: запрос к остаткам, вызов сервера из формы и доработка через расширение. Имена объектов взяты из типовой ERP 2.5; в вашей базе их стоит сверить с деревом конфигурации.
Запрос: остатки товара на складе
Функция ОстатокТовара(Номенклатура, Склад) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ЕСТЬNULL(СУММА(Остатки.ВНаличииОстаток), 0) КАК Количество
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(
| ,
| Номенклатура = &Номенклатура
| И Склад = &Склад) КАК Остатки";
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Запрос.УстановитьПараметр("Склад", Склад);
Выборка = Запрос.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Количество;
КонецЕсли;
Возврат 0;
КонецФункции
Отбор передан в параметры виртуальной таблицы, а не в ГДЕ. Так платформа фильтрует данные до расчёта остатков — на больших регистрах ERP разница в скорости заметна.
Форма: клиент вызывает сервер
&НаКлиенте
Процедура ПроверитьОстаток(Команда)
Количество = ПолучитьОстатокНаСервере(Объект.Номенклатура, Объект.Склад);
Сообщить(СтрШаблон("Доступно: %1", Формат(Количество, "ЧГ=0")));
КонецПроцедуры
&НаСервереБезКонтекста
Функция ПолучитьОстатокНаСервере(Номенклатура, Склад)
Возврат ОстаткиСервер.ОстатокТовара(Номенклатура, Склад);
КонецФункции
ОстаткиСервер здесь — ваш общий серверный модуль с функцией из первого примера. Директива &НаСервереБезКонтекста не передаёт на сервер данные формы, поэтому вызов лёгкий.
Расширение: доработка без снятия с поддержки
&После("ПриСозданииНаСервере")
Процедура Доп_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Не ЗначениеЗаполнено(Объект.Комментарий) Тогда
Объект.Комментарий = "Создан менеджером отдела продаж";
КонецЕсли;
КонецПроцедуры
Это модуль формы в расширении. Аннотация &После добавляет код после типового обработчика, сам типовой модуль не меняется. Для ERP это главный приём: конфигурация остаётся на поддержке и обновляется без ручного сравнения.
Где в ERP нужен программист, а где хватает настройки
1С:ERP закрывает много задач без кода: функциональные опции, настройки учётной политики, дополнительные реквизиты и сведения, произвольные отчёты на СКД. Программирование подключают, когда настроек не хватает.
Типичные задачи ERP-разработчика:
- 📄 Печатные формы — своя форма счёта, накладной, этикетки. Делается внешней печатной формой или в расширении.
- 📊 Отчёты — на СКД, иногда с кодом в модуле отчёта для сложных расчётов.
- 🔄 Обмены и интеграции — с сайтом, WMS, банком, MES. Используют HTTP-сервисы, веб-сервисы, обмен через XML/JSON, иногда Конвертацию данных 3.
- ⚙️ Доработка бизнес-логики — новые проверки при проведении, дополнительные движения, свои статусы заказов.
- 🏭 Производство и планирование — настройка и доработка подсистем производства, этапов, графиков.
- 🚀 Производительность — разбор медленных запросов и блокировок, работа с технологическим журналом.
Как выбрать способ доработки:
Не дорабатывайте ERP прямо в рабочей базе. Разработка — в копии или в отдельной базе разработчика, перенос в рабочую базу — после проверки и резервной копии.
Инструменты разработчика: Конфигуратор и EDT
Писать на встроенном языке можно в двух средах.
| Среда | Что это | Кому подходит |
|---|---|---|
| Конфигуратор | Встроенный режим запуска платформы | Быстрые правки, небольшие задачи, обучение |
| 1С:EDT (Enterprise Development Tools) | Среда на основе Eclipse | Командная разработка, Git, крупные проекты вроде ERP |
Конфигуратор знаком всем, он идёт вместе с платформой. EDT тяжелее, требует больше памяти, зато хранит конфигурацию в виде файлов, работает с Git и умеет проверять код по стандартам разработки.
Что ещё входит в набор ERP-разработчика:
- 🧰 Библиотека стандартных подсистем (БСП) — общие модули, на которых построена ERP. Знать её обязательно: многие задачи уже решены функциями вроде
ОбщегоНазначения.СообщитьПользователю. - 🧪 Отладчик и замер производительности — встроены в платформу.
- 📝 Технологический журнал — настраивается файлом
logcfg.xml, нужен для поиска медленных запросов и взаимоблокировок. - 🗃️ Хранилище конфигурации — для совместной работы в Конфигураторе, если команда не перешла на EDT и Git.
Как изучить язык 1С с нуля и дойти до ERP
Начинать сразу с ERP — плохая идея. В ней тысячи объектов, и новичок тонет в типовом коде. Нормальный путь — от платформы к сложной конфигурации.
- Платформа и встроенный язык (1–2 месяца). Учебная версия платформы, своя маленькая конфигурация: справочник, документ, регистр, отчёт.
- Запросы и СКД (1 месяц). Виртуальные таблицы регистров, временные таблицы, пакетные запросы, отчёты на компоновке.
- Управляемые формы и клиент-сервер (1 месяц). Директивы компиляции, контекстные и внеконтекстные вызовы.
- Типовая конфигурация попроще. УТ 11 — хорошая ступень: торговая часть ERP построена на тех же механизмах.
- ERP и предметная область. Производство, планирование, себестоимость, регламентированный учёт. Здесь нужна не столько техника, сколько понимание бизнес-процессов.
- Сертификация. Экзамены «1С:Специалист» и «1С:Профессионал» по платформе и по прикладным решениям ценят работодатели и франчайзи.
Чтобы проверить, усвоены ли основы, ответьте на несколько вопросов:
Учите язык на задачах, а не на справочнике. Одна сделанная печатная форма даёт больше, чем глава учебника о типах данных.
Спрос и зарплаты 1С-разработчиков со специализацией ERP
Разработчики под ERP — самый дорогой сегмент рынка 1С. ERP внедряют на производствах и в холдингах, проекты длинные, и опыт работы с типовой конфигурацией ценится выше общего знания платформы.
Ориентировочные вилки по открытым вакансиям (до вычета НДФЛ, сильно зависят от города и компании):
| Уровень | Опыт | Примерно, руб./мес |
|---|---|---|
| Младший | До 1 года, основы платформы | 80 000–130 000 |
| Средний | 2–3 года, типовые конфигурации | 150 000–250 000 |
| Старший ERP-разработчик | 4+ лет, крупные внедрения | 250 000–400 000 |
| Ведущий, архитектор | Проектирование, производительность | от 350 000 |
Цифры — ориентир, а не обещание. Москва и Санкт-Петербург платят заметно больше регионов. На удалённую работу ставки обычно ближе к столичным.
Что поднимает стоимость специалиста:
- 🏭 опыт в производственном контуре ERP — планирование, себестоимость, управление производством;
- 🚀 навыки оптимизации — разбор блокировок, технологический журнал, работа с MS SQL или PostgreSQL;
- 🔗 интеграции — HTTP-сервисы, обмены с внешними системами;
- 🎓 сертификаты «1С:Специалист» и «1С:Профессионал».
Ошибки новичков в программировании под 1С:ERP
Эти ошибки не видны на маленькой учебной базе, но в ERP с сотней пользователей быстро превращаются в жалобы на «тормоза».
Куда движется язык 1С и что ждёт ERP-разработчиков
Встроенный язык платформы 8.3 развивается без резких переломов. Синтаксис годами остаётся совместимым, новые релизы платформы добавляют методы, асинхронные вызовы (Асинх и Ждать), улучшения для мобильных и веб-клиентов.
Главные направления, которые видно уже сейчас:
- 🔧 EDT вместо Конфигуратора для крупных проектов. Git, ревью кода, автоматические проверки становятся нормой для команд, сопровождающих ERP.
- 🧩 Расширения как основной способ доработки. Чем меньше изменений в типовой, тем дешевле обновления.
- 🔗 Интеграции через HTTP и REST. ERP всё чаще работает в связке с другими системами, и это отдельная востребованная компетенция.
- 🆕 Новые продукты фирмы 1С — 1С:Предприятие.Элемент и 1С:Исполнитель. У них свой язык, синтаксически ближе к современным языкам, но 8.3 и ERP на ней остаются основным рынком.
Если вы выбираете, во что вкладываться, — встроенный язык 8.3 плюс знание ERP как предметной области. Синтаксис нового языка осваивается быстро, а понимание учёта на производстве переносится на любую платформу.