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

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

1С Бухгалтерия: какой язык программирования используется

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

1С Бухгалтерия построена на технологической платформе «1С:Предприятие», а вся бизнес-логика в ней написана на встроенном языке 1С — его часто называют «язык 1С» или по-английски BSL (1C:Enterprise script). Это не Python, не C# и не Java: это самостоятельный высокоуровневый язык, который существует только внутри платформы и исполняется её интерпретатором. Код можно писать как на русском, так и на английском синтаксисе — оба варианта равнозначны, платформа понимает оба.

Кроме встроенного языка, в работе с 1С Бухгалтерией используется язык запросов — декларативный язык, похожий на SQL, но адаптированный под структуру метаданных 1С (справочники, документы, регистры). Именно на нём строятся отчёты, выборки и динамические списки. Сама платформа (движок, который исполняет код) написана фирмой «1С» на C++, но прикладному разработчику этот уровень недоступен и не нужен.

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

Из чего состоит «технологический стек» 1С Бухгалтерии

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

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

Как устроен встроенный язык 1С

Встроенный язык 1С — процедурный, с поддержкой модульной структуры. Код размещается в модулях: модулях объектов (например, модулях документов), модулях форм, общих модулях, модулях менеджеров. Язык слабо типизирован: одна переменная может последовательно хранить число, строку и ссылку на объект. Это ускоряет разработку, но требует внимательности — ошибка типа проявится только в момент выполнения.

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

// Пример: проверка заполнения контрагента перед проведением

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

Если Не ЗначениеЗаполнено(Контрагент) Тогда

Сообщить("Не указан контрагент, документ не проведён.");

Отказ = Истина;

КонецЕсли;

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

Из языка доступны типовые коллекции: массивы, структуры, соответствия (аналог словарей), таблицы значений. Работа с файлами, HTTP-запросами, XML и JSON также встроена в платформу — для большинства задач интеграции сторонние библиотеки не требуются.

Язык запросов: второй обязательный инструмент

Язык запросов 1С внешне напоминает SQL, но оперирует не таблицами СУБД, а объектами метаданных: «Справочник.Номенклатура», «Документ.РеализацияТоваровУслуг», «РегистрНакопления.Продажи». Платформа сама транслирует запрос в SQL для конкретной СУБД (MS SQL Server, PostgreSQL, IBM Db2 или файловый вариант), поэтому разработчик не пишет диалект под конкретную базу.

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

ВЫБРАТЬ

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

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

ИЗ

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

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

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

Где в 1С Бухгалтерии используются другие языки

Встроенный язык и запросы покрывают почти все задачи, но есть зоны, где встречаются другие технологии. Внешние компоненты по технологии Native API или COM пишутся на C++ или C# — например, драйверы торгового оборудования и касс. Веб-сервисы и HTTP-сервисы, опубликованные из 1С, могут вызываться извне из кода на любом языке — так строят интеграции с сайтами и CRM.

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

Что использовать для задачи

Встроенный язык 1С

Доработка документов, обработчики событий, обработки, регламентные операции. Основной инструмент, ограничение — работает только внутри платформы.

Язык запросов и СКД

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

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

Доработка типовой 1С Бухгалтерии без снятия с поддержки. Подходит для печатных форм и новых ролей; есть ограничения на изменение типовых объектов.

Внешние компоненты (C++/C#)

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

Как начать дорабатывать 1С Бухгалтерию: практический порядок

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

Порядок первой доработки
  1. 1
    Сделайте резервную копию информационной базы или работайте на копии базы.
  2. 2
    Откройте конфигуратор и создайте новое расширение конфигурации с понятным именем и префиксом.
  3. 3
    Добавьте в расширение нужный объект: печатную форму, обработку или общий модуль.
  4. 4
    Напишите код на встроенном языке, используя синтакс-помощник (Ctrl+Shift+F1) для проверки методов.
  5. 5
    Проверьте модуль через «Конфигурация → Проверка конфигурации» и протестируйте сценарий на копии базы.
  6. 6
    Перенесите расширение в рабочую базу и проверьте результат под реальным пользователем с его правами.

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

Ограничения и типичные ошибки новичков

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

Типичные ошибки
01
Чтение данных циклом по объектам вместо запроса — на больших базах обработка выполняется часами вместо секунд.
02
Изменение типовых модулей вместо расширения — при обновлении конфигурации доработки теряются или блокируют обновление.
03
Выполнение кода &НаКлиенте там, где нужны данные сервера — ошибки вызова методов и лишние серверные вызовы, тормозящие форму.
04
Отсутствие проверки прав пользователя — обработка работает у администратора и падает у бухгалтера с ограниченными правами.
05
Тестирование только на пустой копии — на реальных данных всплывают дубли, незаполненные реквизиты и старые форматы значений.
Контрольные точки

Как проверить результат доработки

Проверка конфигурации в конфигураторе
Норма

Нет ошибок компиляции модулей расширения

Тревожный признак

Сообщения о несуществующих методах или переменных

Проведение документа после доработки
Норма

Документ проводится, движения по регистрам корректны

Тревожный признак

Ошибки в журнале регистрации, лишние или отсутствующие проводки

Работа под типовым пользователем
Норма

Функция доступна и работает с правами бухгалтера

Тревожный признак

Нарушение прав доступа или недоступность команды

Обновление конфигурации на тестовой копии
Норма

Расширение применяется после обновления без конфликтов

Тревожный признак

Расширение отключается из-за изменения типовых объектов

Что учить, если вы пришли из другого языка

Разработчикам с опытом Python, C# или Java встроенный язык даётся быстро: базовый синтаксис осваивается за несколько дней. Основное время уходит не на язык, а на объектную модель 1С: как устроены регистры бухгалтерии и накопления, чем отличаются ссылка и объект, как работают подписки на события и механизм проведения. Именно это определяет качество доработок 1С Бухгалтерии, а не знание синтаксиса.

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

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

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

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

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

1С Бухгалтерия написана на C++?

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

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

Напрямую внутри конфигурации — нет, платформа исполняет только встроенный язык. Python или C# применяются снаружи: для интеграций через HTTP-сервисы, веб-сервисы, COM-соединение или файловый обмен. Внешние компоненты для оборудования пишут на C++/C# по технологии Native API.

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

Классический SQL не нужен: платформа сама транслирует запросы 1С в диалект используемой СУБД. Но нужен язык запросов 1С, который похож на SQL по структуре — SELECT, ГДЕ, СГРУППИРОВАТЬ ПО. Знание SQL помогает быстрее его освоить, но не является обязательным.

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

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

Какой синтаксис выбрать — русский или английский?

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

Сложно ли освоить встроенный язык 1С с нуля?

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