🍬 RMG 365 | Dev Tools

Набор инструмСнтов Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ELMA365

Установка ΠΈ настройка Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Π’ настоящий ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ являСтся Π½Π΅ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΈ Π½Π΅ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Π² Store

ΠΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ вСрсия для установки - rmg_dev_tools_20250423.e365

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ осущСствляСтся Π½Π° Π΄ΠΎΠ±Ρ€ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎΠΉ основС Π² ΠΊΠ°Π½Π°Π»Π΅ Telegram

НаcΡ‚Ρ€ΠΎΠΉΠΊΠΈ:

image.png

Π³Π΄Π΅:

Кнопка ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности Π²Π²ΠΎΠ΄Π° ΠΊΡ€Π΅Π΄ΠΎΠ² Π²Ρ‹ΡˆΠ΅:

image.png


Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² скриптах

Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² скриптах

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π·ΠΎΠ²Π° Π² скриптС Ρ‡Π΅Ρ€Π΅Π· Imports ΠΈ Namespace.action

Доступно с вСрсии 2024.2

Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ с использованиСм Imports:

async function action(): Promise<void> {
    const message = `${Context.data.__item!.namespace}.${Context.data.__item!.code}.${Context.data.__item!.id}`;
    const details = JSON.stringify((<any>Context).json(), null, 2);
    Imports?.devtools?.action?.save_to_log?.call({message: message, details: details});
}

НуТно ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ псСвдоним, Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это devtools:

image.png

Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² скриптах

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π·ΠΎΠ²Π° Π² скриптС

Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ поддСрТиваСтся ΠΊΠ°ΠΊ Π² клиСнтских, Ρ‚Π°ΠΊ ΠΈ сСрвСрных скриптах.

На Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°ΠΌΠΈ Π±Ρ‹Π» ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ СдинствСнный способ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Он Π½Π΅ являСтся изящным, Π½ΠΎ "Π½Π° Π±Π΅Π·Ρ€Ρ‹Π±ΡŒΠ΅ ΠΈ Ρ€Π°ΠΊ Ρ‰ΡƒΠΊΠ°". ΠžΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ спасибо Π·Π° идСю Раису.

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² Π»ΠΎΠ³ (ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ систСмных справочников) ΠΏΠΎΠΏΠ°Π»Π° информация, Π² скриптС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Π½Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

const message = 'Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΠ· сСрвСрного скрипта';
const details = 'ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π²Ρ‹Π·ΠΎΠ²Π° логирования ΠΈΠ· сСрвСрного скрипта Π² ' + Date().toString();
await System.templater.generateText(Context, `{ExtText('82fe0bc6-0564-4b8a-a7d4-4c136cf8a949', 'logger', '${message}', '${details}')}`);

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ выполнСния Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

image.png

image.png

Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² скриптах

Π›ΠΎΠ³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ΅ событий

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅Β  приходят Π² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ событий Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

async function action(): Promise<void> {
    const message = 'Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎ записи входящСго Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€Π°';
    const details = JSON.stringify((<any>Context).json(), null, 2);
    await System.templater.generateText(Context, `{ExtText('82fe0bc6-0564-4b8a-a7d4-4c136cf8a949', 'logger', '${message}', ${details}')}`);
}

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅, Π² Π»ΠΎΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ информация:

image.png

image.png

ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ Ρ€Π΅ΠΆΠΈΠΌΠ° окруТСния

Π§Ρ‚ΠΎΠ±Ρ‹ Π² своих Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ… ΠΏΠΎΠ½ΡΡ‚ΡŒ Π² ΠΊΠ°ΠΊΠΎΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ систСма Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² скриптах Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄:

let env_mode = 'Production';
const result = await Imports?.devtools?.action?.env_mode?.call( { for_service: true } )
if (result?.mode)
        env_mode = result.mode;

for_service ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰ΡΡ‚ΡŒ Π»ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 2 Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°: Staging ΠΈΠ»ΠΈ Production (Development Π½Π΅ возвращаСтся, Ρ‚.ΠΊ. Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ для ΠΎΡ‚Π»Π°Π΄ΠΊΠΈ), Ссли Π½Π΅ ΡƒΠΊΠ°Π·Π°Π½ΠΎ ΠΈΠ»ΠΈ false, Ρ‚ΠΎ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ всС значСния согласно настроСк модуля.

devtools для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° ΡƒΠΊΠ°Π·Π°Π½ для ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΈ задаСтся здСсь:

image.png