Я пытаюсь направить потенциальных клиентов в Salesforce и передаю следующее значение...

Requested_Appointment_DateTime__c=2021-12-14T18:27:33Z

Этот формат соответствует формату YYYY-MM-DDTHH:MM:SSZ, указанному в документации. Когда я проверяю интерес, он успешно передается в Salesforce, но поле Requested_Appointment_DateTime по-прежнему равно null. Любые идеи?

Редактировать: я попытался выполнить некоторые анонимные тесты, чтобы узнать, могу ли я назначить дату, как показано... но это говорит о недопустимой дате/времени. Это соответствует документам?!

Lead l = [Select id, Requested_Appointment_DateTime__c from Lead where id='00Q3o00001AuWTOEA3'];
l.Requested_Appointment_DateTime__c = DateTime.parse('2021-12-14T18:27:33Z');
system.debug(l.Requested_Appointment_DateTime__c);

Когда я пытаюсь установить время в system.now(), он возвращает что-то вроде «2021-12-14 18:27:33» без T или Z... когда я пытаюсь разобрать эту строку, она говорит, что неверная дата . Какой правильный формат даты??

0
PaulyP 6 Окт 2021 в 06:30

1 ответ

Лучший ответ

Если вы ожидали, что запись интереса отобразит новое значение, вы забыли шаг, на котором вы сохраняете данные обратно в базу данных.

Lead l = [Select id, Requested_Appointment_DateTime__c from Lead where id='00Q3o00001AuWTOEA3'];
l.Requested_Appointment_DateTime__c = DateTime.valueOfGmt('2021-12-14 18:27:33');
system.debug(l.Requested_Appointment_DateTime__c);
update l;
1
sfdcfox 6 Окт 2021 в 07:15
Нет, я ожидал, что значение будет назначено правильно. Он выдает ошибку о том, что не может проанализировать этот формат даты. Этот код вершины предназначен только для демонстрации того, что поле не настраивается через вызов API. Я уверен, что формат правильный ... это то, что есть в документах и ​​во всех вопросах, которые я просматривал. Я пропустил что-то очевидное здесь? Ошибка System.TypeException: неверная дата/время: 2021-12-14 18:27:33
 – 
PaulyP
6 Окт 2021 в 06:53
1
Для вызовов API вы используете определенный формат, который вы нашли в документации. Это формат даты и времени ISO8601, поддерживаемый Salesforce. Для использования DateTime.valueOf или DateTime.parse требуется другой формат. Я отредактировал этот ответ, чтобы отразить правильный формат. Если значение равно null, может быть другая причина: либо автоматизация, либо код, который очищает поле в середине транзакции.
 – 
sfdcfox
6 Окт 2021 в 07:16
Вы пробовали Datetime.valueOf ? Да, что сказал Sfdcfox
 – 
Harout Tatarian
6 Окт 2021 в 07:17
Когда я отправляю в формате ISO8601, он не заполняется. Это новое поле, поэтому никакие существующие средства автоматизации не будут его обновлять. Имеет ли значение, что это представление веб-лидов?
 – 
PaulyP
6 Окт 2021 в 07:45
Да, web-to-lead ожидает, что формат зависит от локали. Попробуйте "мм/дд/гггг чч:мм аа", например 14/12/2021 18:27
 – 
sfdcfox
6 Окт 2021 в 08:01