Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Dexterity предназначен для создания приложений, которые можно легко преобразовать и настроить, не требуя изменений или доступа к фактическому исходному коду. Чтобы обеспечить эту гибкость, необходимо убедиться, что любой текст, который может видеть пользователь, не жестко закодирован в скрипты.
Область применения: Microsoft Dynamics GP
Исходный номер базы знаний: 943178
Дополнительная информация
Так как жестко закодированная строка в скрипте не может быть изменена без изменения самого исходного кода, Dexterity создает предупреждение компилятора литеральных строк при использовании жестко закодированной строки в скрипте. Dexterity позволяет создать отдельный ресурс сообщения, который можно использовать вместо жестко закодированных строк или литеральной строки. Сообщения в разделе "Базовые ресурсы " можно найти в окне обозревателя ресурсов Dexterity.
При создании нового сообщения необходимо указать идентификатор сообщения. Затем необходимо указать текст сообщения. Чтобы убедиться, что сообщения извлекаются при создании файла блока распространения, идентификатор сообщения должен быть 22 000 или больше для стороннего продукта.
Вы можете получить сообщения в коде, используя функцию getmsg()
. В сообщение можно также внедрить заполнители. Заполнители можно использовать для замены строк, основанных на данных или вычисляемых значениях. Эти замещающие символы или маркеры замены отображаются в виде %1, %2, %3 и т. д. При использовании меток или маркеров замены можно воспользоваться командой, чтобы заменить эти метки одним или несколькими значениями.
Вы также можете использовать специальный маркер вместе с сообщениями для автоматического отображения имени продукта, основанного на идентификаторе продукта, который отображается в файле запуска Dynamics.set. Если вы включаете @PROD<ProdID>@
маркер в сообщение, имя продукта отображается в сообщении. Например, следующий код автоматически использует этот тип маркера:
local string l_message;
l_message = getmsg(22000) {@PROD0@ cannot find customer %1.};
substitute l_message, 'Customer Number';
warning l_message;
Для первого клиента в организации занятий этот код приводит к отображению следующего сообщения:
Microsoft Dynamics GP не может найти AARONFIT0001 клиента.
При написании кода, содержащего сквозной SQL-код, скомпилированный во время выполнения код SanScript, регистрации триггеров между словарями, макросы, созданные во время выполнения, или предупреждающие сообщения для разработчика, можно использовать жестко заданные строки без получения предупреждений компилятора о литеральных строках. В этой ситуации эти жестко закодированные строки не переводятся. Конечный пользователь не видит эти строки.
В этой ситуации можно использовать специальную директиву pragma pre-компилятора для включения и отключения предупреждений. Для этого используйте следующие строки до и после допустимых литеральных строк в коде:
pragma(disable warning LiteralStringUsed);
{turn off compiler generated string warnings}
if Trigger_RegisterProcedure(script 'Add_Successful_Login_Record', TRIGGER_AFTER_ORIGINAL, script Set_Environment) <> SY_NOERR then
warning "Log on procedure trigger registration failed.";
end if;
pragma(enable warning LiteralStringUsed);
{turn on compiler generated string warnings}
Примечание.
Если вы не включите предупреждения до конца скрипта, компилятор отобразит следующее сообщение:
Обратите внимание: предупреждение "LiteralStringUsed" было отключено и не было включено снова.
Если у вас есть другие строки, которые не отображаются пользователю и не требуют перевода, рекомендуется добавить эти строки в качестве констант на уровне формы или на глобальном уровне. Затем можно использовать константу в скрипте без создания предупреждения.
Последний вариант — использовать параметр Dex.ini для отключения предупреждений для всех сценариев. Хотя этот параметр предотвращает предупреждения о литеральных строках, этот параметр не рекомендует другим пользователям обрабатывать литеральные строки в скриптах в соответствии с установленными рекомендациями. Мы рекомендуем использовать другие методы, описанные в этой статье, а не использовать этот параметр. Ниже приведен параметр:
CompilerWarningLevel=2
Ссылки
Дополнительные сведения о команде getmsg()
и команде замены в справочнике по SanScript Dexterity см. в главе 18: Сообщения (том 1) руководства программиста Dexterity.
Дополнительные сведения о том, как использовать Dexterity для написания международного и многоязычного кода в Microsoft Dynamics GP, см. в руководствах по написанию кода, который можно легко перевести и который можно запускать на нескольких языках в Dexterity в Microsoft Dynamics GP.