Я создал форму, в которой пользователь вводит значения, а затем нажимает «Добавить». Затем в форме создается таблица в поле Rich Text.
Это делается путем создания временного документа с элементом richtext на нем, экспортирования его через DXL, вставки таблицы в DXL в элемент richtext и импорта обратно. Затем я использую uidoc.ImportItem, чтобы скопировать таблицу из временного документа в свой uidoc.
Это прекрасно работает, и я довольно доволен собой. Кроме того, пользователь может «Добавить» дополнительные строки. Это делается путем удаления таблицы (с использованием Call uidoc.FieldSetText("table", "")
) и воссоздания таблицы с новыми значениями, как указано выше.
Однако каждая строка документа имеет две кнопки: «Изменить» и «Удалить», так что пользователь может либо редактировать строку, либо удалить ее после создания таблицы.
Пока я сосредотачиваюсь на кодировании «Удалить», и он работает. Однако, когда код достигает любого действия uidoc, например Call uidoc.FieldSetText("table", "")
или Call uidoc.EditGotoField("Table")
Я получаю ужасное сообщение «Ошибка - сценарий занят» в строке состояния, а при закрытии документа Notes вылетает.
Я предполагаю, что это вызвано тем, что кнопка думает, что находится в другом документе, поэтому, когда она перемещает фокус на поле в том, что она считает другим uidocument, это вызывает проблему.
Я пробовал несколько разных подходов, например. имея кнопку установить поля в NotesDocument, а затем обновить, используя скрытое значение для запуска updateTable Sub. Я также экспериментировал с запуском агента, но поскольку uidoc не был сохранен, я не могу получить session.documentcontext и, конечно, не могу получить доступ к пользовательскому интерфейсу в агенте.
Одна вещь, которую я еще не пробовал, - это заставить кнопку Удалить запускать команду формулы, которая вызовет обновление uidoc и отключит updateTable Sub из события PostRecalc.
Если у кого-то есть другие предложения, я был бы очень благодарен, поскольку это единственная проблема, которая не позволяет мне улучшить производительность одной из наших устаревших форм примерно на 1000%.