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

· 10 мин

Содержание

В 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
Сборка и деплойКонфигурация обновляется в базеКомпиляция, пакеты, контейнеры
Пакеты и библиотекиПочти нет, общий код — в общих модулях и БСПОгромные экосистемы

Три вещи, которые ломают привычки новичка из других языков:

  1. Клиент и сервер разделены директивами. Процедура с &НаКлиенте не видит базу данных напрямую. Чтобы прочитать данные, вызывают процедуру &НаСервере. Каждый такой вызов — сетевой запрос, и их число важно для скорости.
  2. Нет ООП в привычном виде. Вместо класса — объект метаданных (например, документ) с модулем объекта, модулем менеджера и формами.
  3. Транзакции и блокировки — на совести разработчика. В ERP используется управляемый режим блокировок, и ошибка здесь проявляется только под нагрузкой.

Примеры кода на встроенном языке для 1С:ERP

Ниже три типичных фрагмента: запрос к остаткам, вызов сервера из формы и доработка через расширение. Имена объектов взяты из типовой ERP 2.5; в вашей базе их стоит сверить с деревом конфигурации.

Запрос: остатки товара на складе

Функция ОстатокТовара(Номенклатура, Склад) Экспорт

	Запрос = Новый Запрос;
	Запрос.Текст =
	"ВЫБРАТЬ
	|	ЕСТЬNULL(СУММА(Остатки.ВНаличииОстаток), 0) КАК Количество
	|ИЗ
	|	РегистрНакопления.ТоварыНаСкладах.Остатки(
	|		,
	|		Номенклатура = &Номенклатура
	|			И Склад = &Склад) КАК Остатки";

	Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
	Запрос.УстановитьПараметр("Склад", Склад);

	Выборка = Запрос.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Количество;
	КонецЕсли;

	Возврат 0;

КонецФункции

Отбор передан в параметры виртуальной таблицы, а не в ГДЕ. Так платформа фильтрует данные до расчёта остатков — на больших регистрах ERP разница в скорости заметна.

Форма: клиент вызывает сервер

&НаКлиенте
Процедура ПроверитьОстаток(Команда)

	Количество = ПолучитьОстатокНаСервере(Объект.Номенклатура, Объект.Склад);
	Сообщить(СтрШаблон("Доступно: %1", Формат(Количество, "ЧГ=0")));

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

&НаСервереБезКонтекста
Функция ПолучитьОстатокНаСервере(Номенклатура, Склад)

	Возврат ОстаткиСервер.ОстатокТовара(Номенклатура, Склад);

КонецФункции

ОстаткиСервер здесь — ваш общий серверный модуль с функцией из первого примера. Директива &НаСервереБезКонтекста не передаёт на сервер данные формы, поэтому вызов лёгкий.

Расширение: доработка без снятия с поддержки

&После("ПриСозданииНаСервере")
Процедура Доп_ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

	Если Не ЗначениеЗаполнено(Объект.Комментарий) Тогда
		Объект.Комментарий = "Создан менеджером отдела продаж";
	КонецЕсли;

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

Это модуль формы в расширении. Аннотация &После добавляет код после типового обработчика, сам типовой модуль не меняется. Для ERP это главный приём: конфигурация остаётся на поддержке и обновляется без ручного сравнения.

Где в ERP нужен программист, а где хватает настройки

1С:ERP закрывает много задач без кода: функциональные опции, настройки учётной политики, дополнительные реквизиты и сведения, произвольные отчёты на СКД. Программирование подключают, когда настроек не хватает.

Типичные задачи ERP-разработчика:

  • 📄 Печатные формы — своя форма счёта, накладной, этикетки. Делается внешней печатной формой или в расширении.
  • 📊 Отчёты — на СКД, иногда с кодом в модуле отчёта для сложных расчётов.
  • 🔄 Обмены и интеграции — с сайтом, WMS, банком, MES. Используют HTTP-сервисы, веб-сервисы, обмен через XML/JSON, иногда Конвертацию данных 3.
  • ⚙️ Доработка бизнес-логики — новые проверки при проведении, дополнительные движения, свои статусы заказов.
  • 🏭 Производство и планирование — настройка и доработка подсистем производства, этапов, графиков.
  • 🚀 Производительность — разбор медленных запросов и блокировок, работа с технологическим журналом.

Как выбрать способ доработки:

Как правильно доработать типовую ERP?

Не дорабатывайте ERP прямо в рабочей базе. Разработка — в копии или в отдельной базе разработчика, перенос в рабочую базу — после проверки и резервной копии.

Инструменты разработчика: Конфигуратор и EDT

Писать на встроенном языке можно в двух средах.

СредаЧто этоКому подходит
КонфигураторВстроенный режим запуска платформыБыстрые правки, небольшие задачи, обучение
1С:EDT (Enterprise Development Tools)Среда на основе EclipseКомандная разработка, Git, крупные проекты вроде ERP

Конфигуратор знаком всем, он идёт вместе с платформой. EDT тяжелее, требует больше памяти, зато хранит конфигурацию в виде файлов, работает с Git и умеет проверять код по стандартам разработки.

Что ещё входит в набор ERP-разработчика:

  • 🧰 Библиотека стандартных подсистем (БСП) — общие модули, на которых построена ERP. Знать её обязательно: многие задачи уже решены функциями вроде ОбщегоНазначения.СообщитьПользователю.
  • 🧪 Отладчик и замер производительности — встроены в платформу.
  • 📝 Технологический журнал — настраивается файлом logcfg.xml, нужен для поиска медленных запросов и взаимоблокировок.
  • 🗃️ Хранилище конфигурации — для совместной работы в Конфигураторе, если команда не перешла на EDT и Git.

Как изучить язык 1С с нуля и дойти до ERP

Начинать сразу с ERP — плохая идея. В ней тысячи объектов, и новичок тонет в типовом коде. Нормальный путь — от платформы к сложной конфигурации.

  1. Платформа и встроенный язык (1–2 месяца). Учебная версия платформы, своя маленькая конфигурация: справочник, документ, регистр, отчёт.
  2. Запросы и СКД (1 месяц). Виртуальные таблицы регистров, временные таблицы, пакетные запросы, отчёты на компоновке.
  3. Управляемые формы и клиент-сервер (1 месяц). Директивы компиляции, контекстные и внеконтекстные вызовы.
  4. Типовая конфигурация попроще. УТ 11 — хорошая ступень: торговая часть ERP построена на тех же механизмах.
  5. ERP и предметная область. Производство, планирование, себестоимость, регламентированный учёт. Здесь нужна не столько техника, сколько понимание бизнес-процессов.
  6. Сертификация. Экзамены «1С:Специалист» и «1С:Профессионал» по платформе и по прикладным решениям ценят работодатели и франчайзи.

Чтобы проверить, усвоены ли основы, ответьте на несколько вопросов:

Проверьте себя
Где выполняется процедура с директивой &НаКлиенте?
Как доработать типовую форму ERP, не снимая конфигурацию с поддержки?
Где эффективнее ставить отбор при запросе к остаткам регистра?

Учите язык на задачах, а не на справочнике. Одна сделанная печатная форма даёт больше, чем глава учебника о типах данных.

Спрос и зарплаты 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 как предметной области. Синтаксис нового языка осваивается быстро, а понимание учёта на производстве переносится на любую платформу.

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

Можно ли писать для 1С:ERP на Python или C#?
Внутри конфигурации — нет, только встроенный язык 1С. Внешние программы на любых языках подключаются через HTTP-сервисы, COM-соединение или внешние компоненты.
Отличается ли язык в ERP от языка в 1С:Бухгалтерии?
Нет, язык один — платформы 8.3. Отличаются объём конфигурации, набор объектов и предметная область.
Сколько времени нужно, чтобы начать работать с ERP?
При опыте в другом языке — около 3–6 месяцев до задач уровня печатных форм и отчётов. На уверенную доработку производственного контура уходит 1–2 года практики.
Нужно ли знать SQL для работы с 1С?
Желательно. Язык запросов 1С построен на тех же принципах, а при разборе медленных запросов приходится смотреть план выполнения на стороне СУБД.
Есть ли бесплатная среда для обучения?
Да, учебная версия платформы 1С:Предприятие 8.3 распространяется бесплатно для обучения. У неё есть ограничения, но для освоения языка и небольших конфигураций их хватает.