...

Поделитесь, пжлст, как обратиться к значениям текущей строки ТЧ в событии "При изменении значения"

Тема в разделе "Примеры сценариев", создана пользователем mag, 22 май 2023.

  1. mag

    mag Новичок

    Запрос: необходимо в текущей строке таблицы, в событии "При изменении значения" вычислить значение колонки №4 в зависимости от значения колонки №1. Т.е у меня колонка 1 это "Стадия разработки", колонка 3 "Процент", колонка 4 "Сумма".
    Мне необходимо при заполнении таблицы, смотреть какое значение в колонке 1, брать сумму значений в другой таблице по ключу из первой колонки, умножать эту сумму на процент и делить на 100, таким образом я вычисляю сумму, т.е колонку №4.
    Например, заполняю строку, указываю Стадия разработки: "ПД", процент "20", нужно вычислить сумму. Я беру из другой таблицы значения:
    ПД......10000
    ПД......15000
    ПД......5000
    (их сумму) 20000 * (процент) 20 / 100 = (сумма) 4000.

    Вложения:

  2. ava_var

    ava_var Активный участник

    Пробовали использовать колонки типа формулы?
  3. miliakova

    miliakova Техническая поддержка

    Добрый день! Предлагаю Вам отойти от варианта события "При изменении значения" (тк обработчик реагирует на любое изменение в таблице, на каждый символ в любой ячейке, а если это событие должно изменять текущую таблицу, то мы можем уйти в бесконечный цикл бесконечных изменений). Воспользуемся колонками типа Формулы, они позволяют отображать актуальное значение, которое необходимо рассчитать. Формула работает только с типами данных Строка, Деньги или Число. Так будет рассчитываться сумма по ПД или РД.
    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
    Здесь сумма по ПД или РД в зависимости от значения Стадии разработки в текущей строке.

    Вложения:

    • 108-00.png
      108-00.png
      Размер файла:
      26,6 КБ
      Просмотров:
      5
    • 108-0.png
      108-0.png
      Размер файла:
      49,1 КБ
      Просмотров:
      5
    • 108-1.png
      108-1.png
      Размер файла:
      55,3 КБ
      Просмотров:
      4
    • 108.png
      108.png
      Размер файла:
      81,1 КБ
      Просмотров:
      5
    • 108-4.png
      108-4.png
      Размер файла:
      55 КБ
      Просмотров:
      4
    Последнее редактирование: 1 авг 2023