Разработка и Конфигурация · 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С и выберите базу, но вместо режима «Предприятие» откройте «Конфигуратор».
- 2Выполните команду «Конфигурация → Открыть конфигурацию» и дождитесь построения дерева метаданных.
- 3Раскройте ветку «Документы», выберите документ, откройте его «Модуль объекта» — здесь находится код проведения.
- 4Для просмотра запросов откройте любой отчёт и найдите текст запроса на встроенном языке запросов 1С.
- 5Закройте конфигуратор без сохранения, если нужен был только просмотр.
Язык запросов и СКД: ещё два «языка» внутри 1С
Помимо встроенного языка, в бухгалтерии активно используется язык запросов 1С — декларативный язык, похожий на SQL, но работающий с объектами конфигурации, а не с физическими таблицами. На нём написаны выборки данных практически во всех отчётах и обработках: оборотно-сальдовая ведомость, анализ счёта, карточка счёта строятся запросами к виртуальным таблицам регистров.
Третий механизм — система компоновки данных (СКД). Это декларативный способ описания отчётов: разработчик задаёт запрос и настройки, а платформа сама строит интерфейс, группировки и итоги. Большинство типовых отчётов Бухгалтерии 3.0 реализованы именно на СКД, поэтому пользователь может менять отборы и группировки без программирования.
Компилируемый код фирмы «1С», закрыт для изменений
Открыт для просмотра и доработки в конфигураторе
Похож на SQL, работает с объектами метаданных
Декларативное описание, настраивается пользователем
Структура таблиц генерируется платформой
Что это значит для доработки и выбора специалиста
Если нужно доработать бухгалтерию — добавить печатную форму, изменить проводки, сделать интеграцию с сайтом — потребуется специалист по встроенному языку 1С и механизмам платформы, а не «программист вообще». Знание C++, Java или Python здесь напрямую не применяется, хотя для интеграций полезны навыки работы с HTTP, веб-сервисами и форматами XML/JSON, которые платформа поддерживает штатно.
Для изменений без снятия конфигурации с поддержки используются расширения конфигурации — механизм, позволяющий добавлять и переопределять объекты поверх типовой бухгалтерии. Код расширения пишется на том же встроенном языке, но хранится отдельно, что упрощает обновления. Для мелких задач достаточно внешних обработок и отчётов — файлов с расширением epf и erf, которые подключаются без изменения конфигурации.
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++. Данные хранятся в файловой базе или внешней СУБД, отчёты построены на языке запросов и СКД. Доработки выполняются только средствами платформы — через конфигуратор, расширения и внешние обработки, а прямое вмешательство в базу данных недопустимо.