Разработка и Конфигурация · 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С Бухгалтерию: практический порядок
Для доработок используется конфигуратор — среда разработки, входящая в платформу. Типовую 1С Бухгалтерию рекомендуется изменять через расширения конфигурации: они накладываются поверх типового решения, не снимают его с поддержки и не ломают обновления. Прямое изменение типовых модулей — крайняя мера, потому что каждое обновление конфигурации станет ручной и рискованной процедурой.
- 1Сделайте резервную копию информационной базы или работайте на копии базы.
- 2Откройте конфигуратор и создайте новое расширение конфигурации с понятным именем и префиксом.
- 3Добавьте в расширение нужный объект: печатную форму, обработку или общий модуль.
- 4Напишите код на встроенном языке, используя синтакс-помощник (Ctrl+Shift+F1) для проверки методов.
- 5Проверьте модуль через «Конфигурация → Проверка конфигурации» и протестируйте сценарий на копии базы.
- 6Перенесите расширение в рабочую базу и проверьте результат под реальным пользователем с его правами.
Отладка выполняется штатно: точки останова в конфигураторе, запуск предприятия в отладочном режиме, просмотр значений переменных и стека вызовов. Для анализа ошибок в рабочей базе используется журнал регистрации и технологический журнал — они показывают, какой модуль и строка вызвали исключение.
Ограничения и типичные ошибки новичков
Встроенный язык — интерпретируемый и работает только внутри платформы: из него нельзя собрать отдельное приложение или библиотеку. Многопоточности в привычном смысле нет; длительные операции выполняются через фоновые задания. У клиентского и серверного кода разный контекст: директивы &НаКлиенте и &НаСервере определяют, где исполняется процедура, и передача между ними ограничена сериализуемыми типами.
Как проверить результат доработки
Нет ошибок компиляции модулей расширения
Сообщения о несуществующих методах или переменных
Документ проводится, движения по регистрам корректны
Ошибки в журнале регистрации, лишние или отсутствующие проводки
Функция доступна и работает с правами бухгалтера
Нарушение прав доступа или недоступность команды
Расширение применяется после обновления без конфликтов
Расширение отключается из-за изменения типовых объектов
Что учить, если вы пришли из другого языка
Разработчикам с опытом 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С с нуля?
Сам синтаксис прост и осваивается быстро даже без опыта программирования. Основная сложность — не язык, а объектная модель платформы: регистры, документы, проведение, клиент-серверная архитектура. Реалистичный путь — начать с простых печатных форм и отчётов, постепенно переходя к доработке учётных механизмов.