Разработка и Конфигурация · 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: виртуальные таблицы регистров (остатки, обороты, срезы последних), иерархические итоги, разрез периодов. Значительная часть бизнес-логики — получение остатков, расчёт взаиморасчётов, подбор данных для отчётов — решается именно запросами, а не циклами в коде.
Типичная ошибка новичков — перебирать таблицу в цикле и выполнять запрос на каждой итерации. Это резко снижает производительность. Правильный подход: один запрос с соединениями и группировками, а код используется только для обработки результата.
1C:EDT — современная среда разработки
Альтернатива конфигуратору — среда 1C:Enterprise Development Tools (EDT), построенная на базе Eclipse. В ней конфигурация хранится как проект из файлов, что позволяет использовать привычные практики разработки: системы контроля версий (Git), совместную работу ветками, автоматические проверки кода и code review.
EDT поддерживает те же языки — встроенный язык и язык запросов, — но добавляет подсветку ошибок до запуска, навигацию по крупным конфигурациям и плагины проверки стандартов разработки. Для командной разработки над крупными проектами EDT подходит заметно лучше конфигуратора с его хранилищем конфигураций.
Ограничения тоже есть: EDT требовательнее к ресурсам компьютера, а часть старых механизмов и редких операций удобнее выполнять в конфигураторе. На практике многие разработчики используют оба инструмента параллельно.
Конфигуратор или EDT
Подходит для одиночной разработки, поддержки типовых конфигураций и быстрых доработок. Входит в поставку платформы, не требует настройки
Подходит для командной работы, крупных проектов, Git и автоматических проверок кода. Требует больше ресурсов и времени на освоение
Расширения, внешние компоненты и интеграции
Когда доработку нельзя или нежелательно вносить в типовую конфигурацию, используют расширения — механизм, позволяющий добавить собственные формы, процедуры и обработчики поверх типовой логики, не изменяя её. Код расширения пишется на том же встроенном языке, но хранится отдельно и не мешает обновлениям.
Для задач, выходящих за возможности встроенного языка, существуют внешние компоненты по технологии Native API или COM — их пишут на C++, C# или других языках и подключают к 1С. Так реализуют, например, работу с нестандартным оборудованием, криптографию или специфические протоколы. Это уже смежная разработка: требуется знание и 1С, и соответствующего языка.
Третье направление — интеграции без единой кодовой базы: HTTP-сервисы и веб-сервисы внутри 1С, обмен через файлы, брокеры сообщений. В этом случае внешняя система может быть написана на любом языке — Python, Java, PHP — и взаимодействовать с 1С по стандартным протоколам.
Как выбрать способ доработки
С чего начать обучение разработке на 1С
Порог входа в 1С-разработку ниже, чем в универсальные языки, но специфика предметной области требует понимания учётных механизмов. Эффективный порядок освоения выглядит так.
- 1Установите учебную версию платформы и откройте конфигуратор на демонстрационной базе
- 2Изучите структуру метаданных: справочники, документы, регистры накопления и сведений
- 3Освойте базовый синтаксис встроенного языка: условия, циклы, процедуры, работа с датами и строками
- 4Научитесь писать запросы: выборка, соединения, виртуальные таблицы остатков и оборотов
- 5Разберитесь с клиент-серверной моделью и директивами компиляции
- 6Напишите учебную конфигурацию с нуля: приход, расход, отчёт по остаткам
- 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-интеграции. Любые изменения проверяйте на копии базы.