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

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

На чем программируют 1С: язык платформы и инструменты разработчика

Разбираемся, на каком языке программируют в 1С: встроенный язык платформы, конфигуратор, EDT, расширения и внешние инструменты. Практический разбор для новичков.

Разработка в 1С ведётся на встроенном языке платформы «1С:Предприятие» — это высокоуровневый предметно-ориентированный язык, синтаксис которого напоминает смесь Pascal и BASIC, а ключевые слова могут писаться как на русском, так и на английском. Отдельного компилятора и привычной среды вроде Visual Studio здесь нет: код пишется внутри конфигурации и исполняется платформой.

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

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

Что представляет собой встроенный язык 1С

Встроенный язык 1С — это интерпретируемый язык, который исполняется платформой, а не компилируется в машинный код. Его главная особенность — ориентация на предметную область учёта: в языке есть встроенные типы для работы с документами, справочниками, регистрами, запросами, датами и периодами. Разработчику не нужно вручную описывать SQL-структуры — платформа сама транслирует обращения к объектам в запросы к базе данных.

Синтаксис допускает два варианта ключевых слов: русский (Если, Тогда, КонецЕсли, Процедура) и английский (If, Then, EndIf, Procedure). Оба варианта можно смешивать в одном модуле, хотя на практике команды выбирают один стиль. Типизация динамическая: переменные не объявляются заранее, тип определяется при присваивании значения.

Пример простейшего фрагмента кода выглядит так:

Процедура РассчитатьСкидку(СуммаДокумента) Экспорт

Если СуммаДокумента > 100000 Тогда

Скидка = 10;

Иначе

Скидка = 0;

КонецЕсли;

Сообщить("Применена скидка: " + Скидка + "%");

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

Где именно пишут код: модули и конфигуратор

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

Основные виды модулей, с которыми работает разработчик:

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

Критически важное понятие — директивы компиляции: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста. В клиент-серверном режиме код физически исполняется на разных сторонах, и неправильное размещение процедуры — одна из самых частых причин ошибок и лишних серверных вызовов, замедляющих работу.

Язык запросов 1С — вторая половина разработки

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

Язык запросов имеет собственные расширения, которых нет в стандартном SQL: виртуальные таблицы регистров (остатки, обороты, срезы последних), иерархические итоги, разрез периодов. Значительная часть бизнес-логики — получение остатков, расчёт взаиморасчётов, подбор данных для отчётов — решается именно запросами, а не циклами в коде.

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

Типичные ошибки начинающих
01
Запрос внутри цикла — при сотнях итераций база получает сотни отдельных обращений, и операция занимает минуты вместо секунд
02
Логика проведения в модуле формы — при проведении документа программно или из обмена данными эта логика не выполнится
03
Игнорирование директив компиляции — процедура оказывается недоступна на нужной стороне, код не компилируется или делает лишние серверные вызовы
04
Прямая правка типовой конфигурации вместо расширения — при обновлении все доработки теряются или блокируют обновление

1C:EDT — современная среда разработки

Альтернатива конфигуратору — среда 1C:Enterprise Development Tools (EDT), построенная на базе Eclipse. В ней конфигурация хранится как проект из файлов, что позволяет использовать привычные практики разработки: системы контроля версий (Git), совместную работу ветками, автоматические проверки кода и code review.

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

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

Конфигуратор или EDT

Конфигуратор

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

1C:EDT

Подходит для командной работы, крупных проектов, Git и автоматических проверок кода. Требует больше ресурсов и времени на освоение

Расширения, внешние компоненты и интеграции

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

Для задач, выходящих за возможности встроенного языка, существуют внешние компоненты по технологии Native API или COM — их пишут на C++, C# или других языках и подключают к 1С. Так реализуют, например, работу с нестандартным оборудованием, криптографию или специфические протоколы. Это уже смежная разработка: требуется знание и 1С, и соответствующего языка.

Третье направление — интеграции без единой кодовой базы: HTTP-сервисы и веб-сервисы внутри 1С, обмен через файлы, брокеры сообщений. В этом случае внешняя система может быть написана на любом языке — Python, Java, PHP — и взаимодействовать с 1С по стандартным протоколам.

Маршрут решения

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

Нужно изменить поведение типовой конфигурации, которая регулярно обновляетсяИспользуйте расширение конфигурации — доработка переживёт обновления
Нужна функция, невозможная на встроенном языке (оборудование, специальные протоколы)Разработайте внешнюю компоненту на C++ или C# и подключите к 1С
Нужно связать 1С с внешней системой или сайтомПоднимите HTTP-сервис в 1С или используйте стандартные механизмы обмена
Доработка внутренняя, конфигурация не обновляетсяДопустима прямая правка конфигурации, но с документированием изменений

С чего начать обучение разработке на 1С

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

Порядок освоения разработки в 1С
  1. 1
    Установите учебную версию платформы и откройте конфигуратор на демонстрационной базе
  2. 2
    Изучите структуру метаданных: справочники, документы, регистры накопления и сведений
  3. 3
    Освойте базовый синтаксис встроенного языка: условия, циклы, процедуры, работа с датами и строками
  4. 4
    Научитесь писать запросы: выборка, соединения, виртуальные таблицы остатков и оборотов
  5. 5
    Разберитесь с клиент-серверной моделью и директивами компиляции
  6. 6
    Напишите учебную конфигурацию с нуля: приход, расход, отчёт по остаткам
  7. 7
    Проверьте результат: документы проводятся, остатки в отчёте сходятся с движениями регистров

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

Отдельно стоит упомянуть сертификацию «1С:Профессионал» и «1С:Специалист»: формально она не обязательна, но подготовка к экзаменам дисциплинирует и закрывает пробелы в понимании платформы.

Частые вопросы о языке и инструментах 1С

Можно ли программировать 1С на C# или Python?

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

Правда ли, что код в 1С пишут на русском языке?

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

Нужно ли знать SQL для разработки в 1С?

Строго обязательным это не является — платформа сама преобразует запросы 1С в SQL. Однако понимание принципов SQL помогает писать эффективные запросы и разбираться в проблемах производительности, особенно на клиент-серверных базах с большими объёмами данных.

Чем расширение отличается от доработки конфигурации?

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

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

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

Можно ли вести разработку в 1С через Git?

Да, через среду 1C:EDT конфигурация выгружается в файлы и полноценно версионируется в Git, включая ветки и слияния. В классическом конфигураторе вместо этого используется собственное хранилище конфигураций, совместимость с Git там ограничена.

Итог

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

Программируют 1С на встроенном языке платформы с русским или английским синтаксисом, плюс обязательный язык запросов. Инструменты — конфигуратор или 1C:EDT, доработки типовых решений безопаснее делать расширениями, а для нестандартных задач подключают внешние компоненты и HTTP-интеграции. Любые изменения проверяйте на копии базы.