Sugarcrm REST update Отношения между контактами и учетными записями javascript

У меня есть следующий код:

$.get(CurrentServerAddress + '/service/v2/rest.php', {

            method: "set_relationship",
            input_type: "JSON",
            response_type: "JSON",
            rest_data: '{"session":"' + SugarSessionId + '","module_name":"Contacts","module_id":"' + CurrentContactId + '","link_field_name":"accounts","related_ids":["'+ CurrentAccountId +'"]}'
        }, function(data) {
            if (data !== undefined) {
                var addAccountResult = jQuery.parseJSON(data);
    }
});

Отношения между контактами и компаниями работают достаточно хорошо. Теперь я хотел бы назначить контакту новую компанию. Я не знаю как это сделать.


person Miky    schedule 09.08.2012    source источник


Ответы (2)


Поскольку связь между контактами и учетными записями определяется как связь «многие ко многим», а не «один ко многим», если вам нужна только одна связь между одним контактом и учетной записью, вы должны на первом этапе удалить текущую связь и после добавления новой связи.

Что-то подобное:

// Delete previous relation
$.get(CurrentServerAddress + '/service/v2/rest.php', {
    method: "set_relationship",
    input_type: "JSON",
    response_type: "JSON",
    rest_data: '{"session":"' + SugarSessionId + '","module_name":"Contacts","module_id":"' + CurrentContactId + '","link_field_name":"accounts","related_ids":["'+ OldAccountId +'"],"name_value_list":[],"deleted":"1"}'
    }, function(data) {
    if (data !== undefined) {
        var addAccountResult = jQuery.parseJSON(data);
    }
});

// Add previous relation
$.get(CurrentServerAddress + '/service/v2/rest.php', {
    method: "set_relationship",
    input_type: "JSON",
    response_type: "JSON",
    rest_data: '{"session":"' + SugarSessionId + '","module_name":"Contacts","module_id":"' + CurrentContactId + '","link_field_name":"accounts","related_ids":["'+ NeAccountId +'"],"name_value_list":[],"deleted":"1"}'
    }, function(data) {
    if (data !== undefined) {
        var addAccountResult = jQuery.parseJSON(data);
    }
});
person Cédric Mourizard    schedule 10.08.2012
comment
Вы имеете в виду удалить: 0 в // добавить предыдущее отношение. И еще вопрос: как мне получить ['+ OldAccountId +'] ? - person Miky; 10.08.2012
comment
Да, в добавленной части удалено: 0. Для OldAccountId, который представляет текущее поле account_id в вашей записи контакта до внесения изменений. - person Cédric Mourizard; 30.08.2012
comment
Спасибо, что работает. На самом деле CurrentAccountId — это NewAccountId. - person Miky; 04.10.2012

Это должно сработать...

$.get(CurrentServerAddress + '/service/v2/rest.php', {
        method: "set_relationship",
        input_type: "JSON",
        response_type: "JSON",
        rest_data: '{"session":"' + SugarSessionId + '","module_name":"Accounts","module_id":"' + CurrentAccountId + '","link_field_name":"contacts","related_ids":["'+ CurrentContactId +'"]}'
    }, function(data) {
        if (data !== undefined) {
            var addAccountResult = jQuery.parseJSON(data);
}

});

person jmertic    schedule 09.08.2012
comment
Это хорошо работает для создания, но не для обновления. Я получаю две записи в списке контактов, запись со старыми значениями и с новыми значениями. В базе две записи. - person Miky; 09.08.2012