Открыть сервис

C/AL

C/AL (Client/server Application Language) — это язык программирования, разработанный компанией Microsoft для создания бизнес-логики в системах управления ресурсами предприятия (ERP) на платформе Microsoft Dynamics NAV (ранее Navision). C/AL является интерпретируемым языком высокого уровня, ориентированным на работу с базами данных и реализацию алгоритмов обработки финансовых, складских, производственных и других бизнес-процессов. С 2018 года, с выходом Dynamics 365 Business Central, язык C/AL постепенно вытесняется новым языком AL (Application Language), однако значительная часть существующих решений по-прежнему написана на C/AL.

История

Происхождение

Язык C/AL был создан в 1990-х годах датской компанией Navision Software A/S (основана в 1984 году). Изначально он назывался просто «C/AL» и использовался в ERP-системе Navision. После приобретения Navision корпорацией Microsoft в 2002 году система была переименована в Microsoft Dynamics NAV, а язык C/AL остался основным инструментом разработки.

Развитие

На протяжении 2000-х годов C/AL развивался параллельно с платформой Dynamics NAV. В версиях NAV 2009, 2013, 2015, 2016 и 2018 вносились изменения в синтаксис, добавлялись новые типы данных и функции. В 2018 году Microsoft выпустила Dynamics 365 Business Central — облачную версию системы, где основным языком стал AL. C/AL объявлен устаревшим, но поддержка существующих проектов на нём сохраняется.

Синтаксис и особенности

Типы данных

C/AL поддерживает следующие основные типы данных:

  • Text — строка символов (до 250 символов в стандартной реализации, до 1024 в расширенной).
  • Code — строка, содержащая только буквы и цифры.
  • Integer — целое число (32-битное).
  • Decimal — десятичное число с фиксированной точностью.
  • Boolean — логическое значение (TRUE/FALSE).
  • Date — дата.
  • Time — время.
  • DateTime — дата и время.
  • Record — ссылка на запись в таблице базы данных.
  • RecordID — идентификатор записи.

Операторы

Язык включает стандартные арифметические (+, -, *, /, MOD), логические (AND, OR, NOT) и операторы сравнения (=, <>, <, >, <=, >=). Также поддерживается конкатенация строк с помощью оператора +.

Управляющие конструкции

  • IF ... THEN ... ELSE — условный оператор.
  • CASE — оператор выбора.
  • FOR ... TO ... DO — цикл с фиксированным числом итераций.
  • WHILE ... DO — цикл с предусловием.
  • REPEAT ... UNTIL — цикл с постусловием.
  • EXIT — досрочный выход из цикла или функции.

Функции и процедуры

C/AL поддерживает создание пользовательских функций (процедур) с параметрами и возвращаемыми значениями. Функции могут быть локальными (внутри объекта) или глобальными (доступными из других объектов). Стандартная библиотека включает множество встроенных функций для работы с базами данных, строками, числами, датами и бизнес-логикой.

Работа с базой данных

Основная особенность C/AL — тесная интеграция с реляционной базой данных. Язык позволяет:

  • Создавать, читать, обновлять и удалять записи (CRUD-операции).
  • Использовать фильтры и сортировку.
  • Выполнять транзакции (COMMIT, ROLLBACK).
  • Работать с временными таблицами и представлениями.

Объекты в C/AL

Таблицы (Table)

Таблицы — это основные объекты для хранения данных. Каждая таблица содержит поля (колонки) и ключи (индексы). В C/AL код пишется непосредственно в триггерах таблицы (например, OnInsert, OnModify, OnDelete) для реализации бизнес-правил.

Страницы (Page)

Страницы — это пользовательский интерфейс для отображения и редактирования данных. В C/AL код может быть привязан к событиям страницы (OnOpenPage, OnClosePage, OnAction) для обработки действий пользователя.

Отчёты (Report)

Отчёты генерируют печатные формы или электронные документы. В C/AL реализуется логика выборки данных, расчётов и форматирования.

Codeunit

Codeunit — это модуль, содержащий только логику (без пользовательского интерфейса). Используется для реализации бизнес-процессов, вызовов API, интеграций.

XMLport

XMLport — объект для импорта и экспорта данных в формате XML.

Query

Query — объект для выполнения сложных SQL-запросов к базе данных.

Применение

Разработка ERP-систем

C/AL применяется для настройки и расширения функциональности Microsoft Dynamics NAV. С его помощью реализуются:

Интеграция с другими системами

C/AL позволяет подключать Dynamics NAV к внешним системам через веб-сервисы (SOAP, REST), обмен файлами (CSV, XML) и прямые вызовы COM-объектов.

Примеры кода

Пример простой функции на C/AL, вычисляющей сумму двух чисел: `` PROCEDURE AddNumbers(Number1 : Integer; Number2 : Integer) : Integer BEGIN EXIT(Number1 + Number2); END; ``

Пример обработки события вставки записи в таблицу: `` OnInsert() BEGIN IF "Total Amount" = 0 THEN "Total Amount" := "Unit Price" * "Quantity"; INSERT; END; ``

Преимущества и недостатки

Преимущества

  • Простота — синтаксис близок к Pascal, легко изучается.
  • Интеграция с базой данных — прямой доступ к данным без написания SQL-запросов.
  • Богатая стандартная библиотека — множество готовых функций для бизнес-задач.
  • Многолетняя поддержка — большое количество готовых решений и сообществ разработчиков.

Недостатки

  • Устаревание — Microsoft прекратила развитие C/AL в пользу AL.
  • Ограниченная производительность — интерпретируемый язык медленнее компилируемых.
  • Отсутствие поддержки современных парадигм — нет объектно-ориентированного программирования, лямбда-выражений, асинхронности.
  • Сложность отладкиотладка возможна только в среде разработки Dynamics NAV.

Переход на AL

С 2018 года Microsoft рекомендует использовать язык AL для разработки в Dynamics 365 Business Central. AL — это современный, компилируемый язык, основанный на C/AL, но с улучшенным синтаксисом, поддержкой модульности, расширений (extensions) и интеграцией с Visual Studio Code. Существующий код на C/AL может быть перенесён в AL с помощью инструментов конвертации, однако требуется ручная доработка.

Интересные факты

  • Название C/AL расшифровывается как «Client/server Application Language», что подчёркивает его изначальную архитектуру — клиент-серверное взаимодействие.
  • В версиях Dynamics NAV до 2009 года использовался классический клиент (WinForms), а начиная с NAV 2009 — веб-клиент и клиент для Windows.
  • Язык C/AL не является объектно-ориентированным, но поддерживает наследование через триггеры и события.
  • Крупнейшие российские компании, использующие Dynamics NAV с C/AL, включают розничные сети, производственные предприятия и логистические операторы.

Источники

  • Microsoft Dynamics NAV 2018 Developer Guide (Microsoft Press, 2018).
  • Документация Microsoft по языку C/AL (MSDN, 2009–2018).
  • «Разработка в Microsoft Dynamics NAV» (А. В. Громов, 2015).
  • Статьи на портале Dynamics User Group (DYNAMICSUSERGROUP.COM).
  • Справочник по функциям C/AL (Microsoft Dynamics NAV Help).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →