Пытаюсь установить значение для текстового поля таблицы:
if (System.PromptForFileName(FileName, '*.*', '', "Выберите файл(ы)", '',false))
{
if (Assigned(FileName) && !IsEmptyValue(FileName.Value))
{
Control.DataField.Value = FileName.Value;
}
}
Выкидывает исключение о несовместимости типов. Это из-за разных форматов строк? Если так, то как выполнить преобразование?
Нравится
Возможно, причина в том, что в результате свойство FileName.Value содержит строку, разделённую символом '\', который в языке JScript является специальным.
Попробуйте так:
var FileName = System.CreateObject('TSObjectLibrary.Value'); if (System.PromptForFileName(FileName, '*.*', '', "Выберите файл(ы)", '',false)) { if (Assigned(FileName) && !IsEmptyValue(FileName.Value)) { Control.DataField.Value = FileName.Value.replace(/\\/g, '\\\\'); } }
Добавьте debugger; перед строкой Control.DataField.Value = FileName.Value.replace(/\\/g, '\\\\'); и посмотрите, какое значение принимает FileName.Value. Также проверьте, какого типа у Вас Control и какого Control.DataField (возможно, в датасете это поле имеет другой тип).
Необходимо смотреть удалённо. Вышлите, пожалуйста, параметры удалённого доступа на support@tscrm.com, как я уже писал по проблеме с напоминаниями.
Проблема действительно воспроизводится, но без .replace(/\\/g, '\\\\'). Если это выполнение добавить, у меня всё работало корректно.
Тем не менее, поскольку результат отображается с двумя слэшами, я заменил в коде это выражение на такое:
Control.DataField.Value = FileName.Value.toString();
Так тоже работает корректно.
Да, действительно, так и было.
Проблема была в том, что в запросе sq_OfferingC почему-то слетели поля LocalUrl..., GlobalUrl..., а также PublicInWeb, SpecialOffering и HotOffering. Не знаю, почему у меня проблема не воспроизвелась в первый раз. Сейчас должно работать нормально.