Factory
General methods
Abstract factory class. Reproduces "Abstract factory" design pattern, where each entity type has its own factory.
Implementation of factory for each type returns set of classes, specific for this type.
Factory service is an input point always, when you need to process data, specific for entity type.
Factory instance is retrieved from [link=13976638]service container[/link].
Hereinafter, "type" means "CRM entity type", such as "Lead", "Deal" and etc. "Smart processes" are related to this as well.
Method | Description | Available from version |
---|---|---|
abstract public function getEntityTypeId(): int; |
Method returns CRM type ID. | |
public function getEntityName(): string |
Method returns string view for CRM type ID. | |
public function getEntityAbbreviation(): string |
Method returns abbreviated string CRM type ID. | |
public function getEntityDescription(): string |
Method returns type language designation. |
Function type
Portion of these methods correlates with corresponding methods from [link=13967500]Model\Dynamic\Type[/link].
Method | Description | Available from version |
---|---|---|
public function isMultipleAssignedEnabled(): bool |
Returns true, when multiple responsible users feature is active. Always returns false; this feature is not completely implemented yet. | |
public function isCategoriesSupported(): bool |
Returns true, when type supports pipelines. | |
public function isCategoriesEnabled(): bool |
Returns true, when type supports pipelines and this feature is active. | |
public function isStagesSupported(): bool |
Returns true, when type supports stages. | |
public function isStagesEnabled(): bool |
Returns true, when type supports stages and this feature is active. | |
public function isLinkWithProductsEnabled(): bool |
Returns true, when type supports linking binding to products. | |
public function isBeginCloseDatesEnabled(): bool |
Returns true, when type has "Start date" and "End date". | |
public function isClientEnabled(): bool |
Returns true, when type has "Customer" field (binding to contacts and company). | |
public function isCrmTrackingEnabled(): bool |
Returns true, when type supports sales intelligence and utm-tags. | |
public function isMyCompanyEnabled(): bool |
Returns true, when type has "My company details" field. | |
public function isDocumentGenerationEnabled(): bool |
Returns true, when type has activated document print feature. | |
public function isSourceEnabled(): bool |
Returns true, when type has "Source" and "Source information" fields enabled. | |
public function isUseInUserfieldEnabled(): bool |
Returns true, when type can be used in the "Bind to CRM items" field type. | |
public function isRecyclebinEnabled(): bool |
Returns true, when recycle bin feature was activated. | |
public function isAutomationEnabled(): bool |
Returns true, when automation rule and trigger feature is activated. | |
public function isBizProcEnabled(): bool |
Returns true, when workflow designer feature is activated. | |
public function isObserversEnabled(): bool |
Returns true, when type has "Observers" field with corresponding feature. | |
public function isNewRoutingForDetailEnabled(): bool |
Returns true, when links to element detail page of this type must be generated as per the same principle as the links to SPAs. | |
public function isNewRoutingForListEnabled(): bool |
Returns true, when links to element list of this type must be generated as per the same principle as the links to SPAs. | |
public function isNewRoutingForAutomationEnabled(): bool |
Returns true, when links to workflow and trigger settings of this type must be generated as per the same principle as the links to SPAs. |
Element fields of specific type
Method | Description | Available from version |
---|---|---|
public function getFieldsInfo(): array |
Method returns description of element fields of specific type as an array, where key - field code, value is description.
This method operation result is compatible with methods from [link=11318804]old API[/link] \CCrmDeal::GetFieldsInfo() , \CCrmLead::GetFieldsInfo() и т.д.
Field description consist of several keys:
| |
public function getFieldsMap(): array |
Method returns map with "general" field codes and field codes of specific type, if they differ from "general" (more details at [link=13985532]Crm\Item[/link]).
Key - "general" field code and value - field code of specific type. | |
public function getEntityFieldNameByMap (string $commonFieldName): string |
Method returns field code of specific type by its "general" code. | |
public function getCommonFieldNameByMap (string $entityFieldName): string |
Method returns "general" field code by specific field code. | |
public function getFieldCaption(string $commonFieldName): string |
Method returns field language name by its "general" code.
If name is not found, returns the field code itself. | |
public function isFieldExists(string $commonFieldName): bool |
Method returns true, when field with "general" code $commonFieldName is available in elements/items of the specific type. | |
public function getFieldValueCaption (string $commonFieldName, $fieldValue): string |
Method returns string value for the field with "general" code $commonFieldName and value with $fieldValue. | |
public function getFieldsCollection(): Field\Collection |
Method returns [link=13986312]collection of fields[/link] of this specific code.
Includes custom fields, described below. |
Type custom fields
Due to set of custom fields being stored in the database, this data is cached inside factory.
In case data about custom fields is updated after receiving factory instance, you need to reset the cache.
Method | Description | Available from version |
---|---|---|
public function getUserFieldEntityId(): string |
Returns entity ID for custom fields API. | |
public function clearUserFieldsInfoCache() |
Resets data cache for custom fields. | |
public function getUserFieldsInfo(): array |
Returns description for custom fields in the same format as in the method getFieldsInfo() . | |
public function getUserFields(): array |
Returns custom fields description of specific type. |
Pipelines
Pipeline data is cached inside the factory.
Method | Description | Available from version |
---|---|---|
public function getCategories(): array |
Returns array with [link=14008946]pipelines[/link] of specific type. | |
abstract public function createCategory(array $data = []): Category; |
Creates [link=14008946]pipeline object[/link] based on the object data. | |
public function createDefaultCategoryIfNotExist(): Category |
Method returns pipeline, if this pipeline exist by default.
When no default pipeline exist, creates this pipeline. In case failing to create default pipeline, throws exception \Bitrix\Main\InvalidOperationException .
This method is used in location, where pipeline data are mandatory (for example, in the field CATEGORY_ID [link=13967506]table with smart process element[/link]). | |
public function getDefaultCategory(): ?Category |
Returns default pipeline, if available. |
Stages
Stage data are cached inside factory.
Method | Description | Available from version |
---|---|---|
public function getStagesEntityId (?int $categoryId = null): ?string |
Returns ENTITY_ID [link=13967440]identifier[/link] for table with statuses
When type doesn't support handling of stages, returns null. | |
public function getStages (int $categoryId = null): EO_Status_Collection |
Returns collection of $categoryId pipeline stages.
If $categoryId is not passed, but type supports pipeline handling, receives the list of pipeline stages by default. | |
public function purgeStagesCache(): Factor |
Clears stage cache. | |
public function getStage (string $statusId): ?EO_Status |
Returns stage object by string ID $stageId. |
Elements
Method | Description | Available from version |
---|---|---|
abstract public function getDataClass(): string; |
Returns FQN for class table, storing element type. | |
public function getItemByEntityObject (EntityObject $object): Item |
Returns [link=13985532]element object[/link] by ORM $object. | |
public function getItems (array $parameters = []): array |
Returns [link=13985532]array with element objects[/link].
Here $parameters - array with structure, fully similar to argument in the method [link=1755489]\\Bitrix\Main\Entity\DataManager::getList()[/link] . | |
public function getItemsFilteredByPermissions ( array $parameters, ?int $userId = null, string $operation = UserPermissions::OPERATION_READ ): array |
Returns [link=13985532]array with element objects[/link] similar to the method getList , but accounts for user access permission with $userId upon executing the $operation action.
Passes the parameter $userId as is to the method [link=13976638]Service\Container::getUserPermissions()[/link] . | |
public function getItem(int $id): ?Item |
Returns [link=13985532]element object[/link] by its $id. | |
public function getItemsCount (array $filter = []): int |
Returns number of elements by filter $filter. | |
public function getItemsCountFilteredByPermissions ( array $filter = [], ?int $userId = null, string $operation = UserPermissions::OPERATION_READ ): int |
Returns number of elements by $filter with account of user access permissions with $userId upon executing action $operation.
Passes the parameter $userId as is in the method [link=13976638]Service\Container::getUserPermissions()[/link] . | |
public function createItem(array $data = []): Item |
Creates new [link=13985532]element[/link] with field values from $data.
$data must use "general" keys. You can pass only values from its own scalar fields. The rest of field types (custom, links) workability is not guaranteed. | |
public function getItemCategoryId(int $id): ?int |
Returns element pipeline ID by its $id. |
Updates
Method | Description | Available from version |
---|---|---|
public function getAddOperation (Item $item, Context $context = null): Operation\Add |
Returns [link=14005980]operation object[/link] for adding $item with $context. | |
public function getUpdateOperation (Item $item, Context $context = null): Operation\Update |
Returns [link=14005980]operation object[/link] for updating $item with $context. | |
public function getDeleteOperation (Item $item, Context $context = null): Operation\Delete |
Returns [link=14005980]operation object[/link] for deleting $item with $context. | |
public function getConversionOperation (Item $item, EntityConversionConfig $configs, Context $context = null): Operation\Conversion |
Returns [link=14005980]operation object[/link] for converting $item with config $configs and context $context. | |
public function getCopyOperation (Item $item, Context $context = null): Operation\Copy |
Returns [link=14005980]operation object[/link] for copying $item with context $context. | |
getDependantFieldsMap(): array |
Returns set of dependant fields, where key is field code and values if array with field codes, dependant from it. |
History of element/item actions
Method | Description | Available from version |
---|---|---|
public function getTrackedObject (Item $itemBeforeSave, Item $item = null): TrackedObject |
Method returns class object [link=13981068]TrackedObject[/link], used when writing element history using the [link=13980976]history service[/link]. Returns object is configured according to entity type specifics, handled by factory.
Item $itemBeforeSave - element before saving. When it wasn't updated, then it is the current element. Item $item - current element status. When element wasn't updated, this parameter is not used. |
UI
Method | Description | Available from version |
---|---|---|
public function getEditorAdapter(): EditorAdapter |
Method returns configured [link=13980472]adapter service[/link] for editor. |
Example
use Bitrix\Crm\Service; $factory = Service\Container::getInstance()->getFactory(\CCrmOwnerType::Quote); if ($factory->isStagesEnabled ()) { $stages = $factory->getStages(); } // all elements without access permissions $allItems = $factory->getItems([]); // elements with access permissions for reading for current user $items = $factory->getItemsFilteredByPermissions([]);