У меня есть пользовательский элемент управления с полем, в котором пользователь вводит идентификатор документа (не идентификатор заметки или UNID, просто уникальный номер). Этот источник данных называется document1. Когда они выходят из поля, я выполняю поиск и отображаю либо документ с этим идентификатором, либо новый документ в элементе управления extlib Dialog (источник данных bundleDoc). После сохранения bundleDoc я хочу обновить поле журнала в document1, чтобы указать, что документ пакета был добавлен.
Я могу сохранить bundleDoc и закрыть (скрыть) диалоговое окно, но код моей кнопки «Сохранить и закрыть» в диалоговом окне не может «увидеть» документ1. Я не могу ссылаться на него, используя document1.getItemValueString или getComponent. GetItemValueString возвращает пустую строку, а getComponent выдает ошибку, поскольку возвращаемое значение равно нулю.
Я бы выложил изображение, чтобы помочь визуально, но у меня пока недостаточно репутации. :(
Что мне не хватает? Разве я не могу получить доступ к document1 из диалогового элемента управления, поскольку он находится на том же XPage?
ОБНОВЛЕНИЕ: Два поля в диалоговой форме имеют вычисленные значения по умолчанию, которые используют getComponent для получения своих значений из document1. Таким образом, по крайней мере, когда диалог загружен, он может видеть document1. Кроме того, bundleDoc не определяется как источник данных для диалогового элемента управления. Я попробую это завтра, чтобы увидеть, если это что-то меняет.
ОБНОВЛЕНИЕ 2: Все еще недостаточно репутации, чтобы разместить фотографию, но вот код. Это один пользовательский элемент управления, который содержит диалоговый элемент управления. document1 определен как источник данных для пользовательского элемента управления, а bundleDoc определен как источник данных для панели в диалоговом элементе управления, который содержит таблицу полей для документа комплекта.
Поле BundleID в диалоговом элементе управления имеет вычисленное значение по умолчанию, используя это:
if (bundleDoc.isNewNote()) {
getComponent("inputBundleID").getValue();
} else {
bundleDoc.getItemValueString("BundleID");
}
Формула для StorageLocationID похожа, за исключением того, что компонент является inputStorageTrayID.
Это код кнопки «Сохранить и закрыть»:
bundleDoc.save();
var newArr = new Array(document1.getItemValue("WorkLog"));
newArr.push("Added bundle " + document1.getItemValueString("BundleID") + " - " + session.getCommonUserName());
document1.setValue("WorkLog",newArr);
document1.save();
getComponent("dialog1").hide();
Ошибка возникает в строке document1.save, но она не получает BundleID из document1 (я установил для переменной sessionScope значение newArr, и он показал «Добавленный пакет - Аноним».