String k = ppa.Timesheet_Line__c != null ? ppa.Timesheet_Line__c : ppa.Timesheet_Line_Name__c;где
String k; if (ppa.Timesheet_Line__c != null) { k = ppa.Timesheet_Line__c; } else { k = ppa.Timesheet_Line_Name__c; }
String k = ppa.Timesheet_Line__c != null ? String.valueOf(ppa.Timesheet_Line__c) : ppa.Timesheet_Line_Name__c;
Сегодня словил крайне странный эксепшен из Apex. Пишу такую строчку [code] String k = ppa.Timesheet_Line__c != null ? ppa.Timesheet_Line__c : ppa.Timesheet_Line_Name__c; [/code] где [b]Timesheet_Line__c[/b] - лукап [b]Timesheet_Line_Name__c[/b] - стринга при выполнении кода получаю [b]Invalid id[/b] если [b]ppa.Timesheet_Line__c = null[/b] и заполнено поле [b]ppa.Timesheet_Line_Name__c[/b]. причем вот такое работает [code] String k; if (ppa.Timesheet_Line__c != null) { k = ppa.Timesheet_Line__c; } else { k = ppa.Timesheet_Line_Name__c; } [/code] и даже вот такое отработало [code] String k = ppa.Timesheet_Line__c != null ? String.valueOf(ppa.Timesheet_Line__c) : ppa.Timesheet_Line_Name__c; [/code] Странно, может я какой нюанс не знаю? :sad:
попробал, всё работает. проверь что apex version is 56 и ID что ты получаешь 18 characters Contact contact = [select Id,AccountID, Name from Contact limit 1]; system.debug('>>Contact : '+ contact); String k1 = contact.AccountId != null ? contact.AccountId : contact.Name; system.debug('>>Contact K1: '+ k1); String k2 = contact.AccountId != null ? String.valueof(contact.AccountId) : contact.Name; system.debug('>>Contact K2: '+ k2); String k3 = contact.AccountId != null ? [b]Id.valueof[/b](contact.AccountId) : contact.Name; system.debug('>>Contact K3: '+ k3);
поменял местами условие (!== to ==) и работает без ошибки (Invalid Id) Contact contact = [select Id,AccountID, Name from Contact [b]where AccountID =null[/b] limit 1]; system.debug('>>Contact : '+ contact); String k1 = contact.AccountId == null ? contact.Name : contact.AccountId ; system.debug('>>Contact K1: '+ k1); String k2 = contact.AccountId == null ? contact.Name : String.valueof(contact.AccountId); system.debug('>>Contact K2: '+ k2); String k3 = contact.AccountId == null ? contact.Name : Id.valueof(contact.AccountId); system.debug('>>Contact K3: '+ k3);
String k = ppa.Timesheet_Line__c == null ? ppa.Timesheet_Line_Name__c : ppa.Timesheet_Line__c;
С версией 56 не проканало - но у меня весь проект на 55 версии. Не знаю как версионность работает, но возможно толку менять версию на одном классе нет если он вызывается из других с меньшими версиями. Это догадки, но весь проект апдейтить на новую версию времени и желания нет. А вот переставил местами части тернарной операции и ошибка пропала. [code] String k = ppa.Timesheet_Line__c == null ? ppa.Timesheet_Line_Name__c : ppa.Timesheet_Line__c; [/code] Возможно проблема в самой тернарной операции и ее внутренней работе - типа части приводятся к типу первой части. Изначально у меня было <String> = <Boolean> ? [b]<Id>[/b] : <String> что валится если <Boolean> = false Теперь стало <String> = <Boolean> ? [b]<String>[/b] : <Id> и ошибки нет. НО ХЗ почему у тебя Eric работает. Твои примеры выглядят также. Это не проблема, просто интересно понять что за [b]Мистика[/b]. :surprised:
ЗЫ: фигасе Eric как ты быстро отреагировал на сообщение. Тут новые сообщения уже не появляются неделями, а ты буквально через час ответил если не раньше. Колись как активность отслеживаешь :smiley:, чет я сомневаюсь что просто случайно зашел :smiley:
а с форумом то что было два дня? тут уже сформировалась какая-то группа людей, без форума и без запасного варианта, связь может быть потеряна навсегда
[quote="Den Brown"]а с форумом то что было два дня?[/quote] А что с ним было? Я сам не заходил уже наверное недели две. Все кодирую на автомате, а вот тут темка интересная подвернулась вот и зашел написать.
[quote="Dmitry Shnyrev"]Eric как ты быстро отреагировал на сообщение.[/quote] было немного свободного времени и проблемка показалось странной и непонятной. :smile: в теории должно было работать
no connection было у меня два дня