Оригинал на GitHub
Вопрос
Здравствуйте! Подскажите пожалуйста, возможно ли в поле тип - селект, при выборе определенного значения, открыть модальное окно с выбором значения, и после сохранения этого значения, меняется значение из селекта. К примеру, у меня есть некая запись, где поле селект, отвечает за статус: "Новая", "Завершена", "На оплате". Если я меняю статус с "Новая" -> "На оплате", то не менять значение у текущей записи, а вывести модальное окно, где я выбираю некий заказ и сохраняю, а после этого, только меняется значение текущего поля. Соответственно, если я закрываю модалку, то значение не меняется.
Ответ
Действия в Тотум срабатывают, когда значение изменилось. То есть, если изменили "Заявка" -> "На оплате", то сработал триггер. Нельзя поставить на паузу цепочку действий до совершения действия пользователем где-то в окне и т.п.
Для выполнения действий с промежуточными настройками используются дополнительные кнопки, инициирующие действие открывающее окно из которого потом действием меняется статус. Кнопку можно добавить в контекстное меню по правой кнопке мыши поля со статусами.
Если у вас комбинированный селект, то есть, какие-то статусы ставяться руками, а какие-то через промежуточные действия, то необходимо в коде Селекта сделать список статусов, достпных к установке напрямую и добавить к нему отображение текущего значения поля.
Пример кода-селекта в поле Селект со статусами:
=: selectRowListForSelect(table: 'statuses'; field: 'status_name'; where: 'id' = $add)
add: listAdd(list: $direct_statuses; item: $#nfv)
direct_statuses: select(table: 'statuses'; field: 'status_name'; where: 'сan_change_directly' = true)
А остальные статусы устанавливать через промежуточную временную таблицу, которую открывать по кнопке в контекстном меню.
Пример кода-форматирования в поле со статусами:
p1=: panelButton(code: $code; text: "Set special status"; refresh: true)
```code:totum
=: linkToDataTable(table: 'tmp_table'; title: "Title for tmp window"; params: $row; refresh: true)
row: rowCreate(field: 'h_row_id' = #id)
```