Код:
// Основное действие - получить данные
async function importContacts(): Promise<void> {
// обновляем токен
let token = await getAccessToken();
// формируем url на получение данных о контактах и перечисляем необходимые нам поля
let requestUrl = Namespace.params.data.dynamic_api_url + "/contacts?$select=fullname,firstname,lastname,middlename,_parentcustomerid_value,emailaddress1,modifiedon";
// выполняем запрос
let res = await fetch(requestUrl, {
method: 'GET',
headers: {
'OData-MaxVersion': '4.0',
'OData-Version': '4.0',
'Content-Type': 'application/json',
'Authorization': "Bearer " + token,
'Cookie': 'ReqClientId=ebd37a65-dfc5-4d73-804d-959830622a8a; orgId=868360c2-1d88-493a-947f-31b8a946fce4'
}
});
if (res.ok) {
let result = await res.json();
let contacts = result.value;
// перебираем контакты
for (let contact of contacts) {
// Context.fields.contacts ссылается на свойство контекста Контакты (contacts)
// тот самый лайфхак с легким созданием объекта
let new_contact = Context.fields.contacts.app.create();
new_contact.data.external_uid = contact["contactid"];
new_contact.data._fullname = {
firstname: contact["firstname"],
lastname: contact["lastname"],
middlename: contact["middlename"]
} as TFullName;
new_contact.data._email = { email: contact["emailaddress1"] } as TEmail<EmailType.Work>;
new_contact.data.modified_on = contact["modifiedon"];
await new_contact.save();
}
}
}