Создание предзаполненного объекта
Помогите разобраться, пожалуйста.
Задача: в Объекте№1 есть дочерние Объекты№2 (в виде плоского реестра). Объект№2 довольно сложный, там много таблиц (можно сказать анкет). На основании данных Объекта№1 я понимаю как предзаполнить Объект№2 (заполняем списки дочерних объектов, значения пока оставляем пустыми).
Какая реализация:
В Объекте2 на событие "После открытия" повесил алгоритм. Внутри алгоритма смотрю на Объект№1 и на основании его данных формирую дочерние объекты по отношению к Объекту№2.
Примерно такими циклами:
for (def quest : opros.Вопросы опросника){
def patquest = newInstance(ТСТ_Ответ) //создали вопрос в опроснике
patquest.setAttr(Вопрос опросника, quest) // задали одно поле (ссылка на оригинальный вопрос)
patquest.setAttr(Опросник пациента, newopros) // задали второе поле, тоже ссылка на объект
save(patquest) //сохранили всё это добро
sendPopUpMsg(3, "Сохранили вопрос опросника") //просигнализировали
}
Весь код не привожу, он довольно большой.
В конце алгоритма делаю save(currentObject())
И вроде бы всё должно быть хорошо. Чего я ожидаю от такой конфигурации
1. При нажатии кнопки "Добавить" внутри Объекта1 у меня появляется новое окно с пустым Объектом2 (новой сущностью)
2. Пробегает мой алгоритм, всплывают подсказочки
3. Я вижу наполненный Объект2
4. Дозаполняю значения опросников, нажимаю "Сохранить"
5. Работа завершена
Что в реальности?
1. После того как алгоритм отработал появляется окно "Вы хотите закрыть текущее окно?". Не хотелось бы чтобы такая штука всплывала. ИИ-помощник пишет что надо в конце алгоритма вставить this.setNavigationWarning(false); но алгоритм подсвечивает неправильный синтаксис
2. Все регистры не заполнены. Нажатие кнопки "Обновить" ничего не меняет. Помогает только закрыть объект и открыть заново. Тут помощник пишет про this.refreshRegistry(); но тут туже ругань
Подскажите, пожалуйста, как решить указанные проблемы
Комментарии
Добрый день!
Проверьте вносятся ли какие-либо изменение в
patquestпосле представленного кода, сохраните его повторно функцией save(). Явно есть измененный объект, который не сохраняется. (Это не currentObject() т.к. он сохраняется в самом конце)Добавьте после последнего save() функцию
refreshилиrefreshVisualItemв зависимости от реализацииhttps://docs.greendata.ru/platform/ru/refresh.html
https://docs.greendata.ru/platform/ru/refreshvisualitem.html
Сейчас помощник рассчитан на прикладную логику, нежели на написание алгоритмов

Рекомендуем использовать функции указанные в блоке "Инструменты" и wiki
https://docs.greendata.ru/platform/ru/general_functions_or_algorithm_operators.html
Спасибо!
Успел решить проблему написанием отдельного алгоритма и заведением его на отдельную кнопку внутри Объекта№1.