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

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

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

Из чего состоит 1С:Бухгалтерия: платформа 1С:Предприятие, встроенный язык, метаданные, C++-ядро и базы данных. Как это знать для доработки и администрирования.

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

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

Из этого следуют реальные ограничения и возможности: доработать типовую бухгалтерию можно только средствами платформы и встроенного языка, подключить внешнюю обработку — тоже на нём, а вот «переписать» ядро или встроить произвольный код на Python или C# напрямую нельзя — только через внешние компоненты и интеграционные механизмы.

Из каких слоёв состоит 1С:Бухгалтерия

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

Средний слой — конфигурация «Бухгалтерия предприятия». Это набор метаданных (описаний объектов) и программных модулей на встроенном языке. Именно здесь определены справочники «Номенклатура» и «Контрагенты», документы «Поступление товаров и услуг», регистры бухгалтерии и налоговый учёт. Конфигурация открыта для просмотра и доработки в конфигураторе, если не включена защита отдельных модулей.

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

Встроенный язык 1С: на чём пишут доработки

Встроенный язык 1С — предметно-ориентированный язык высокого уровня, похожий по структуре на смесь Pascal и Visual Basic, но с русскоязычным синтаксисом. Ключевые слова, операторы и встроенные функции имеют русские названия: «Если», «Цикл», «Запрос», «Сообщить». Допускается и англоязычный синтаксис, но типовая Бухгалтерия написана на русском варианте.

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

Код распределён по модулям: общие модули, модули объектов, модули форм, модули менеджеров. Например, алгоритм проведения документа «Реализация товаров и услуг» находится в его модуле объекта в процедуре «ОбработкаПроведения», а типовые операции закрытия месяца — в общих модулях с длинными именами вида «УчетНДС» или «ЗакрытиеМесяца».

На чём написано ядро платформы

Ядро «1С:Предприятия» — клиентские приложения, сервер 1С, веб-компоненты — написано преимущественно на C++. Это компилируемый код, который обеспечивает быстродействие механизмов платформы: выполнение запросов, построение интерфейса, работу с СУБД. Фирма «1С» не публикует исходный код ядра, поэтому изменить поведение платформы напрямую невозможно — можно только использовать предусмотренные ею механизмы расширения.

Для задач, которых не покрывает встроенный язык, существует технология внешних компонент (Native API и COM). Внешнюю компоненту разрабатывают на C++ или другом языке, компилируют в DLL и подключают к 1С — так реализуют, например, драйверы торгового оборудования, криптографию или работу со сканерами штрихкодов. Для бухгалтера это проявляется в том, что подключение кассы или сканера требует установки драйвера — внешней компоненты, написанной не на языке 1С.

Отдельные части экосистемы используют и другие технологии: веб-клиент работает в браузере на HTML и JavaScript, мобильная платформа собирает приложения под Android и iOS, а сервер взаимодействия и кластер серверов используют собственные сетевые протоколы.

Где хранятся данные: роль СУБД

Платформа не хранит данные в собственном серверном формате при клиент-серверной работе — она использует сторонние СУБД. Поддерживаются Microsoft SQL Server, PostgreSQL (включая отечественные сборки), Oracle Database и IBM DB2. В файловом варианте данные лежат в одном файле 1Cv8.1CD собственного формата платформы.

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

Как посмотреть, из чего состоит ваша бухгалтерия

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

Версию платформы и конфигурации можно узнать без конфигуратора: в режиме предприятия откройте «Сервис → О программе». Там указаны номер релиза платформы (например, 8.3.хх) и релиз конфигурации (например, 3.0.хх). Эта информация нужна при обновлениях и при обращении за поддержкой.

Как посмотреть код конфигурации
  1. 1
    Запустите ярлык 1С и выберите базу, но вместо режима «Предприятие» откройте «Конфигуратор».
  2. 2
    Выполните команду «Конфигурация → Открыть конфигурацию» и дождитесь построения дерева метаданных.
  3. 3
    Раскройте ветку «Документы», выберите документ, откройте его «Модуль объекта» — здесь находится код проведения.
  4. 4
    Для просмотра запросов откройте любой отчёт и найдите текст запроса на встроенном языке запросов 1С.
  5. 5
    Закройте конфигуратор без сохранения, если нужен был только просмотр.

Язык запросов и СКД: ещё два «языка» внутри 1С

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

Третий механизм — система компоновки данных (СКД). Это декларативный способ описания отчётов: разработчик задаёт запрос и настройки, а платформа сама строит интерфейс, группировки и итоги. Большинство типовых отчётов Бухгалтерии 3.0 реализованы именно на СКД, поэтому пользователь может менять отборы и группировки без программирования.

Ядро платформыC++

Компилируемый код фирмы «1С», закрыт для изменений

Прикладная логикаВстроенный язык 1С

Открыт для просмотра и доработки в конфигураторе

Выборки данныхЯзык запросов 1С

Похож на SQL, работает с объектами метаданных

ОтчётыСКД

Декларативное описание, настраивается пользователем

Хранение данныхMS SQL / PostgreSQL / файл

Структура таблиц генерируется платформой

Что это значит для доработки и выбора специалиста

Если нужно доработать бухгалтерию — добавить печатную форму, изменить проводки, сделать интеграцию с сайтом — потребуется специалист по встроенному языку 1С и механизмам платформы, а не «программист вообще». Знание C++, Java или Python здесь напрямую не применяется, хотя для интеграций полезны навыки работы с HTTP, веб-сервисами и форматами XML/JSON, которые платформа поддерживает штатно.

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

Типичные ошибки
01
Считать, что 1С написана на SQL: запросы 1С лишь похожи на SQL, а прямая работа с СУБД обходом платформы разрушает базу.
02
Искать «исходники бухгалтерии» на C++: прикладной код — это встроенный язык в конфигураторе, ядро закрыто.
03
Дорабатывать типовую конфигурацию напрямую вместо расширения — при обновлении изменения теряются или блокируют обновление.
04
Нанимать разработчика без опыта 1С: знание других языков не заменяет понимания метаданных, регистров и механизмов платформы.

FAQ

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

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

Можно ли посмотреть исходный код 1С:Бухгалтерии?

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

Почему в 1С русский язык программирования?

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

Нужно ли знать SQL для работы с 1С:Бухгалтерией?

Для учёта и большинства доработок — нет: платформа сама транслирует запросы 1С в SQL. Знание SQL полезно администраторам клиент-серверных баз для диагностики производительности и обслуживания СУБД, но не для изменения данных.

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

Да, штатными средствами: через HTTP-сервисы, веб-сервисы SOAP, обмен файлами XML/JSON, COM-соединение и внешние компоненты. Например, сайт на PHP или Python может обмениваться данными с бухгалтерией через опубликованный HTTP-сервис.

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

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

Итог

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

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