- Модуль: bizproc
- Путь к файлу: ~/bitrix/modules/bizproc/classes/general/workflowtemplateloader.php
- Класс: CBPWorkflowTemplateLoader
- Вызов: CBPWorkflowTemplateLoader::importDocumentFields
static function importDocumentFields(array $documentType, array $fields)
{
$documentService = CBPRuntime::GetRuntime(true)->getDocumentService();
$currentDocumentFields = $documentService->GetDocumentFields($documentType, true);
BitrixMainTypeCollection::sortByColumn($fields, "sort");
$len = mb_strlen("_PRINTABLE");
foreach ($fields as $code => $field)
{
//skip printable
if (mb_strtoupper(mb_substr($code, -$len)) == "_PRINTABLE")
{
continue;
}
//skip references
if (mb_strpos($code, '.') !== false)
{
continue;
}
$documentField = [
"name" => $field["Name"],
"code" => $code,
"type" => $field["Type"],
"multiple" => $field["Multiple"] ?? null,
"required" => $field["Required"] ?? null,
];
if (isset($field['Options']) && is_array($field["Options"]) && count($field["Options"]) > 0)
{
$documentField['options'] = '';
foreach ($field["Options"] as $k => $v)
{
if (!is_scalar($v))
{
continue;
}
$documentField["options"] .= "[".$k."]".$v."n";
}
}
unset($field["Name"], $field["Type"], $field["Multiple"], $field["Required"], $field["Options"]);
$documentField = array_merge($documentField, $field);
if ($currentDocumentFields && !array_key_exists($code, $currentDocumentFields))
{
$documentService->AddDocumentField($documentType, $documentField);
}
else
{
$documentService->UpdateDocumentField($documentType, $documentField);
}
}
}