Як налаштувати девелопмент в Microsoft Dynamics 365 Business Central

В попередній статті я писала про те, як встановити Microsoft Dynamics 365 Business Central (БЦ) на свій комп’ютер. Прийшов час навчитися налаштовувати девелопмент для нього. Якщо ви не плануєте податися в програмісти і писати код, то, напевно, вам ці навички не знадобляться. Хоча, маючи встановлену версію Business Central On-Premise на своєму ПК, ви маєте знати, як підтримувати її роботу і відновлювати в разі чого, а це також буде описано в статті.

Уявімо, що ви вирішили стати Microsoft Dynamics 365 Business Central Developer і створювати різноманітні нові функціонали в Business Central, а також змінювати вже існуючі. Очевидно, для таких цілей вам знадобиться середовище розробки, а саме Visual Studio Code. Там відбувається написання коду, а потім – відправка його в систему БЦ.

Також вам доведеться познайомитися з мовою програмування AL. Порівняно з такими «монстрами», як Python, Java, C++ тощо, вона не є надто складною. Однак, особисто я вважаю, що для новачка в програмуванні ще легшою була мова C/AL, яка використовувалася в більш старих версіях Business Central (наприклад, в Microsoft Dynamics NAV). Причому я маю на увазі не стільки саму мову, скільки формат її подачі. В більш старих версіях ви могли зайти в середовище розробки і побачити всі об’єкти, що є в системі, а також переглянути код кожного об’єкта і відредагувати:

Це те, з чого складався  Microsoft Dynamics NAV і те, з чого зараз складається Microsoft Dynamics 365 Business Central, якщо мова йде про девелопмент. Однак тепер треба трохи заморочитися, щоб подивитися всі вже існуючі об’єкти і побачити код кожного з них. Крім того, те, що генерувалося системою автоматично, нині потрібно прописувати вручну. Саме ця різниця і робить розуміння сучасної версії системи дещо складнішим.

Я спеціально продемонструвала вам стару версію, щоб ви побачили, як вона виглядає «з середини». На малюнку вище показано:

  • Table – таблиці – те місце, де зберігаються дані,
  • Page – сторінки для відображення цих даних,
  • Report – звіти для звітування (насправді, не лише для звітування, але потім дізнаєтесь докладніше),
  • Codeunit (тут не буду перекладати) для написання коду,
  • Query – також для відображення даних та проведення різноманітних операцій, де не хочеться створювати нову таблицю,
  • XML Port для завантаження даних, наприклад, з файлів або інших зовнішніх ресурсів
  • MenuSuite для створення меню.

Не буду вдаватися в подробиці, адже тема нашої статті – не сам девелопмент, а лише його налаштування. Однак це була наглядна демонстрація для розуміння, оскільки вона частіше всього дуже допомагає на початкових етапах.

Етапи налаштування

Отже, почнемо ми зі встановлення Visual Studio Code (далі VSC), який можна скачати на цьому сайті

Думаю, як скачувати і встановлювати програму на комп’ютер, ви знаєте. Після встановлення потрібно відкрити VSC і зайти у розділ Extensions:

А далі обрати Install from VSIX:

Відкриється вікно для вибору файлу. Необхідно знайти і обрати файл ALLanguage.vsix, який знаходиться в папці, де було встановлено Business Central (звичайно, якщо ви встановлювали On-Premise, як показано в попередній статті):

Це розширення спеціально створене для написання коду в Microsoft Dynamics 365 Business Central. 

Наступним кроком буде створення свого першого проекту, що дозволить перевірити «коннект» VSC з Microsoft Dynamics 365 Business Central. Але не поспішайте радіти – це ще не означає, що ви все налаштували.

На відео нижче показано, як створити папку для свого нового проекту і базові файли, що в нього входять:

Тобто потрібно запустити команду AL Go!, далі прописати папку, куди буде збережено проект, і обрати Your Own Server.

Як ви вже, напевно, побачили, створилося 3 файли доступні для редагування. Перший з них має назву launch.json – тут налаштовуються властивості конекшену з БЦ: SaaS чи On Premise, tenant id, параметри входу в систему та інші речі, які поступово ви вивчите в процесі девелопменту. Файл app.json містить інформацію про те розширення, яке ви створюєте. Файл HelloWorld.al –  якраз те саме тестове розширення. Його VSC генерує сам, щоб можна було протестувати результати своїх налаштувань.

Спочатку пропишемо (або змінимо) дані в launch.json таким чином, щоб вони працювали для нашого випадку, а саме для On Premise версії системи, яка встановлена на нашому ПК. Отже, прописати потрібно наступне:

"server": "http://localhost:8080/BC230",
"serverInstance": "BC230",
"authentication": "Windows",
"port": 7049,

Якщо якісь не обведені мною параметри у вас відсутні або мають інші значення, то їх також потрібно змінити чи додати.

Далі відкриваємо файл app.json і додаємо в нього значення “target”: “OnPrem”:

Наступний крок може викликати деякий страх у новачків, які до цього рідко зустрічалися з командним рядком. Справа в тому, що тепер нам потрібно змінити налаштування у файлі конфігурації. В більш давніх версіях у користувачів була можливість зробити це у спеціальній програмі, яка дуже полегшувала всім життя. Називалася вона Business Central Administration Console і виглядала таким чином:

Джерело: yzhums.com

Проте кілька років тому цей інструмент прибрали і залишили Business Central Administration Shell (далі Shell), яка виглядає так:

Тому зараз вам доведеться познайомитися з цим загадковим чорним екраном.

Офіційна документація Microsoft (її на момент 9 лютого 2024 року, до речі, чомусь досі не відкоригували, залишивши інформацію про Business Central Administration Console) рекомендує змінити такі налаштування:

Тому відкриємо Business Central Administration Shell від імені адміністратора (знайти цей інструмент можна через пошук на вашому комп’ютері) і пропишемо наступні команди:

  1. Команду Set-NAVServerConfiguration BC230 -KeyName ExtensionAllowedTargetLevel -KeyValue OnPrem і натиснемо Enter.
  2. Далі команду Set-NAVServerConfiguration BC230 -KeyName DeveloperServicesEnabled -KeyValue true і натиснемо Enter
  3. Ну і нарешті команду Set-NAVServerConfiguration BC230 -KeyName EnableSymbolLoadingAtServerStartup -KeyValue true і теж натиснемо Enter.

Приклад того, як це має виглядати для випадку 1.:

Як ви помітили, у відповідь ви отримуєте наступні повідомлення:

WARNING: The new settings value will not take effect until you stop and restart the service.

Це абсолютно нормально. Для того, щоб ці налаштування були додані, нам необхідно перезавантажити інстанс. Що таке інстанс? Це сервіс, за допомогою якого різні типи клієнтів Microsoft Dynamics 365 Business Central взаємодіють з сервером Microsoft Dynamics 365 Business Central SQL Server. Щоб його перезавантажити, в Shell внесемо наступну команду:

Set-NAVServerInstance BC230 -Restart -Verbose 

І далі може статися «трабл», який часом змушує користувачів звертатися за допомогою до Google:

Тобто помилка звучатиме так:

ServerInstance ‘MicrosoftDynamicsNavServer$BC230’ failed to reach  status ‘Running’ on this server due to the following error: ‘Cannot start the service.’. Additional information may be in the event log of the server

Для того, щоб поглянути логи помилки, потрібно скористатися інструментом, що називається Event Viewer. Це стандартна програма Windows, яка повинна бути у вас на комп’ютері. Коли відкриваєш її, то бачиш навіть не одну, а кілька помилок. Перша з них звучить так:

Failed to start service with CLR type

Документація Microsoft дає пояснення цій помилці і говорить, що ми ніби-то пробували редагувати файл конфігурації напряму, не використовуючи Business Central Administration Shell, однак ми з вами знаємо, що це неправда:

Як же вийти з такої біди? Microsoft дає відповідь на це питання за посиланням вище. Для початку запустимо команду:

Get-NAVServerInstance BC230

завдяки якій нам вдасться дізнатися ServiceAccount, а потім запустимо ще одну, що виглядатиме наступним чином:

netsh http add urlacl url=http://+:7049/BC230/dev/ user="NT AUTHORITY\NETWORK SERVICE"

де NT AUTHORITY\NETWORK SERVICE – це значення, що висвітилося на екрані після виконання попередньої команди.

Однак і тут існує вірогідність появи нової помилки:

Cannot create a file when that file already exists.

Тому, якщо ви таке побачили, потрібно видалити файл і створити його заново. Тобто запустити команду

netsh http delete urlacl url=http://+:7049/BC230/dev/

і потім знову

netsh http add urlacl url=http://+:7049/BC230/dev/ user="NT AUTHORITY\NETWORK SERVICE"

Ну і, нарешті, прийшов час ще раз спробувати запустити інстанс. Для цього скористаємося командою:

Set-NAVServerInstance BC230 -Start –Verbose

І побачимо перед собою те довгоочікуване повідомлення про успішний запуск нашого інстансу:

Це ще не все. Далі необхідно завантажити «символи», або, як їх називають, «Symbols». Без них писати код буде неможливо, оскільки VSC не знатиме, що за об’єкти ви намагаєтеся редагувати в системі і, взагалі, не сприйматиме ваші команди адекватно.

Щоб це зробити, повернемося у VSC і, як на самому початку, перейдемо в розділ Show and Run Commands, а далі оберемо пункт AL: Download Symbols:

Коли ви отримаєте повідомлення про успішне завантаження, можна почати тестувати наші налаштування. Для цього перейдіть у файл HelloWorld.al

Перед вами приклад простого розширення, яке додає певний функціонал до вже існуючого в БЦ. Раніше девелопери могли редагувати об’єкти, написані компанією Microsoft, і дописувати туди що завгодно. Тепер, щоб це зробити, їм доводиться створювати так звані розширення (екстеншини).

Це досить простий код, який додає повідомлення «App published: Hello world» на тригер для відкриття сторінки клієнтів («Customer List»). Щоб подивитися, як воно працює, відправимо даний код в систему:

Система почне реагувати на вашу дію. Спочатку з’явится повідомлення у VSC:

А потім відкриється браузер (відкриється сам) на сторінці Customers List і там зявиться той меседж, який був прописаний в коді:

Можливо тут не очевидно, але покажу за допомогою відео:

Тобто при відкритті сторінки з клієнтами зявилося повідомлення:

‘App published: Hello world’

Я вас вітаю! Щойно ви запустили першу програму мовою програмування AL в Microsoft Dynamics 365 Business Central. Дуже сподіваюся, що на цьому ви не зупинитесь і продовжите розвиватися. Тут вам можуть допомогти спеціальні навчальні матеріали, створені Microsoft. Наприклад, цей.

Також ви можете пошукати відео-уроки в YouTube і заглянути на Udemy, де є чимало корисних курсів. Бажаю вам наполегливості і віри в крутий результат!