- Модуль: sale
- Путь к файлу: ~/bitrix/modules/sale/lib/businessvalue.php
- Класс: BitrixSaleBusinessValue
- Вызов: BusinessValue::getPersonTypes
static function getPersonTypes($all = false, array $resetAllPersonTypes = null)
{
static $allPersonTypes = array(), $personTypes = array();
if ($resetAllPersonTypes !== null)
{
$allPersonTypes = $resetAllPersonTypes;
$personTypes = array_filter(
$allPersonTypes,
function ($i)
{
return $i['DOMAIN'];
}
);
}
elseif (!$allPersonTypes)
{
$dbRes = InternalsPersonTypeTable::getList([
'select' => [
'ID', 'NAME', 'LID', 'ACTIVE', 'ENTITY_REGISTRY_TYPE',
'DOMAIN' => 'BIZVAL.DOMAIN',
'PT_SITE' => 'PERSON_TYPE_SITE.SITE_ID'
],
'order' => ['SORT', 'NAME'],
'runtime' => [
new BitrixMainEntityReferenceField(
'BIZVAL',
'BitrixSaleInternalsBusinessValuePersonDomainTable',
['=this.ID' => 'ref.PERSON_TYPE_ID'],
['join_type' => 'LEFT']
),
],
]);
$result = array();
while ($row = $dbRes->fetch())
{
if (!isset($result[$row['ID']]))
{
$row['PT_SITE'] = array($row['PT_SITE']);
$result[$row['ID']] = $row;
}
else
{
$result[$row['ID']]['PT_SITE'][] = $row['PT_SITE'];
}
}
foreach ($result as $item)
{
$item['TITLE'] = $item['NAME'].' ('.implode(', ' , $item['PT_SITE']).')';
$allPersonTypes[$item['ID']] = $item;
if ($item['DOMAIN'])
$personTypes[$item['ID']] = $item;
}
}
return $all ? $allPersonTypes : $personTypes;
}