Добрый день! Предлагаю Вам отойти от варианта события "При изменении значения" (тк обработчик реагирует на любое изменение в таблице, на каждый символ в любой ячейке, а если это событие должно изменять текущую таблицу, то мы можем уйти в бесконечный цикл бесконечных изменений). Воспользуемся колонками типа Формулы, они позволяют отображать актуальное значение, которое необходимо рассчитать. Формула работает только с типами данных Строка, Деньги или Число. Так будет рассчитываться сумма по ПД или РД.
1. Пусть Стадии разработки будут не строкой, а приложением. Так мы сможем оперировать данными в формуле, ведь строчным значением не воспользоваться. Поля приложения: название, pd_bool - Число, rd_bool - Число. Для элемента ПД поле pd_bool=1, rd_bool=0, для РД pd_bool=0, rd_bool=1. Такой аналог true/false в числовом представлении.
2. Допустим, приложение в котором отображаются эти 2 таблицы называется Работы. В контекст приложения Работы кроме 2ух таблиц добавим поля Сумма по ПД и Сумма по РД - тип Деньги. Будем хранить в них сумму всех услуг по стадиям.
3. На расширенную форму создания и редактирования Работ во вкладку настройки, в системные функции добавим функцию Валидации. Это будет своего рода обработчик на действие сохранения элемента приложения Работы, при создании или редактировании:
declare const console: any;
async function validate(): Promise<ValidationResult> {
const result = new ValidationResult();
let summa_po_pd = new Money(0.00, 'RUB');
let summa_po_rd = new Money(0.00, 'RUB');
if (Context.data.tablica1){
let pd = Context.data.tablica1.filter( row => row.stadiya_pril.id == 'c1e6e608-1501-48b6-bacc-fbdd28cb3cc7')
console.log('PD array ',pd)
pd.forEach(row => summa_po_pd = summa_po_pd!.add(row.stoimost))
Context.data.summa_po_pd = summa_po_pd
let rd = Context.data.tablica1.filter( row => row.stadiya_pril.id == 'a32bc41f-fc25-4fac-8f79-1b442bb81641')
console.log('RD array ',rd)
rd.forEach(row => summa_po_rd = summa_po_rd!.add(row.stoimost))
Context.data.summa_po_rd = summa_po_rd
}
return result;
}
В полях приложения Работы в таблице Порядок оплаты добавим колонку Сумма типа Формулы: $stadiya_pril.boolean_pd*$__parent.summa_po_pd*$procent/100+$stadiya_pril.boolean_rd*$__parent.summa_po_rd*$procent/100
Здесь сумма по ПД или РД в зависимости от значения Стадии разработки в текущей строке.
-
- Размер файла:
- 26,6 КБ
- Просмотров:
- 6
-
- Размер файла:
- 49,1 КБ
- Просмотров:
- 6
-
- Размер файла:
- 55,3 КБ
- Просмотров:
- 5
-
- Размер файла:
- 81,1 КБ
- Просмотров:
- 6
-
- Размер файла:
- 55 КБ
- Просмотров:
- 5
Последнее редактирование: 1 авг 2023