...

Сценарии для объекта

Тема в разделе "Разработчикам", создана пользователем iss, 23 янв 2019.

  1. iss

    iss New Member

    Коллеги, здравствуйте! Подскажите новичку (не могу найти примеров на форуме и в базе данных).
    1. Создал объект TestObject, у него создал три целочисленных свойства N1, N2, N3. Нужен сценарий, который бы при изменении поля N2 реализовывал бы следующую формулу N3 = N1 + N2. Система создаётся вот такой заголовок:

    public virtual void TestScript (ITestObject entity, EleWise.ELMA.Model.Views.FormViewBuilder<ITestObject> form)

    как обратиться к свойствам? Вот так: entity.N1 - ругается.

    2. Судя по заголовку речь идёт о работе на форме. А если объект будет создаваться скриптом, то отработает ли такой сценарий?

    3. У свойства в закладке дополнительно есть "Тип вычисления значения". Если там можно писать скрипт, то какой синтаксис, как вернуть расчётное значение? Как этот механизм работает со сценарием, в какой последовательности выполняется?

    Спасибо!
     
  2. akarimov

    akarimov Member

    1. Да entity.N1 правильно. Попробуйте сначала опубликовать без сценария, тогда поле должно появиться и сценарий станет работать. Если не получится - перегрузите сервер, и только потом пишите сценарий.
    2. Если объект будет создаваться скриптом сценарий не отработает, для такого варианта смотрите обработчики сохранения объекта (искать по OnPreUpdate,OnPostUpdate)
    3. Этот вариант подходит для случаев когда мы имеем строго зависящее от других полей значение. Например сумма всегда равна произведению цены на количество и задаваться независимо от них не может. В таком случае подходит вычисляемое поле - оно не заводится самостоятельно в пользовательском режиме, а вычисляется по данным объекта. Формулу писать на C# в принципе написать можно все что угодно, в вашем случае N1+N2. В более сложных случаях стоит быть внимательным, если написать с ошибкой формулу (например не проверить на Null поле которое Null допускает) можно выстрелить себе в ногу.
     
  3. iss

    iss New Member

    Спасибо Вам большое, заработало.
    По поводу п.3 Вы не могли бы уточнить. Здесь пишется просто формула типа N1+N2 и тогда система понимает, что это N3 = N1 + N2 или можно написать что-то типа сценария с условиями, вычислениями, проверками? Если второе, то как вернуть результат в N3? Например, проверить на Null N1 и N2, проверить значение какого-нибудь ещё поля, например, справочника и в зависимости от значения справочника, сделать разные вычисления?
     
  4. akarimov

    akarimov Member

    Вычисляемое поле это функция, которая записывает возвращаемое значение в нужное поле. Поэтому там можно проверку на null и все что угодно другое писать.
    Пример как оформить её можно посмотреть в базе знаний
     
  5. iss

    iss New Member

    Спасибо большое ещё раз! )
    Ранее не видел эту статью.
     

Поделиться: