π¬ RMG 365 | Dev Tools
ΠΠ°Π±ΠΎΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ° ELMA365
- Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ΅Π½ΠΈΡ
- ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ
- ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π° Π² ΡΠΊΡΠΈΠΏΡΠ΅ ΡΠ΅ΡΠ΅Π· Imports ΠΈ Namespace.action
- ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π° Π² ΡΠΊΡΠΈΠΏΡΠ΅
- ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ
- ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΈ Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΡΠ΅ΡΠ΅Π½ΠΈΡ
Π Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π΅ ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΈ Π½Π΅ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Π² Store
ΠΠΊΡΡΠ°Π»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ Π΄Π»Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ - rmg_dev_tools_20250423.e365
ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π° Π΄ΠΎΠ±ΡΠΎΠ²ΠΎΠ»ΡΠ½ΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π΅ Π² ΠΊΠ°Π½Π°Π»Π΅ Telegram
ΠΠ°cΡΡΠΎΠΉΠΊΠΈ:
Π³Π΄Π΅:
- ΠΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ - ΡΠ΅ΠΆΠΈΠΌ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ (ΠΊΡΠΎΠΌΠ΅ Production Π±ΡΠ΄Π΅Ρ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ Π²Π²Π΅ΡΡ
Ρ ΡΡΡΠ°Π½ΠΈΡΡ). ΠΠΎΡΡΡΠΏΠ½ΡΠ΅Β Π·Π½Π°ΡΠ΅Π½ΠΈΡ:
- Development
- Testing
- Stage
- PreProd
- Production
- ΠΡΠΎΡΠΌΠΎΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² - Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΏΡΠ΅Π΄ΠΏΡΠΎΡΠΌΠΎΡΡ Π΄Π»Ρ ΡΠ°ΠΉΠ»ΠΎΠ² ΡΠΈΠΏΠ° XML ΠΈ JSON.
- ΠΠ΄ΡΠ΅Ρ ELMA365 ΠΈ Π’ΠΎΠΊΠ΅Π½ ELMA365 - ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΊΠ°ΠΊ Ρ Π΅Π»ΠΏΠ΅Ρ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° Web API.
- ΠΠΎΠ³ΠΈΠ½ ELMA365 ΠΈ ΠΠ°ΡΠΎΠ»Ρ - ΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ Π²ΡΠ·ΠΎΠ²Π° "ΡΡΡΠ΅ΠΊ" ΡΡΠΎΠ½ΡΠ° ΠΎΡ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΠ½Π΅ΠΊΡΠ΅Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ
ΠΠ½ΠΎΠΏΠΊΠ° ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ Π²Π²ΠΎΠ΄Π° ΠΊΡΠ΅Π΄ΠΎΠ² Π²ΡΡΠ΅:
ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ
ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π° Π² ΡΠΊΡΠΈΠΏΡΠ΅ ΡΠ΅ΡΠ΅Π· 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:
ΠΡΠΈΠΌΠ΅Ρ Π²ΡΠ·ΠΎΠ²Π° Π² ΡΠΊΡΠΈΠΏΡΠ΅
ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π² ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΈΡ , ΡΠ°ΠΊ ΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ½ΡΡ ΡΠΊΡΠΈΠΏΡΠ°Ρ .
ΠΠ° ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π½Π°ΠΌΠΈ Π±ΡΠ» ΠΎΠ±Π½Π°ΡΡΠΆΠ΅Π½ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ ΡΠΏΠΎΡΠΎΠ± Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ. ΠΠ½ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ·ΡΡΠ½ΡΠΌ, Π½ΠΎ "Π½Π° Π±Π΅Π·ΡΡΠ±ΡΠ΅ ΠΈ ΡΠ°ΠΊ ΡΡΠΊΠ°". ΠΡΠ΄Π΅Π»ΡΠ½ΠΎΠ΅ ΡΠΏΠ°ΡΠΈΠ±ΠΎ Π·Π° ΠΈΠ΄Π΅Ρ Π Π°ΠΈΡΡ.
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ Π² Π»ΠΎΠ³ (ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΠΈΠΊΠΎΠ²) ΠΏΠΎΠΏΠ°Π»Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π² ΡΠΊΡΠΈΠΏΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΠ·Π½Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
const message = 'Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠ· ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ°';
const details = 'ΠΡΠΎΠ²Π΅ΡΠΊΠ° Π²ΡΠ·ΠΎΠ²Π° Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈΠ· ΡΠ΅ΡΠ²Π΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΊΡΠΈΠΏΡΠ° Π² ' + Date().toString();
await System.templater.generateText(Context, `{ExtText('82fe0bc6-0564-4b8a-a7d4-4c136cf8a949', 'logger', '${message}', '${details}')}`);
Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅:
ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ΅ ΡΠΎΠ±ΡΡΠΈΠΉ
ΠΠ»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅Β ΠΏΡΠΈΡ ΠΎΠ΄ΡΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊ ΡΠΎΠ±ΡΡΠΈΠΉ Π² ΠΌΠΎΠ΄ΡΠ»Π΅, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΊΠΎΠ΄:
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}')}`);
}
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, Π² Π»ΠΎΠ³Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ:
ΠΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌΠ° ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ
Π§ΡΠΎΠ±Ρ Π² ΡΠ²ΠΎΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡΡ ΠΏΠΎΠ½ΡΡΡ Π² ΠΊΠ°ΠΊΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π² ΡΠΊΡΠΈΠΏΡΠ°Ρ Π²ΡΠ·Π²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄:
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 Π΄Π»Ρ ΠΈΠΌΠΏΠΎΡΡΠ° ΡΠΊΠ°Π·Π°Π½ Π΄Π»Ρ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΠΈ Π·Π°Π΄Π°Π΅ΡΡΡ Π·Π΄Π΅ΡΡ: