Разработка и Конфигурация · 12 мин
1С:Предприятие — какой язык программирования используется
Разбираем, на каком языке программируют в 1С:Предприятие: встроенный язык, язык запросов, расширения, внешние компоненты и с чего начать изучение разработки.
Платформа 1С:Предприятие использует собственный встроенный язык программирования, который разработчики часто называют просто «язык 1С» или «1С-script». Это не Python, не C# и не Java — это самостоятельный высокоуровневый язык, созданный специально для описания бизнес-логики: проведения документов, расчёта зарплаты, формирования отчётов и работы с объектами учёта. Код на нём можно писать как на русском, так и на английском синтаксисе — платформа понимает оба варианта и даже позволяет смешивать их в одном модуле.
Кроме встроенного языка, в экосистеме 1С есть несколько смежных инструментов: язык запросов для выборки данных из базы, язык выражений компоновки данных для отчётов на СКД, а также возможность подключать внешние компоненты, написанные на C++, или интегрироваться с другими системами через HTTP-сервисы. Но ядро любой доработки конфигурации — это именно встроенный язык, и именно его изучают в первую очередь.
Понимание того, как устроен язык 1С, важно не только программистам. Внедренцы, аналитики и опытные пользователи, которые умеют читать код, быстрее находят причины ошибок, точнее формулируют задачи разработчикам и могут самостоятельно делать простые доработки через расширения конфигурации.
Что представляет собой встроенный язык 1С
Встроенный язык 1С — это предметно-ориентированный язык, то есть он создан не «для всего», а для конкретной задачи: автоматизации учёта и управления предприятием. В нём изначально есть типы данных «Документ», «Справочник», «РегистрНакопления», «Перечисление», и разработчик работает с ними напрямую, без слоя объектно-реляционного отображения, который нужен в универсальных языках.
Синтаксис напоминает смесь Pascal и BASIC: операторные скобки через «Если…Тогда…КонецЕсли», циклы через «Для…Цикл…КонецЦикла» и «Пока…Цикл…КонецЦикла», процедуры и функции с явным окончанием. Язык регистронезависим, динамически типизирован, не требует ручного управления памятью. Компиляция происходит при сохранении конфигурации, а исполняется код на сервере 1С или на клиенте — в зависимости от директив компиляции.
Характерная особенность — двуязычие. Одна и та же конструкция может быть записана как «Если Условие Тогда», так и «If Условие Then». Типовые конфигурации от фирмы «1С» написаны на русском синтаксисе, и именно его стоит изучать новичку, чтобы безболезненно читать код типовых решений.
Где именно пишется код: модули и контексты
Код в 1С не живёт в отдельных файлах проекта, как в классических IDE. Он размещён в модулях, каждый из которых привязан к определённому объекту или событию конфигурации. Понимание структуры модулей — половина понимания того, как программируют в 1С.
- Модуль объекта — код, связанный с конкретным справочником, документом или отчётом: обработчики проведения, записи, заполнения.
- Модуль формы — логика пользовательского интерфейса: обработчики нажатий кнопок, изменения полей, открытия формы.
- Общие модули — библиотеки переиспользуемых процедур и функций, доступные из любого места конфигурации.
- Модуль приложения и модуль сеанса — код, выполняемый при старте системы и при входе пользователя.
- Модуль менеджера объекта — серверная логика, не привязанная к конкретной записи данных.
Каждый модуль исполняется в определённом контексте — на клиенте, на сервере или в обоих местах. Директивы компиляции «&НаКлиенте» и «&НаСервере» определяют, где будет выполнена процедура. Это принципиально важно: обращение к базе данных возможно только на сервере, а работа с элементами формы — только на клиенте. Ошибки с контекстом исполнения — самая частая проблема начинающих разработчиков.
&НаСервере
Процедура ПровестиДокументы(Период)
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Документ.Реализация
|ГДЕ Дата МЕЖДУ &Начало И &Конец";
Запрос.УстановитьПараметр("Начало", НачалоМесяца(Период));
Запрос.УстановитьПараметр("Конец", КонецМесяца(Период));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Объект = Выборка.Ссылка.ПолучитьОбъект();
Объект.Записать(РежимЗаписиДокумента.Проведение);
КонецЦикла;
КонецПроцедурыЯзык запросов 1С и его отличие от SQL
Вторая половина разработки в 1С — это запросы к данным. Для этого используется встроенный язык запросов, который внешне похож на SQL, но работает не с таблицами СУБД, а с объектами конфигурации: справочниками, документами, регистрами. Платформа сама транслирует запрос в SQL для конкретной базы данных — MS SQL Server, PostgreSQL, Oracle или IBM Db2.
Язык запросов 1С поддерживает соединения таблиц, группировки, итоги, виртуальные таблицы регистров (например, «ОстаткиИОбороты»), временные таблицы и пакетные запросы. Текст запроса обычно пишется прямо в коде как строка, но удобнее сначала собрать его в консоли запросов или через конструктор запроса в конфигураторе — так видны ошибки синтаксиса до запуска.
Язык выражений СКД
Для отчётов на системе компоновки данных существует третий мини-язык — язык выражений компоновки данных. На нём пишутся вычисляемые поля, выражения ресурсов и параметры отбора. Синтаксис похож на встроенный язык, но с ограниченным набором функций. Если отчёт строится на СКД, часть логики переносится из кода в схему компоновки — это ускоряет разработку и позволяет пользователю самостоятельно менять настройки отчёта.
Чем 1С дополняют другими языками
Встроенный язык закрывает большинство задач, но есть области, где платформа открыта для внешних технологий. Внешние компоненты по технологии Native API пишут на C++ — так подключают торговое оборудование, криптографию, специфические библиотеки. Мобильные приложения на платформе 1С тоже используют встроенный язык, но собираются отдельным инструментарием.
Для интеграций применяют HTTP-сервисы и веб-сервисы, описываемые внутри конфигурации, а на внешней стороне может быть любой стек — Python, C#, Java, PHP. Популярен и обратный сценарий: внешняя система обращается к 1С через OData-интерфейс, который платформа публикует автоматически, без написания кода.
Инструменты разработки в 1С
Основной инструмент: бизнес-логика, обработчики, проведение. Не заменяется ничем внутри платформы.
Выборка и агрегация данных. Ограничение: только чтение, изменение данных выполняется через объекты.
Отчёты и динамические списки с настройкой пользователем. Ограничение: сложная отладка нестандартных схем.
Внешние компоненты для оборудования и низкоуровневых задач. Требует отдельных навыков и компиляции под каждую платформу.
Интеграции, внешние сервисы, обмены через HTTP. Код живёт вне 1С и сопровождается отдельно.
С чего начать изучение языка 1С
Порог входа во встроенный язык ниже, чем в универсальные языки: не нужно настраивать окружение, подключать базы данных, разбираться с фреймворками. Достаточно установить учебную версию платформы и конфигуратор — среда разработки уже встроена. Однако специфика в том, что программисту 1С нужно понимать предметную область: как устроены документы, регистры, проведение, иначе код будет формально правильным, но методологически неверным.
- 1Установите учебную версию платформы 1С:Предприятие и откройте конфигуратор на демонстрационной базе.
- 2Изучите базовый синтаксис: переменные, условия, циклы, процедуры и функции, встроенные типы (дата, строка, массив, структура).
- 3Разберитесь с объектами конфигурации: справочники, документы, регистры — и напишите простую обработку проведения.
- 4Освойте язык запросов: начните с конструктора запросов, затем переходите к виртуальным таблицам регистров.
- 5Научитесь пользоваться отладчиком: точки останова, табло, стек вызовов — без этого изучение реального кода невозможно.
- 6Читайте код типовых конфигураций и синтакс-помощник (встроенная справка в конфигураторе) по каждой незнакомой конструкции.
Синтакс-помощник — главный справочник разработчика: он вызывается по Ctrl+F1 прямо в конфигураторе и содержит описание всех объектов, методов и событий платформы. Внешние учебники полезны для методологии, но актуальную сигнатуру метода всегда проверяйте именно там, потому что платформа развивается и набор возможностей меняется от версии к версии.
Расширения и внешние обработки: доработка без изменения конфигурации
Отдельный практический пласт — механизмы, позволяющие добавить код без вмешательства в типовую конфигурацию. Расширения конфигурации позволяют дописывать собственные процедуры, подписываться на события типовых модулей и добавлять объекты, при этом типовая конфигурация остаётся на поддержке и обновляется штатно. Внешние обработки и отчёты — это файлы с кодом на встроенном языке, которые запускаются внутри базы без изменения конфигурации вообще.
Для пользователей, которые не планируют становиться разработчиками, полезен минимальный навык чтения кода: открыть модуль через конфигуратор, найти обработчик ошибочного действия и понять, какое условие не выполняется. Это резко сокращает время диагностики проблем даже без внесения изменений.
Кому и зачем знать, на чём написана 1С
Практический вывод зависит от роли. Бухгалтеру или менеджеру достаточно понимать, что доработки делаются встроенным языком и требуют привлечения разработчика или внедрения расширения. Системному администратору важно знать про механизм внешних компонент и публикацию HTTP-сервисов, потому что это влияет на настройку веб-сервера. Тому, кто выбирает профессию, полезно понимать: язык 1С — специализированный, навыки по нему востребованы в учётной автоматизации, но слабо переносятся в другие области разработки, и наоборот — опытный Python-разработчик не станет 1С-программистом без изучения платформы и предметной области.
Что важно запомнить
1С:Предприятие программируется на собственном встроенном языке с русским и английским синтаксисом, дополненном языком запросов и языком СКД. Код размещается в модулях с явным контекстом исполнения, доработки безопаснее делать через расширения, а изучение стоит начинать с учебной платформы, синтакс-помощника и чтения типового кода.
Частые вопросы
Можно ли программировать в 1С на английском языке?
Да, платформа полностью поддерживает английский синтаксис: If вместо Если, Procedure вместо Процедура и так далее. Оба варианта можно смешивать в одном модуле. На практике типовые конфигурации и большинство команд в русскоязычных проектах используют русский синтаксис, поэтому для чтения чужого кода знать его придётся в любом случае.
Похож ли язык запросов 1С на SQL и поможет ли знание SQL?
Знание SQL заметно помогает: конструкции SELECT, JOIN, WHERE, GROUP BY имеют прямые аналоги. Отличия в том, что запрос 1С обращается к объектам конфигурации, а не к физическим таблицам, поддерживает виртуальные таблицы регистров, разделители «|» для многострочных строк и не умеет изменять данные — только читать их.
Нужно ли знать другой язык программирования перед изучением 1С?
Не обязательно. Встроенный язык часто осваивают как первый: синтаксис простой, среда разработки встроена в платформу, результат виден сразу в прикладной системе. Базовое понимание переменных, условий и циклов из любого языка ускорит старт, но большую часть времени у новичка занимает не синтаксис, а изучение объектной модели конфигурации и методологии учёта.
На чём написана сама платформа 1С:Предприятие?
Фирма «1С» не раскрывает детально внутреннее устройство платформы, но по доступной информации ядро реализовано преимущественно на C++. Для прикладного разработчика это не имеет практического значения: вся работа ведётся на встроенном языке, а низкоуровневые задачи решаются через внешние компоненты по технологии Native API.
Можно ли доработать типовую конфигурацию, не зная программирования?
Частично. Без кода доступны пользовательские настройки отчётов на СКД, дополнительные реквизиты и сведения, изменение форм в режиме «Изменить форму» и подключение готовых расширений. Всё, что требует новой логики — проведение, расчёты, обмены, — потребует кода на встроенном языке, либо готового решения от стороннего разработчика.
Чем расширение конфигурации отличается от внешней обработки?
Расширение подключается к конфигурации и изменяет поведение типовых объектов: добавляет обработчики событий, реквизиты, формы — при этом типовая конфигурация остаётся на поддержке. Внешняя обработка — отдельный файл, который запускается вручную или по расписанию и не меняет конфигурацию вообще. Для системных доработок используют расширения, для разовых сервисных операций — обработки.