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

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

Язык программирования 1С: для чего используется и как он устроен

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

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

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

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

Для каких задач применяется язык 1С

Основная область применения — доработка типовых конфигураций под нужды конкретной компании. Типовая «1С:Бухгалтерия» или «1С:Управление торговлей» покрывает стандартные процессы, но почти в каждом внедрении требуются изменения: нестандартный расчёт скидок, дополнительные проверки при проведении документа, свои печатные формы.

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

Третья группа — обмены и интеграции: выгрузка заказов на сайт, загрузка банковских выписок, синхронизация справочников между базами, работа с веб-сервисами и HTTP-запросами. Для этого в языке есть объекты для чтения и записи XML, JSON, текстовых файлов, а также HTTPСоединение.

Как устроен язык: основные конструкции

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

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

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

Если СуммаПокупки >= 100000 Тогда

Возврат СуммаПокупки * 0.10;

ИначеЕсли СуммаПокупки >= 50000 Тогда

Возврат СуммаПокупки * 0.05;

Иначе

Возврат 0;

КонецЕсли;

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

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

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

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

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

Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Продажи.Номенклатура,

| СУММА(Продажи.Сумма) КАК Сумма

|ИЗ

| РегистрНакопления.Продажи.Обороты(&Начало, &Конец) КАК Продажи

|СГРУППИРОВАТЬ ПО

| Продажи.Номенклатура";

Запрос.УстановитьПараметр("Начало", НачалоМесяца(ТекущаяДатаСеанса()));

Запрос.УстановитьПараметр("Конец", КонецМесяца(ТекущаяДатаСеанса()));

Результат = Запрос.Выполнить().Выгрузить();

Где выполняется код: клиент, сервер, внешние соединения

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

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

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

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

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

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

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

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

Нужно добавить печатную форму, отчёт или обработкуИспользуйте внешние отчёты/обработки или расширение — конфигурацию менять не требуется
Нужно переопределить логику типовой процедуры или добавить реквизит в формуСоздайте расширение конфигурации
Меняется состав регистров или типовые движения документовДоработка самой конфигурации с планом на усложнённое обновление
Нужна интеграция с внешней системойОбщий модуль с HTTP-запросами или план обмена, вынесенный в расширение

Кому стоит изучать язык 1С и с чего начать

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

Практичный путь обучения: установить учебную версию платформы, разобраться с объектами метаданных (справочники, документы, регистры), затем освоить запросы и только потом — тонкости клиент-серверного взаимодействия и компоновки данных. Попытка учить язык отдельно от объектов конфигурации редко даёт результат: ценность языка именно в связке с моделью учёта.

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

Ограничения и альтернативы

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

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

Итог

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

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

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

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

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

Можно ли писать на 1С код на английском языке?

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

Чем язык запросов 1С отличается от SQL?

Запросы 1С обращаются к объектам конфигурации (документам, регистрам), а не к физическим таблицам СУБД, и поддерживают специфические возможности: виртуальные таблицы итогов, разворачивание периодов, иерархические итоги. Платформа сама транслирует запрос в SQL конкретной СУБД.

Подойдёт ли 1С для написания сайта или мобильного приложения?

Для сайтов — нет, но платформа умеет публиковать HTTP- и веб-сервисы, через которые сайт обменивается данными с базой. Мобильная платформа 1С существует отдельно и позволяет создавать приложения для учётных задач, но это специфическая ниша.

Что выбрать для первой доработки: изменение конфигурации или расширение?

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

Где выполнять отладку кода в 1С?

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