Встроенный язык программирования 1С:Предприятие
| Встроенный язык программирования 1С:Предприятие | |
|---|---|
| Класс языка | процедурный, предметно-ориентированный |
| Тип исполнения | предварительно компилируемый |
| Появился в | 1996 |
| Автор | 1С |
| Выпуск | 1С:Предприятие 8.3.23 |
| Тестовая версия | 1С:Предприятие 8.3.24 |
| Система типов | динамическая типизация |
| Основные реализации | 1С:Предприятие 7.0-8.x |
| Сайт | 1c-dn.com (англ.) |
Встроенный язык программирования 1С:Предприятие — язык программирования, который используется в семействе программ «1С:Предприятие». В версии 7.x являлся интерпретируемым языком высокого уровня. Интерпретация текста программного модуля в байт-код выполнялась в момент обращения к этому модулю в процессе работы, таким образом обычно интерпретировалась только часть текстов программных модулей (в версиях 7.7 и старше). Начиная с версии 8.х модули компилируются.
Средой исполнения языка является программная платформа «1С:Предприятие». Визуальная среда разработки («Конфигуратор») является неотъемлемой частью пакета программ «1С:Предприятие».
С 2017 года фирма 1С разрабатывает среду разработки EDT[1], основанную на eclipse.
Диалекты языка для платформ 1С седьмых версий (7.0, 7.5, 7.7) совместимы «снизу вверх» с незначительными исключениями. Языки для платформ 1С:7.х и 1С:8.х совместимы по основным операторам, но значительно отличаются в работе с прикладными объектами, вследствие чего перенос кода из 1С:7.х в 1С:8.х не имеет смысла.
Встроенный язык имеет много общих черт с другими языками, такими как Pascal, Java Script, Basic[2].
Платформой предоставляется фиксированный набор базовых классов, ориентированных на решение типовых задач прикладной области:
- Константа,
- Справочник,
- Документ,
- Журнал документов,
- Перечисление,
- Отчёт,
- Обработка
- План счетов и др.
На основании базовых классов средствами визуального конфигурирования можно создавать любое количество порождённых классов (возможность определить новый класс программно — отсутствует). Допускается только одна явная ступень наследования классов. Как правило, объекты порождённых классов представляют собой записи (или некоторые наборы записей) в базе данных. Такие классы образуют «Дерево метаданных». В терминах встроенного языка программирования 1С такие классы называются объектами метаданных.
Основными видами объектов метаданных являются: Справочники, Документы, Отчёты, Обработки, Планы видов характеристик, Планы счетов, Планы видов расчёта, Регистры сведений, Регистры накопления, Регистры расчёта, Бизнес-процессы, Задачи.
Поддерживаются русский и английский синтаксис команд.
Проекты на встроенном языке 1С:Предприятия называются конфигурациями. Распространение (продажа) и внедрение таких конфигураций — это основная коммерческая деятельность фирм-партнёров 1С.
История развития
См. 1С:Предприятие - История развития
Объектно-ориентированные диалекты
Существует несколько дополнительных компонентов, расширяющих основные классы, их свободное добавление и изменение; фирмой-разработчиком они не рекомендованы к использованию. Это означает, что фирма 1С и её франчайзи отказываются от какой-либо технической поддержки конфигураций, использующих такие компоненты.
Перфолента.NET
Объектно-ориентированная реализация компилятора 1С-подобного языка программирования, реализованная на платформе NET Framework. Из-за двухфакторной компиляции в машинный код работает примерно в 500 раз быстрее 1С, в 350 раз быстрее OneScript и в 90 раз быстрее Python [3]. Имеет современную IDE с подсветкой синтаксиса и поддержкой OneScript.
Пример программы на языке Перфолента.Net:
Программа ПриветМир
Процедура Старт
ВыводСтроки "Привет, Мир!"
ВводСтроки // используем как паузу, чтобы программа не закрылась
КонецПроцедуры
КонецПрограммы
1Script
Язык написания сценариев на языке 1С:8.х. Работает примерно в 2 раза быстрее оригинального языка 1С. Кросс-платформенный: поддерживает Windows, Linux (Debian и CentOS). В качестве среды разработки (IDE) могут использоваться VSCode или среду разработки Перфолента.NET.
1C++
Так компонента 1C++[4] расширяет язык 1С:7.х средствами полноценного объектно-ориентированного программирования. Её использование значительно расширяет возможности конфигурирования 1С. Это свободный программный продукт, распространяемый под лицензией GPL.
2С
Более того — существует полностью свободный проект 2C[5], не использующий каких-либо проприетарных модулей фирмы 1С или других производителей. Это переписанное «с нуля» свободно распространяемое под лицензией GPL расширяемое ядро 1С-подобной системы, в котором даже такие «встроенные объекты» 1C как справочники и регистры — переопределяемые прикладным программистом классы.
Язык платформы 2С проектировался с целью максимальной преемственности с существующими для 1С наработками, и является расширением базового языка 1С. Путём написания соответствующих базовых классов язык 2С может быть приближен как к 1С 7.7, так и к 1С 8.0, хотя 2С:Платформа и не может обеспечить 100 % автоматическую переносимость конфигураций[6] из той или иной версии 1С:Предприятия.
В настоящее время заброшен автором на этапе альфа-версии в начале 2006 года.
Пример программы
Пример вывода сообщения в специальное окно для версии 8.3:
Процедура ПриветМир()
Сообщить("Здравствуй, Мир!");
КонецПроцедуры
История развития встроенного языка
- 1999 — в «1С:Предприятии 7.7» появился полноценный встроенный язык, близкий по синтаксису к Pascal и BASIC.[7]
- 2003 — выпуск платформы «8.0»; добавлена объектная модель метаданных, запросный язык и поддержка транзакций.[8]
- 2013 — версия «8.3» принесла клиент‑серверную архитектуру, асинхронные вызовы и фоновое выполнение кода.[8]
- 2024 — в релизе 8.3.23 появилась экспериментальная поддержка WebAssembly‑модулей для расширения функциональности без внешних компонент.[9]
Синтаксические особенности
- Два полных диалекта — «русский» и «английский»; ключевые слова переводятся 1:1.[9]
- Динамическая типизация, но часть ошибок типов выявляется в момент компиляции.
- Управление памятью основано на подсчёте ссылок и сборщике циклических ссылок.
- Встроенные коллекции — 1C Массив, 1C ТаблицаЗначений, 1C Структура, 1C Соответствие.
- Разделение модулей на клиентские, серверные и общие позволяет оптимизировать распределённые вызовы.
Пример «Hello, World»
Процедура ПриСозданииНаСервере()
Сообщить("Привет, мир!");
КонецПроцедурыИсточник кода с пояснениями:[10]
Интеграция с другими технологиями
Платформа поддерживает взаимодействие со сторонним кодом через COM‑объекты, .NET‑компоненты, HTTP‑сервисы и встроенные вызовы JavaScript:
- С версии 8.3.16 можно выполнять функции JavaScript непосредственно из модуля и обратно передавать данные платформы.[11]
- Внешние компоненты на C++ или C# получают доступ к объектной модели через механизм «Add‑In».
Инструменты разработки
- Конфигуратор
Графическая IDE, поставляемая вместе с платформой; содержит компилятор, отладчик и редактор метаданных.[9]
- 1C
- Enterprise Development Tools
Кроссплатформенная среда на Eclipse, предназначенная для командной разработки, поддерживает Git и CI/CD‑процессы.[7]
- OneScript
Свободная CLI‑реализация языка, ориентированная на автоматизацию вне платформы и тестирование.[12]
Примечания
- ↑ Главная | 1C:Enterprise Development Tools. edt.1c.ru. Дата обращения: 17 августа 2021. Архивировано 17 августа 2021 года.
- ↑ Встроенный язык. v8.1c.ru. Дата обращения: 17 августа 2021. Архивировано 17 августа 2021 года.
- ↑ Почему язык программирования Перфолента работает намного быстрее, чем языки 1С и OneScript. perfolenta.net. Дата обращения: 27 января 2025.
- ↑ 1cpp. Дата обращения: 17 июня 2022. Архивировано 14 марта 2018 года.
- ↑ Проект GPL-2с. Дата обращения: 18 мая 2007. Архивировано 4 апреля 2007 года.
- ↑ Как перенести базу 1С в облако - подробная инструкция. Аренда 1С в облаке (18 октября 2018). Дата обращения: 24 октября 2019. Архивировано 24 октября 2019 года.
- ↑ 1 2 1C Enterprise script (англ.). 1C Developer Network. Дата обращения: 25 июля 2025.
- ↑ 1 2 История версий технологической платформы 1С:Предприятие. Ufa‑1C (12 октября 2020). Дата обращения: 25 июля 2025.
- ↑ 1 2 3 Встроенный язык. 1C‑Компания. Дата обращения: 25 июля 2025.
- ↑ Язык программирования 1С: пример кода и объяснение. Skypro Wiki. Дата обращения: 25 июля 2025.
- ↑ Interaction between the 1C Platform and JavaScript (англ.). 1C Developer Network (15 февраля 2023). Дата обращения: 25 июля 2025.
- ↑ Официальный сайт проекта OneScript. Дата обращения: 25 июля 2025.
Ссылки
- Встроенный язык - 1С:Предприятие 8. v8.1c.ru. Дата обращения: 23 апреля 2016.
- Объект конфигурации - 1С:Предприятие 8. v8.1c.ru. Дата обращения: 23 апреля 2016.