Results 1 to 6 of 6

Thread: Изменение custom_fields в relate module. Logic Hook

  1. #1
    Topas_C is offline Senior Member
    Join Date
    Aug 2010
    Location
    Russia,Moscow
    Posts
    38

    Default Изменение custom_fields в relate module. Logic Hook

    День Добрый.
    Может кто сталкивался, с тем что надо измениться custom- поле в связанном модуле, посредством logic hook.

    Для примера, есть 2 модуля Opportunity и Contacts. У модуля Contacts добавлно поле, temp_c. Его значения хранятся в таблице contacts_cstm.
    Перед сохранением сделки (before_save) вызывается logic_hook
    PHP Code:
    function Get_Date (SugarBean $bean,$event,$argument)
    {
      
    $r_cont $bean->get_related_list(New Contact(),"contacts_o1111_opportunites_new");
         if ( 
    count($related_contacts['list'])==)
          {
            
    $con_b $r_cont['list'[0];
          
    // Получили связанный контакт
          
    $c_id $con_b->id;   // Получаем id записи
           
    $c_temp $con_b->temp_c;  Пытаемся получить значение поля temp_c
          
    $GLOBALS['log']->debug('ID = ' $c_id ' ,TEMP_C = ' $c_temp );
               
                if (
    $c_temp ==2
                     {
                       
    $con_b->temp_c 1;   
                      }
              }

    Так после выполнения данного, в лог ID выводится, а аттрибут c_temp пустой, то поле не меняется. В случае если ещё вызвать функцию $con_b->save(); То все значение этой записи в таблице contacts_cstm перезатрутся.
    Не подскажите, что не хватает, ибо SQL запросом подобное выполняться не совсем
    правильно (правда сейчас приходится).
    SugarCRM 6.1.2
    Russia,Moscow.

  2. #2
    erop is offline Sugar Community Member
    Join Date
    Jan 2005
    Location
    Moscow, Russia
    Posts
    107

    Default Re: Изменение custom_fields в relate module. Logic Hook

    [QUOTE=Topas_C;247305]
    PHP Code:
    function Get_Date (SugarBean $bean,$event,$argument)
    {
      
    $r_cont $bean->get_related_list(New Contact(),"contacts_o1111_opportunites_new");
         if ( 
    count($related_contacts['list'])==)
          {
    // а зачем забыли оквадратноскобочить справа аттрибут 'list'?
            
    $con_b $r_cont['list'][0];
          
    // Получили связанный контакт

    // А теперь получим custom_fields этого связанного по рукам и ногам контакта
     
    $con_b->custom_fields->retrieve();

          
    $c_id $con_b->id;   // Получаем id записи

    // Теперь то, что дальше вроде как должно работать
           
    $c_temp $con_b->temp_c// Пытаемся получить значение поля temp_c
    // Не пытайся! Просто получи это значение!!!

          
    $GLOBALS['log']->debug('ID = ' $c_id ' ,TEMP_C = ' $c_temp );
               
                if (
    $c_temp ==2
                     {
                       
    $con_b->temp_c 1;   
                      }
              }

    Если не секрет, удобно так именовать переменные - c_temp, temp_c, con_b? Шутю, конечно: каждый сам хозяин своей судьбы.

  3. #3
    Topas_C is offline Senior Member
    Join Date
    Aug 2010
    Location
    Russia,Moscow
    Posts
    38

    Default Re: Изменение custom_fields в relate module. Logic Hook

    Спасибо за столь быстрый ответ.
    Да, php код я для примера привел, поэтому и названия переменных короткие.
    Сейчас как раз и проверю.

    ----------------
    Благодарю, заработало.
    Буду в своей версии дальше избавляться от sql запросов.
    Last edited by Topas_C; 2011-04-03 at 05:38 PM.
    SugarCRM 6.1.2
    Russia,Moscow.

  4. #4
    Topas_C is offline Senior Member
    Join Date
    Aug 2010
    Location
    Russia,Moscow
    Posts
    38

    Default Re: Изменение custom_fields в relate module. Logic Hook

    А есть ли возможность сохранить в связанном модуле поле,
    не используя $contact_bean->save(); ,т.к. В случае если использовать, обнуляются
    некоторые поля в contacts_cstm

    PHP Code:
    function Get_Date (SugarBean $bean,$event,$argument

      
    $r_contact $bean->get_related_list(New Contact(),"contacts_o1111_opportunites_new"); 
         if ( 
    count($related_contacts['list'])==
          { 
    // а зачем забыли оквадратноскобочить справа аттрибут 'list'? 
            
    $contact_bean $r_contact['list'][0]; 
          
    // Получили связанный контакт 

    // А теперь получим custom_fields этого связанного по рукам и ногам контакта 
      
    $contact_bean->custom_fields->retrieve(); 

          
    $contact_id $contact_bean->id;   // Получаем id записи 

    // Теперь то, что дальше вроде как должно работать 
           
    $contact_temp $contact_bean->temp_c// Пытаемся получить значение поля temp_c 
    // Не пытайся! Просто получи это значение!!! 

          
    $GLOBALS['log']->debug('ID = ' $contact_id ' ,TEMP_C = ' $contact_temp ); 
                
                if (
    $contact_temp ==2)  
                     { 
                       
    $contact_bean->temp_c 1
                       
    $contact_bean->save();    // В случае если использовать, обнуляются
    //некоторые поля в contacts_cstm

                      

              } 

    P.S. Поравил имена переменных, в случае если кому-нибудь понадобится, чтобы не запутаться.
    SugarCRM 6.1.2
    Russia,Moscow.

  5. #5
    erop is offline Sugar Community Member
    Join Date
    Jan 2005
    Location
    Moscow, Russia
    Posts
    107

    Default Re: Изменение custom_fields в relate module. Logic Hook

    Quote Originally Posted by Topas_C View Post
    А есть ли возможность сохранить в связанном модуле поле,
    не используя $contact_bean->save(); ,т.к. В случае если использовать, обнуляются
    некоторые поля в contacts_cstm
    Честно-пречестно? Я серьезно, без шуток. Пробежался по своим проектам. Только ретривил, нигде не апдейтил ничего. Хм, вообще странно, что обнуляет кастомные поля. Может в этом есть какая-то глубокая мысль? А не хочешь попробовать $bean->custom_fields->save(), а потом уже $bean->save()? Вдруг таки и выйдет каменный цветок?

  6. #6
    Topas_C is offline Senior Member
    Join Date
    Aug 2010
    Location
    Russia,Moscow
    Posts
    38

    Default Re: Изменение custom_fields в relate module. Logic Hook

    Удалось с $bean->custom_fields->save();
    При просто save() терялась связь email .
    Спасибо ещё раз.
    SugarCRM 6.1.2
    Russia,Moscow.

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Similar Threads

  1. Replies: 1
    Last Post: 2011-05-04, 11:39 AM
  2. Replies: 0
    Last Post: 2010-12-13, 11:25 PM
  3. Replies: 0
    Last Post: 2010-10-08, 02:56 PM
  4. Replies: 0
    Last Post: 2010-09-14, 07:46 AM
  5. Replies: 0
    Last Post: 2009-04-04, 01:26 AM

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •