Заполнение значений по умолчанию в режиме создания новых элементов в форме
есть форма с установленным фильтром
FORM formDeliveryFact
OBJECTS calcTask = CalcTask PANEL
OBJECTS s = CubeDeliveryFact
PROPERTIES newDeliveryFact(calcTask)
...
FILTERS (task(calcTask) = task(s) OR NOT task(s) )
AND calc(calcTask) = calc(s)
при создании нового элемента я запускаю действие
newDeliveryFact 'Добавить' (calcTask){
NEW nC = CubeDeliveryFact {
task(nC) <- Calc.task(calcTask);
calc(nC) <- Calc.calc(calcTask);
}
}
При этом есть проблема при вставке copy-past несколько строк - если строк больше чем на экране - без фильтров автоматически заводятся новые строки, а с фильтром то ли не заводятся то ли значения по умолчанию пустые и новые записи выпадают из зоны видимости фильтра.
Можно было бы триггером заполнять - но тут нужно значение calcTask. пробовал CHANGEWYS
EXTEND FORM formSaleExpense
PROPERTIES
ON CHANGEWYS {
task(s) <- Calc.task(calcTask) WHERE NOT task(s);
calc(s) <- Calc.calc(calcTask) WHERE NOT calc(s);
}
Как сделать лучше чтобы данная функция работала?
Ответы (1 шт):
Чтобы решить эту задачу, нужно понимать два момента:
а) Копи-паст в lsFusion по умолчанию при "нехватке" записей добавляет объекты "обычным" NEW (а не вашим newDeliveryFact). Для того чтобы платформа использовало именно ваше действие, ему нужно задать EXTID - new[имя объекта] или new (если свойство/действие с таким EXTID на форме одно). То есть в вашем случае например (EXTID по умолчанию равно ID):
PROPERTIES new = newDeliveryFact(calcTask)
PS: Эта возможность появилась в последних коммитах 5-й версии, поэтому для ее использования необходимо обновиться на последнюю сборку
б) Вообще по идее в данном случае подошел бы и "обычный" NEW, так как это "обычный" NEW пытается в условие FILTERS записать TRUE, то есть выполнить:
(task(calcTask) = task(s) OR NOT task(s) ) AND calc(calcTask) = calc(s) <- TRUE
В этом случае, платформа должна в каждую скобку / операнд записать TRUE, и тем самым записать в task и calc нужные значения. Но в 5-й версии этого не происходило в силу некоторого бага, который тоже вроде уже исправлен (достаточно обновиться на последнюю сборку). Соответственно, на последней сборке можно просто вместо:
PROPERTIES 'new' = newDeliveryFact(calcTask)
написать:
PROPERTIES NEW(s)
и все должно будет работать.