К статье
Практический материал

Разработка и Конфигурация · 10 мин

На чём пишут 1С-программисты: языки и инструменты

Разбираем, на каких языках пишут 1С-программисты: встроенный язык 1С, запросы, внешние компоненты, интеграции и инструменты разработчика.

Основной инструмент 1С-программиста — встроенный язык платформы «1С:Предприятие», который часто называют просто «язык 1С» или «код на встроенном языке». Это предметно-ориентированный язык, созданный специально для описания бизнес-логики: проведения документов, расчёта зарплаты, формирования отчётов. Он не похож на языки общего назначения вроде Python или C#, потому что оперирует не абстрактными структурами, а объектами учёта — справочниками, документами, регистрами.

При этом профессия не ограничивается одним языком. На практике разработчик 1С ежедневно работает с языком запросов (диалектом SQL), механизмом СКД для отчётов, а при интеграциях — с веб-сервисами, JSON, HTTP-запросами и внешними компонентами на C++ или .NET. Полный стек зависит от задач компании: где-то достаточно конфигуратора, а где-то требуется связка с сайтом, складским оборудованием или банковскими системами.

Ниже разберём каждый инструмент: что именно пишут на нём, когда он нужен и с чего начинать изучение.

Встроенный язык 1С — основа профессии

Встроенный язык — это то, что имеют в виду, когда говорят «программировать в 1С». Код пишется в конфигураторе внутри модулей: модулей объектов, форм, общих модулей, модулей менеджеров. Типичная задача — обработчик события, например «ПриЗаписи» документа, где разработчик проверяет заполнение реквизитов, рассчитывает суммы и формирует движения по регистрам.

Характерная особенность — двуязычный синтаксис. Один и тот же код можно писать на русском (Если ... Тогда ... КонецЕсли;) или на английском (If ... Then ... EndIf;). В типовых конфигурациях и большинстве российских проектов используется русский синтаксис, английский чаще встречается в международных разработках. Компилятор воспринимает оба варианта и даже их смешение, хотя смешивать стили в одном проекте считается дурным тоном.

Язык не требует ручного управления памятью и не содержит указателей — это снижает порог входа. Зато он жёстко привязан к объектной модели платформы: нельзя «просто написать функцию», нужно понимать, что такое регистр сведений, виртуальная таблица, менеджер записи. Поэтому обучение идёт не от синтаксиса, а от предметной области.

Язык запросов 1С и работа с данными

Второй обязательный язык — язык запросов 1С. Он похож на SQL, но работает поверх объектной модели платформы: вместо физических таблиц базы данных разработчик обращается к «Справочник.Номенклатура» или «РегистрНакопления.Продажи.Обороты». Платформа сама транслирует запрос в диалект конкретной СУБД — MS SQL Server, PostgreSQL, Oracle или IBM Db2.

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

Типичная ошибка новичков — получать выборку и внутри цикла обращаться к реквизитам через точку, что порождает десятки неявных запросов к базе. Признак проблемы: отчёт или проведение документа «тормозит» пропорционально объёму данных. Проверяется это замером производительности в конфигураторе.

СКД: на чём делают отчёты

Система компоновки данных (СКД) — отдельный механизм платформы для построения отчётов без ручного программирования интерфейса. Разработчик описывает источник данных (запрос или набор данных-объект), ресурсы, группировки и настройки, а платформа сама строит форму отчёта, отборы и расшифровки.

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

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

Расширения, внешние обработки и печатные формы

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

Внешние обработки и отчёты — файлы .epf и .erf, которые подключаются к базе без изменения конфигурации. На них обычно делают разовые загрузки данных, сервисные утилиты, дополнительные печатные формы. Печатная форма — это макет табличного документа плюс код заполнения, никаких отдельных языков здесь нет.

Куда помещать доработку

Изменение конфигурации

Подходит для глубокой переработки под нестандартные процессы. Ограничение: усложняет обновление типового решения.

Расширение конфигурации

Оптимально для добавления отчётов, обработчиков и печатных форм к типовой конфигурации. Ограничение: не всё можно переопределить.

Внешняя обработка

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

Интеграции: HTTP, JSON, веб-сервисы и SQL

Современный 1С-программист регулярно выходит за пределы платформы. Обмен с сайтом, маркетплейсами, банками и CRM чаще всего строится на HTTP-запросах и формате JSON — платформа имеет встроенные объекты HTTPСоединение, HTTPЗапрос и средства чтения/записи JSON, поэтому сам код остаётся на встроенном языке, но разработчику нужно понимать REST-подход, форматы авторизации и структуру API внешней системы.

Встречаются и классические веб-сервисы на SOAP, файловые обмены через XML и CSV, а также прямые подключения к внешним базам данных. Для последних полезно знание «чистого» SQL: платформа позволяет выполнять запросы к внешним источникам данных, и там уже работают диалекты конкретных СУБД, а не язык запросов 1С.

При проектировании интеграции важно сразу закладывать обработку ошибок: таймауты, повторные отправки, журналирование обменов. Обмен, который «иногда молча не выгружает заказы», — типичный результат кода без контроля ответов внешней системы.

Как подступиться к интеграции по API
  1. 1
    Получите документацию API внешней системы и тестовый доступ
  2. 2
    Проверьте запросы внешним инструментом (например, Postman), прежде чем писать код в 1С
  3. 3
    Реализуйте отправку запроса через HTTPСоединение с обработкой кодов ответа
  4. 4
    Добавьте журналирование: что отправлено, что получено, когда
  5. 5
    Протестируйте на ошибочных сценариях: недоступность сервиса, неверный токен, пустой ответ

Внешние компоненты: где нужны C++, C# и Java

Когда возможностей платформы не хватает — работа со сканерами штрих-кодов, кассовым оборудованием, криптографией, специфическими протоколами — применяют внешние компоненты по технологии Native API или COM. Их пишут на C++, C# или Java, а из 1С компонента вызывается как объект с методами.

Разработка внешних компонент — отдельная ниша, которой занимается меньшинство 1С-программистов. Чаще компоненту берут готовую (от поставщика оборудования или из состава типовой конфигурации) и только подключают. Но понимание механизма подключения и регистрации компонент в базе нужно любому разработчику, работающему с торговым оборудованием.

Отдельно стоит EDT (1C:Enterprise Development Tools) — среда разработки на базе Eclipse, альтернатива классическому конфигуратору. Язык остаётся тем же встроенным, но меняется процесс: контроль версий через Git, статический анализ кода, командная разработка. Крупные проекты всё чаще требуют именно EDT.

Типичные ошибки начинающих 1С-разработчиков
01
Учить синтаксис языка без понимания объектной модели — код получается формально верным, но не решает учётную задачу
02
Писать доработки прямо в типовой конфигурации вместо расширения — первое же обновление затирает изменения
03
Игнорировать язык запросов и выбирать данные циклами — доработка работает на тестовой базе и «умирает» на рабочей
04
Не разбираться в СКД и делать все отчёты вручную — в разы больше времени разработки и ноль гибкости для пользователя

Что учить и в каком порядке

Рациональная последовательность для входа в профессию выглядит так: сначала объектная модель платформы (справочники, документы, регистры), затем встроенный язык в модулях объектов и форм, далее язык запросов и СКД, после этого — расширения и механизмы интеграции. Такой порядок соответствует реальному распределению задач в большинстве вакансий.

Знание других языков — конкурентное преимущество, но не стартовая точка. SQL пригодится для интеграций и диагностики производительности, основы JavaScript и HTML — для работы с веб-клиентом и HTML-публикациями, C# или C++ — только если вы целитесь в разработку компонент. Пытаться учить их до освоения платформы — частая стратегическая ошибка.

Итог

Что важно запомнить

Ядро профессии — встроенный язык 1С, язык запросов и СКД. Интеграции требуют понимания HTTP и JSON, внешние компоненты пишутся на C++/C#/Java, но это смежная ниша. Учиться стоит от объектной модели платформы, а не от синтаксиса.

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

1С — это вообще настоящий язык программирования?

Да. Встроенный язык 1С — полноценный язык с переменными, циклами, функциями, обработкой исключений и объектной моделью. Его отличие от языков общего назначения в предметной направленности: он заточен под учётные задачи и существует только внутри платформы «1С:Предприятие».

Нужно ли знать английский язык 1С-программисту?

Для чтения документации и разработки — желательно: значительная часть технических материалов и описаний API внешних сервисов написана на английском. Сам код в российских проектах обычно пишется на русском синтаксисе, поэтому английский нужен как вспомогательный навык, а не как требование к написанию кода.

Можно ли писать для 1С на Python или JavaScript?

Напрямую внутри платформы — нет, бизнес-логика пишется только на встроенном языке. Но Python или JavaScript могут использоваться во внешних системах, с которыми 1С обменивается данными: например, сервис на Python принимает выгрузку из 1С и обрабатывает её. В этом случае 1С-разработчик отвечает только за свою сторону обмена.

Что спрашивают на собеседовании 1С-программиста?

Чаще всего — язык запросов (соединения, виртуальные таблицы, пакетные запросы), механизмы платформы (проведение, регистры, блокировки), СКД и практические задачи по доработке типовых конфигураций. Вопросы про другие языки программирования поднимаются редко и только если вакансия связана с интеграциями или разработкой компонент.

Чем конфигуратор отличается от EDT и что выбрать новичку?

Конфигуратор — классическая среда разработки, встроенная в платформу: быстрый старт, минимум настройки. EDT — среда на базе Eclipse с поддержкой Git и статического анализа, ориентированная на командную разработку. Новичку проще начать с конфигуратора, а к EDT переходить, когда появляется работа в команде или требование работодателя.

Сколько времени нужно, чтобы начать писать на 1С?

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