- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/controller/item.php
- Класс: Bitrix\Crm\Controller\Item
- Вызов: Item::processFields
public function processFields(
\Bitrix\Crm\Item $item,
array $fields,
Field\Collection $collection
): void
{
$fields = $collection->removeHiddenValues($fields);
foreach($collection as $field)
{
$fieldName = $field->getName();
if (!array_key_exists($fieldName, $fields))
{
continue;
}
if (empty($fields[$fieldName]))
{
$item->set($fieldName, null);
continue;
}
if ($field->isFileUserField())
{
$this->processFileField($field, $item, $fields[$fieldName]);
}
elseif (
$this->getScope() === self::SCOPE_REST
&& (
$field->getType() === Field::TYPE_DATE
|| $field->getType() === Field::TYPE_DATETIME
)
)
{
if ($field->getType() === Field::TYPE_DATETIME)
{
$convertDateMethod = 'unConvertDateTime';
}
else
{
$convertDateMethod = 'unConvertDate';
}
if($field->isMultiple())
{
$result = [];
$value = (array)$fields[$fieldName];
foreach($value as $date)
{
// can return false and wrong value should not be set in this case:
$convertedValue = \CRestUtil::$convertDateMethod($date);
if ($convertedValue)
{
$result[] = $convertedValue;
}
}
$item->set($fieldName, $result);
}
else
{
$convertedValue = \CRestUtil::$convertDateMethod($fields[$fieldName]);
if ($convertedValue)
{
$item->set($fieldName, $convertedValue);
}
}
}
else
{
$value = $fields[$fieldName];
if ($field->getType() === Field::TYPE_BOOLEAN)
{
$value = $this->prepareBooleanFieldValue($value);
}
$item->set($fieldName, $value);
}
}
}