Создание предзаполненного объекта

Помогите разобраться, пожалуйста.
Задача: в Объекте№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

    ИИ-помощник пишет что надо в конце алгоритма вставить this.setNavigationWarning(false)
    Тут помощник пишет про this.refreshRegistry(); но тут туже ругань

    Сейчас помощник рассчитан на прикладную логику, нежели на написание алгоритмов
    Рекомендуем использовать функции указанные в блоке "Инструменты" и wiki
    https://docs.greendata.ru/platform/ru/general_functions_or_algorithm_operators.html

  • Спасибо!
    Успел решить проблему написанием отдельного алгоритма и заведением его на отдельную кнопку внутри Объекта№1.

Войдите или Зарегистрируйтесь чтобы комментировать.