ΠΠ°Π±ΠΎΡ ΡΠΈΠΏΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΡΠ²ΠΎΠΉΡΡΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π±Π°Π·ΠΎΠ²ΡΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π», ΠΏΡΠΈΠ·Π²Π°Π½Π½ΡΠΉ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΈ
ΡΡΠΊΠΎΡΠΈΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π½ΠΎΠ²ΡΡ
ΡΠΈΠΏΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΡΠ²ΠΎΠΉΡΡΠ²., (*1)
ΠΠΎΠΊΠ° Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½Π°Ρ Π²Π΅ΡΡΠΈΡ - Π±ΡΠ΄ΡΡΠ΅ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»ΡΠ½Ρ!, (*2)
ΠΡΠ»ΠΈ Π²Ρ Ρ
ΠΎΡΠΈΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ²ΠΎΠΈ ΡΠΈΠΏΡ ΡΠ²ΠΎΠΉΡΡΠ² ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ½ΡΠΎΠ±Π»ΠΎΠΊΠ°, ΡΠΎ Π²Π°ΠΌ Π½ΡΠΆΠ΅Π½ ΠΏΠ°ΠΊΠ΅Ρ webarchitect609/bitrix-iblock-property-type, (*3)
ΠΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
1 Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΡΠ΅ΡΠ΅Π· composer, (*4)
composer require webarchitect609/bitrix-user-type
, (*5)
2 Π init.php ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π½ΡΡΠ΅(Π²ΡΡΠ΅) ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΡΠΈΠΏΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΡΠ²ΠΎΠΉΡΡΠ² (ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ - ΡΠΌ.
"ΠΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ" #1). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ,, (*6)
\WebArch\BitrixUserPropertyType\IblockSectionLinkType::init();
, (*7)
ΠΠΈΠ±ΠΎ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠΎΠΌ:, (*8)
<?php
use WebArch\BitrixUserPropertyType\HyperLinkType;
use WebArch\BitrixUserPropertyType\IblockSectionLinkType;
use WebArch\BitrixUserPropertyType\Utils\UserTypeManager;
use WebArch\BitrixUserPropertyType\WeekDayType;
use WebArch\BitrixUserPropertyType\StoreListType;
(new UserTypeManager([
HyperLinkType::class,
IblockSectionLinkType::class,
WeekDayType::class,
StoreListType::class
]))->init();
3 Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΏΠΎΠ»Ρ, Π²ΡΠ±ΡΠ°Π² ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°!, (*9)
Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΡΠ²ΠΎΠΉΡΡΠ² ΠΏΠ°ΠΊΠ΅ΡΠ°
- "ΠΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΠ°". ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅Π΅ Π²Π°Π»ΠΈΠ΄Π½ΡΡ Π³ΠΈΠΏΠ΅ΡΡΡΡΠ»ΠΊΡ.
WebArch\BitrixUserPropertyType\HyperLinkType
- "ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ ΡΠ°Π·Π΄Π΅Π»Ρ ΠΈΠ½ΡΠΎΠ±Π»ΠΎΠΊΠ°(Ρ ΠΎΠΊΠ½ΠΎΠΌ ΠΏΠΎΠΈΡΠΊΠ°)". ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ°Π·Π΄Π΅Π», Π²ΡΠ±ΡΠ°Π² Π΅Π³ΠΎ ΠΈΠ· Π²ΡΠΏΠ»ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΎΠΊΠ½Π°.
WebArch\BitrixUserPropertyType\IblockSectionLinkType
- "ΠΠ΅Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ". ΠΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΊ Π΄Π½Ρ Π½Π΅Π΄Π΅Π»ΠΈ (ISO-8601).
WebArch\BitrixUserPropertyType\WeekDayType
- "ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ ΡΠΊΠ»Π°Π΄Ρ". Π Π΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΊ ΡΠΊΠ»Π°Π΄Ρ ΠΏΠΎ Π΅Π³ΠΎ XML_ID.
WebArch\BitrixUserPropertyType\StoreListType
- "ΠΡΠΈΠ²ΡΠ·ΠΊΠ° ΠΊ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ". Π Π΅Π°Π»ΠΈΠ·ΡΠ΅Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΡ ΠΊ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Bitrix ΠΏΠΎ Π΅Π³ΠΎ ΠΊΠΎΠ΄Ρ.
WebArch\BitrixUserPropertyType\LocationType
ΠΠ°ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ ΡΠ²ΠΎΠΉΡΡΠ²Π°
1 ΠΠ°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ \WebArch\BitrixUserPropertyType\Abstraction\UserTypeBase
ΠΈΠ»ΠΈ
ΡΠ°ΠΌΠΎΡΡΠΎΡΡΠ΅Π»ΡΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ \WebArch\BitrixUserPropertyType\Abstraction\UserTypeInterface
., (*10)
2 ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΌΠ΅ΡΠΎΠ΄ getDBColumnType()
, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΠΎΠ΄Ρ
ΠΎΠ΄ΡΡΠΈΡ
ΡΡΠ΅ΠΉΡΠΎΠ² ΠΈΠ· namespace
WebArch\BitrixUserPropertyType\Abstraction\DbColumnType
, (*11)
3 ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ getBaseType()
, getDescription()
ΠΈ Ρ.Π΄., ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΡΠ΅Ρ
\WebArch\BitrixUserPropertyType\Abstraction\UserTypeInterface
, (*12)
4 ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ
ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄ΡΡΠ³ΠΈΡ
ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΡ
ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅ΡΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ ΠΈΠ· namespace
\WebArch\BitrixUserPropertyType\Abstraction\Custom
, (*13)
5 ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΡΠΈΠΏ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² init.php, (*14)
MyUserType::init();
, (*15)
6 Π’Π΅ΠΏΠ΅ΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΠ΅ ΠΏΠΎΠ»Ρ, Π²ΡΠ±ΡΠ°Π² ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°!, (*16)
ΠΠ·Π²Π΅ΡΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
#1 ΠΡΠΈΠ±ΠΊΠ° "Bitrix\Main\SystemException: Unknown field definition UF_YOUR_TYPE
" ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ HL-Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Ρ ΠΎΡΠΈΠ±ΠΊΠ° Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΏΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°.
ΠΠΎΠ·ΠΌΠΎΠΆΠ½Π°Ρ ΠΏΡΠΈΡΠΈΠ½Π°
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠΏΠ° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΎΠ³ΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π° Π² init.php
ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ·ΠΆΠ΅, ΡΠ΅ΠΌ ΡΠ±ΠΎΡΠΊΠ° ΡΡΡΠ½ΠΎΡΡΠΈ Π΄Π»Ρ Π»ΡΠ±ΠΎΠ³ΠΎ HL-Π±Π»ΠΎΠΊΠ°
\Bitrix\Highloadblock\HighloadBlockTable::compileEntity()
, ΠΊΠΎΡΠΎΡΠ°Ρ Π² ΡΠ²ΠΎΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ Π²ΡΠ·ΠΎΠ²Ρ
\CUserTypeManager::GetUserType()
ΠΈ Π½Π°Π±ΠΎΡΡ ΠΊΠ΅ΡΠ° Π² \CUserTypeManager::$arUserTypes
, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡΡ ΠΈ Π²
ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π½ΠΈΠΊΠ°ΠΊΠΈΠ΅ Π²Π½ΠΎΠ²Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΈΠΏΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΠΏΠΎΠ»Π΅ΠΉ., (*17)
Π‘ΠΏΠΎΡΠΎΠ± ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ
ΠΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»ΡΡΠΊΠΈΡ
ΡΠ²ΠΎΠΉΡΡΠ² Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΡΠΎΠΈΡΡ
ΠΎΠ΄ΠΈΡΡ ΡΠ°Π½ΡΡΠ΅, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΉ ΠΏΠ΅ΡΠ²ΡΠΉ Π²ΡΠ·ΠΎΠ²
\Bitrix\Highloadblock\HighloadBlockTable::compileEntity()
ΠΈΠ»ΠΈ \CUserTypeManager::GetUserType()
., (*18)