[{"data":1,"prerenderedAt":675},["ShallowReactive",2],{"navigation_docs":3,"-modules-options-installer":238,"-modules-options-installer-surround":672},[4,45,60],{"title":5,"description":6,"icon":7,"path":8,"stem":9,"children":10},"Методология",null,"ruler","\u002Fmethodology","1.methodology",[11,15,20,25,30,35,40],{"title":12,"path":8,"stem":13,"description":14},"bxshef: методология и проверка навыков","1.methodology\u002Findex","Как писать навыки ИИ-агентов для Битрикса и как проверять, что им можно верить",{"title":16,"path":17,"stem":18,"description":19},"Стандарт навыка","\u002Fmethodology\u002Fstandard","1.methodology\u002F1.standard","11 правил, каждое из провала на стенде",{"title":21,"path":22,"stem":23,"description":24},"Методология проверки","\u002Fmethodology\u002Fmethod","1.methodology\u002F2.method","lint → eval → стенд; что измерено",{"title":26,"path":27,"stem":28,"description":29},"bxshef — CLI","\u002Fmethodology\u002Fbxshef","1.methodology\u002F3.bxshef","lint, eval, feedback",{"title":31,"path":32,"stem":33,"description":34},"GitHub Action","\u002Fmethodology\u002Faction","1.methodology\u002F4.action","тот же lint + eval в любом репозитории навыков",{"title":36,"path":37,"stem":38,"description":39},"Заготовка репозитория","\u002Fmethodology\u002Ftemplate","1.methodology\u002F5.template","с чего начать автору модуля",{"title":41,"path":42,"stem":43,"description":44},"Приёмник отзывов","\u002Fmethodology\u002Ffeedback","1.methodology\u002F6.feedback","куда уходят отзывы ИИ-агентов",{"title":46,"description":6,"icon":47,"path":48,"stem":49,"children":50},"Навыки","sparkles","\u002Fskills","2.skills",[51,55],{"title":52,"path":48,"stem":53,"description":54},"Навыки shef.*","2.skills\u002Findex","npx skills add bx-shef\u002Fskills",{"title":56,"path":57,"stem":58,"description":59},"shef-feedback","\u002Fskills\u002Fshef-feedback","2.skills\u002F1.shef-feedback","Отправить отзыв о навыке shef-* или навыке команды. Брать ВСЕГДА, когда просят оставить или отправить отзыв о навыке — даже если сам навык в диалоге не виден, —",{"title":61,"description":6,"icon":62,"path":63,"stem":64,"children":65},"Модули shef.*","package","\u002Fmodules","3.modules",[66,69,131,179],{"title":61,"path":63,"stem":67,"description":68},"3.modules\u002Findex","Что за чем ставить",{"title":70,"description":6,"path":71,"stem":72,"children":73},"shef.options","\u002Fmodules\u002Foptions","3.modules\u002F1.options\u002Findex",[74,76,81,86,91,96,101,106,110,114,119,123,127],{"title":70,"path":71,"stem":72,"description":75},"фундамент: настройки, трейты, компоненты",{"title":77,"path":78,"stem":79,"description":80},"[`\\Shef\\Options\\Installator`] Installer","\u002Fmodules\u002Foptions\u002Finstaller","3.modules\u002F1.options\u002F1.installer","Для облегчения установок.",{"title":82,"path":83,"stem":84,"description":85},"Сборка, CI и релиз","\u002Fmodules\u002Foptions\u002Fbuild-and-install","3.modules\u002F1.options\u002F10.build-and-install","Раскладка репозитория — в module-structure.md, процесс —\nв CONTRIBUTING.md, установка глазами пользователя —\nв README.md.",{"title":87,"path":88,"stem":89,"description":90},"Раскладка репозитория","\u002Fmodules\u002Foptions\u002Fmodule-structure","3.modules\u002F1.options\u002F11.module-structure","Файл про устройство репозитория. Опорные точки модуля — в CLAUDE.md,\nпроцесс — в CONTRIBUTING.md, сборка — в\nbuild-and-install.md.",{"title":92,"path":93,"stem":94,"description":95},"Проверка на портале","\u002Fmodules\u002Foptions\u002Fportal-check","3.modules\u002F1.options\u002F12.portal-check","Всё, что ниже рантайма Битрикса, тестами не закрыть: установка, права, кеш,\nраскладка файлов, поведение при обновлении. Проверять это приходится руками —\nи лучше по списку, потому что забытый шаг находит не разработчик, а клиент.",{"title":97,"path":98,"stem":99,"description":100},"[`\\Shef\\Options\\Main\\Options`] Опции настроек модуля","\u002Fmodules\u002Foptions\u002Foptions","3.modules\u002F1.options\u002F2.options","Поддерживает следующие типы:",{"title":102,"path":103,"stem":104,"description":105},"Работа с пользователями","\u002Fmodules\u002Foptions\u002Fsecurity","3.modules\u002F1.options\u002F3.security","",{"title":107,"path":108,"stem":109,"description":105},"[`\\Shef\\Options\\Main\\Utils`] Утилиты","\u002Fmodules\u002Foptions\u002Futils","3.modules\u002F1.options\u002F4.utils",{"title":111,"path":112,"stem":113,"description":105},"[`\\Shef\\Options\\Components`] Работа с компонентами","\u002Fmodules\u002Foptions\u002Fcomponents","3.modules\u002F1.options\u002F5.components",{"title":115,"path":116,"stem":117,"description":118},"[`\\Shef\\Options\\Options`] Паттерны","\u002Fmodules\u002Foptions\u002Fpattern","3.modules\u002F1.options\u002F6.pattern","Запускаемые примеры: singleton.php,\nconfig.php, smartstd.php —\nкак их гонять, написано в examples\u002FREADME.md.",{"title":120,"path":121,"stem":122,"description":105},"[`\\Shef\\Options\\Tests`] Тестирование","\u002Fmodules\u002Foptions\u002Ftests","3.modules\u002F1.options\u002F7.tests",{"title":124,"path":125,"stem":126,"description":105},"[`\\Shef\\Options\\TraitList`] Набор трейтов","\u002Fmodules\u002Foptions\u002Ftraitlist","3.modules\u002F1.options\u002F8.traitlist",{"title":128,"path":129,"stem":130,"description":105},"Правила для ИИ-агентов в этом репозитории","\u002Fmodules\u002Foptions\u002Fagent-rules","3.modules\u002F1.options\u002F9.agent-rules",{"title":132,"description":6,"path":133,"stem":134,"children":135},"shef.problems","\u002Fmodules\u002Fproblems","3.modules\u002F2.problems\u002Findex",[136,138,143,147,152,157,161,166,169,172,175],{"title":132,"path":133,"stem":134,"description":137},"логи, журнал событий, учёт проблем",{"title":139,"path":140,"stem":141,"description":142},"[`\\Shef\\Problems\\Integration`] События и меню","\u002Fmodules\u002Fproblems\u002Fevents","3.modules\u002F2.problems\u002F1.events","Что модуль регистрирует в ядре при установке. Список — в .settings.php, ключ\ninstallEvents; что каждый обработчик существует, сверяет\ntests\u002Fsettings_test.php.",{"title":144,"path":145,"stem":146,"description":105},"Безопасность логов","\u002Fmodules\u002Fproblems\u002Fsecurity","3.modules\u002F2.problems\u002F10.security",{"title":148,"path":149,"stem":150,"description":151},"Быстрая отладка: `_pr`, `_log`, `_log1`","\u002Fmodules\u002Fproblems\u002Fdeffunctions","3.modules\u002F2.problems\u002F2.deffunctions","Функции объявляет def-functions.php, подключается он из include.php.",{"title":153,"path":154,"stem":155,"description":156},"Уровни логирования","\u002Fmodules\u002Fproblems\u002Floglevel","3.modules\u002F2.problems\u002F3.loglevel","Уровни — стандарт PSR-3, в Monolog это \\Monolog\\Level. Ниже — когда какой брать.",{"title":158,"path":159,"stem":160,"description":105},"[`\\Shef\\Problems\\Integration\\Monolog`] Monolog","\u002Fmodules\u002Fproblems\u002Fmonolog","3.modules\u002F2.problems\u002F4.monolog",{"title":162,"path":163,"stem":164,"description":165},"Ротация логов","\u002Fmodules\u002Fproblems\u002Flogrotate","3.modules\u002F2.problems\u002F5.logrotate","Логи модуля лежат в каталоге логов — по умолчанию на уровень выше корня сайта,\nдля BitrixVM \u002Fhome\u002Fbitrix\u002Fsh_log\u002F*.log, — и сами не чистятся. Ротацию делает\nlogrotate — системная утилита, а не Monolog: Monolog тоже умеет\n(RotatingFileHandler), но тогда за файлами следит каждый PHP-процесс, а не\nодна служба.",{"title":128,"path":167,"stem":168,"description":105},"\u002Fmodules\u002Fproblems\u002Fagent-rules","3.modules\u002F2.problems\u002F6.agent-rules",{"title":82,"path":170,"stem":171,"description":85},"\u002Fmodules\u002Fproblems\u002Fbuild-and-install","3.modules\u002F2.problems\u002F7.build-and-install",{"title":87,"path":173,"stem":174,"description":90},"\u002Fmodules\u002Fproblems\u002Fmodule-structure","3.modules\u002F2.problems\u002F8.module-structure",{"title":92,"path":176,"stem":177,"description":178},"\u002Fmodules\u002Fproblems\u002Fportal-check","3.modules\u002F2.problems\u002F9.portal-check","Всё, что ниже рантайма Битрикса, тестами не закрыть: установка, права, меню,\nраскладка файлов, журнал событий, поведение при обновлении. Проверять это\nприходится руками — и лучше по списку, потому что забытый шаг находит не\nразработчик, а клиент.",{"title":180,"description":6,"path":181,"stem":182,"children":183},"shef.insync","\u002Fmodules\u002Finsync","3.modules\u002F3.insync\u002Findex",[184,186,191,194,198,203,208,213,218,222,227,232,235],{"title":180,"path":181,"stem":182,"description":185},"агенты, импорт, API-клиенты, модели",{"title":187,"path":188,"stem":189,"description":190},"[`\\Shef\\InSync\\Agents`] Агенты","\u002Fmodules\u002Finsync\u002Fagents","3.modules\u002F3.insync\u002F1.agents","Агент импорта — наследник \\Shef\\InSync\\Agents\\AAgent. Описание агента для\nb_agent — \\Shef\\InSync\\Agents\\Entity, установку и управление берёт на себя\n\\Shef\\InSync\\Agents\\Manager.",{"title":87,"path":192,"stem":193,"description":90},"\u002Fmodules\u002Finsync\u002Fmodule-structure","3.modules\u002F3.insync\u002F10.module-structure",{"title":92,"path":195,"stem":196,"description":197},"\u002Fmodules\u002Finsync\u002Fportal-check","3.modules\u002F3.insync\u002F11.portal-check","Всё, что ниже рантайма Битрикса, тестами не закрыть: установка, права, левое\nменю, раскладка компонентов, агенты, таблица импорта, поведение при\nобновлении. Проверять это приходится руками — и лучше по списку, потому что\nзабытый шаг находит не разработчик, а клиент.",{"title":199,"path":200,"stem":201,"description":202},"Безопасность","\u002Fmodules\u002Finsync\u002Fsecurity","3.modules\u002F3.insync\u002F12.security","Модуль даёт другим модулям заготовки для синхронизаций, и самые опасные места\nу него общие с ними: кто может запускать агенты и импорт, что ложится в каталоги\nимпорта, что уходит в SQL и в лог. Ниже — что держит модуль и что остаётся\nпроекту.",{"title":204,"path":205,"stem":206,"description":207},"[`\\Shef\\InSync\\Sync`] Импорт","\u002Fmodules\u002Finsync\u002Fimport","3.modules\u002F3.insync\u002F2.import","Импорт идёт в два шага через таблицу импорта \\Shef\\InSync\\Sync\\Model\\SyncTable\n(shef_insync_model):",{"title":209,"path":210,"stem":211,"description":212},"[`\\Shef\\InSync\\Api`] API","\u002Fmodules\u002Finsync\u002Fapi","3.modules\u002F3.insync\u002F3.api","Обращение к внешнему API по HTTP — наследник \\Shef\\InSync\\Api\\AConnector.",{"title":214,"path":215,"stem":216,"description":217},"[`\\Shef\\InSync\\TraitList\\Xml`] Парсинг XML","\u002Fmodules\u002Finsync\u002Fxml","3.modules\u002F3.insync\u002F4.xml","Разбор XML сделан через SbWereWolf\u002Fxml-navigator\n(статья на Хабре): XMLReader идёт по\nдокументу потоком, а каждый элемент с нужным тегом HierarchyComposer\nпревращает в массив — n имя, v значение, a атрибуты, s вложенные\nэлементы.",{"title":219,"path":220,"stem":221,"description":105},"Компоненты","\u002Fmodules\u002Finsync\u002Fcomponents","3.modules\u002F3.insync\u002F5.components",{"title":223,"path":224,"stem":225,"description":226},"Страницы","\u002Fmodules\u002Finsync\u002Fpage","3.modules\u002F3.insync\u002F6.page","Страницы модуля — в левом меню, штатным разделом intranet\n(Bitrix\\Intranet\\CustomSection): раздел «SH Импорт», код shinsync.\nВерхней панели и shef.uiclear больше нет.",{"title":228,"path":229,"stem":230,"description":231},"[`\\Shef\\InSync\\Main\\Options`] Опции настроек модуля","\u002Fmodules\u002Finsync\u002Foptions","3.modules\u002F3.insync\u002F7.options","Опции для страницы настроек модуля импорта (на ShOptionsConfig из\nshef.options): добавьте их во вкладку своего options_conf.php.",{"title":128,"path":233,"stem":234,"description":105},"\u002Fmodules\u002Finsync\u002Fagent-rules","3.modules\u002F3.insync\u002F8.agent-rules",{"title":82,"path":236,"stem":237,"description":85},"\u002Fmodules\u002Finsync\u002Fbuild-and-install","3.modules\u002F3.insync\u002F9.build-and-install",{"id":239,"title":77,"body":240,"description":80,"extension":666,"meta":667,"navigation":668,"path":78,"rawbody":669,"seo":670,"stem":79,"__hash__":671},"docs\u002F3.modules\u002F1.options\u002F1.installer.md",{"type":241,"value":242,"toc":651},"minimark",[243,246,258,312,321,328,344,352,399,408,411,547,556,578,582,585,615,628,638],[244,245,80],"p",{},[247,248,250,257],"h2",{"id":249},"installator-интерфейсы",[251,252,253],"span",{},[254,255,256],"code",{},"Installator"," Интерфейсы",[259,260,261,276],"table",{},[262,263,264],"thead",{},[265,266,267,272],"tr",{},[268,269,271],"th",{"align":270},"right","Название",[268,273,275],{"align":274},"left","Описание",[277,278,279,288,296,304],"tbody",{},[265,280,281,285],{},[282,283,284],"td",{"align":270},"Installator\\IInstallator",[282,286,287],{"align":274},"Интерфейс установщика",[265,289,290,293],{},[282,291,292],{"align":270},"Installator\\IEntity",[282,294,295],{"align":274},"Описывает устанавливаемую сущность",[265,297,298,301],{},[282,299,300],{"align":270},"Installator\\IEntityUf",[282,302,303],{"align":274},"Интерфейс для перечисления UF сущности. В Стратегии установки влияет на установку UF",[265,305,306,309],{},[282,307,308],{"align":270},"Installator\\ISaveOption",[282,310,311],{"align":274},"Интерфейс указывает что ID новой сущности нужно сохранить в свойство после создания",[247,313,315,320],{"id":314},"installatormanager-установщик",[251,316,317],{},[254,318,319],{},"Installator\\Manager"," Установщик",[244,322,323,324,327],{},"Получает на вход стратегию ",[254,325,326],{},"Installator\\Strategy\\IStrategy"," установки.",[329,330,331,338],"ul",{},[332,333,334,337],"li",{},[254,335,336],{},"Installator\\Manager::build"," устанавливает коллекцию сущностей",[332,339,340,343],{},[254,341,342],{},"Installator\\Manager::process"," устанавливает сущность",[247,345,347,351],{"id":346},"installatorstrategyistrategy-стратегии-установки",[251,348,349],{},[254,350,326],{}," Стратегии установки",[259,353,354,362],{},[262,355,356],{},[265,357,358,360],{},[268,359,271],{"align":270},[268,361,275],{"align":274},[277,363,364,372,380,391],{},[265,365,366,369],{},[282,367,368],{"align":270},"Strategy\\SmartProcessTypeStrategy",[282,370,371],{"align":274},"Реализует установку типа смарт-процесса",[265,373,374,377],{},[282,375,376],{"align":270},"Strategy\\CrmPresetStrategy",[282,378,379],{"align":274},"Реализует установку пресета реквизитов",[265,381,382,385],{},[282,383,384],{"align":270},"Strategy\\UfStrategy",[282,386,387,388],{"align":274},"Реализует установку UF через ",[254,389,390],{},"Bitrix\\Main\\Controller\\UserFieldConfig",[265,392,393,396],{},[282,394,395],{"align":270},"Strategy\\UfOldStrategy",[282,397,398],{"align":274},"Реализует установку UF через старые функции",[247,400,402,407],{"id":401},"installatorentity-сущности",[251,403,404],{},[254,405,406],{},"Installator\\Entity"," Сущности",[244,409,410],{},"Эти сущности будет установлены",[259,412,413,421],{},[262,414,415],{},[265,416,417,419],{},[268,418,271],{"align":270},[268,420,275],{"align":274},[277,422,423,433,441,449,457,465,474,482,490,498,506,514,522,530,540],{},[265,424,425,431],{},[282,426,427],{"align":270},[428,429,430],"strong",{},"Entity\\Crm",[282,432],{"align":274},[265,434,435,438],{},[282,436,437],{"align":270},"Entity\\Crm\\ASmartProcessType",[282,439,440],{"align":274},"Абстракция для смартпроцессов",[265,442,443,446],{},[282,444,445],{"align":270},"Entity\\Crm\\ASmartProcessTypeUf",[282,447,448],{"align":274},"Абстрацкия UF для смартпроцессов",[265,450,451,454],{},[282,452,453],{"align":270},"Entity\\Crm\\APreset",[282,455,456],{"align":274},"Абстракция для пресетов реквизитов",[265,458,459,462],{},[282,460,461],{"align":270},"Entity\\Crm\\PresetField",[282,463,464],{"align":274},"Описывает поле пресета реквизита",[265,466,467,472],{},[282,468,469],{"align":270},[428,470,471],{},"Entity\\UF",[282,473],{"align":274},[265,475,476,479],{},[282,477,478],{"align":270},"Entity\\UF\\AEntity",[282,480,481],{"align":274},"Абстрацкия UF",[265,483,484,487],{},[282,485,486],{"align":270},"Entity\\UF\\AEntityEnum",[282,488,489],{"align":274},"Абстрацкия UF типа перечисление",[265,491,492,495],{},[282,493,494],{"align":270},"Entity\\UF\\EnumItem",[282,496,497],{"align":274},"Реализация элемента перечисления UF типа перечисление",[265,499,500,503],{},[282,501,502],{"align":270},"Entity\\UF\\IEnumStatus",[282,504,505],{"align":274},"Интерфейс перечисления для статусов",[265,507,508,511],{},[282,509,510],{"align":270},"Entity\\UF\\EEnumStatus",[282,512,513],{"align":274},"Перечисление для статусов",[265,515,516,519],{},[282,517,518],{"align":270},"Entity\\UF\\EEntityId",[282,520,521],{"align":274},"Перечисление объектов к которым можно привязать UF",[265,523,524,527],{},[282,525,526],{"align":270},"Entity\\UF\\EType",[282,528,529],{"align":274},"Перечисление типов UF",[265,531,532,537],{},[282,533,534],{"align":270},[428,535,536],{},"Entity\\UF\\Strategy",[282,538,539],{"align":274},"Стратегии получения настроек UF",[265,541,542,544],{},[282,543],{"align":270},[282,545,546],{"align":274},"Под каждый тип UF своя стратегия",[247,548,550,555],{"id":549},"installatortrait-трейты",[251,551,552],{},[254,553,554],{},"Installator\\Trait"," Трейты",[259,557,558,566],{},[262,559,560],{},[265,561,562,564],{},[268,563,271],{"align":270},[268,565,275],{"align":274},[277,567,568],{},[265,569,570,573],{},[282,571,572],{"align":270},"Trait\\EntityUfTrait",[282,574,575,576],{"align":274},"Перечисление UF сущности для тех, кто реализует ",[254,577,300],{},[247,579,581],{"id":580},"две-ветки-установки-uf-и-это-не-дубль","Две ветки установки UF — и это не дубль",[244,583,584],{},"В модуле живут две независимые реализации, и путать их нельзя:",[329,586,587,597],{},[332,588,589,592,593,596],{},[254,590,591],{},"Installator\\Entity\\UF\\*"," со стратегиями ",[254,594,595],{},"Installator\\Entity\\UF\\Strategy\\*"," —\nта, что описана выше: сущность несёт своё описание, стратегия под каждый тип\nUF отдаёт настройки;",[332,598,599,602,603,606,607,610,611,614],{},[254,600,601],{},"Installator\\Uf\\*"," — своя ветка со своим ",[254,604,605],{},"Installator\\Uf\\Manager",", типами\n",[254,608,609],{},"Installator\\Uf\\Type\\*"," и стратегиями ",[254,612,613],{},"Installator\\Uf\\Type\\Strategy\\*",".",[244,616,617,619,620,623,624,627],{},[254,618,395],{}," — не «устаревшая копия» ",[254,621,622],{},"UfStrategy",", а рабочая\nстратегия установки UF через старые функции ядра. Она живёт в новой ветке как\nзапасной путь, когда ",[254,625,626],{},"\\Bitrix\\Main\\Controller\\UserFieldConfig"," неприменим.",[244,629,630,634,635],{},[631,632,633],"a",{"href":71},"↑ Содержание"," | ",[631,636,637],{"href":98},"Опции настроек модуля →",[639,640,641],"note",{},[244,642,643,644,650],{},"Источник: ",[631,645,649],{"href":646,"rel":647},"https:\u002F\u002Fgithub.com\u002Fbx-shef\u002Foptions\u002Fblob\u002Fmain\u002Fdocs\u002F2_installer.md",[648],"nofollow","options\u002Fdocs\u002F2_installer.md"," — правки туда, сайт пересобирается сам.",{"title":105,"searchDepth":652,"depth":652,"links":653},3,[654,657,659,661,663,665],{"id":249,"depth":655,"text":656},2,"Installator Интерфейсы",{"id":314,"depth":655,"text":658},"Installator\\Manager Установщик",{"id":346,"depth":655,"text":660},"Installator\\Strategy\\IStrategy Стратегии установки",{"id":401,"depth":655,"text":662},"Installator\\Entity Сущности",{"id":549,"depth":655,"text":664},"Installator\\Trait Трейты",{"id":580,"depth":655,"text":581},"md",{},true,"---\ntitle: \"[`\\\\Shef\\\\Options\\\\Installator`] Installer\"\n---\n\nДля облегчения установок.\n\n## [`Installator`] Интерфейсы\n|                 Название | Описание                                                                             |\n|-------------------------:|:-------------------------------------------------------------------------------------|\n| Installator\\IInstallator | Интерфейс установщика                                                                |\n|      Installator\\IEntity | Описывает устанавливаемую сущность                                                   |\n|    Installator\\IEntityUf | Интерфейс для перечисления UF сущности. В Стратегии установки влияет на установку UF |\n|  Installator\\ISaveOption | Интерфейс указывает что ID новой сущности нужно сохранить в свойство после создания  |\n\n\n## [`Installator\\Manager`] Установщик\nПолучает на вход стратегию `Installator\\Strategy\\IStrategy` установки.\n\n* `Installator\\Manager::build` устанавливает коллекцию сущностей\n* `Installator\\Manager::process` устанавливает сущность\n\n## [`Installator\\Strategy\\IStrategy`] Стратегии установки\n|                          Название | Описание                                                              |\n|----------------------------------:|:----------------------------------------------------------------------|\n| Strategy\\SmartProcessTypeStrategy | Реализует установку типа смарт-процесса                               |\n|        Strategy\\CrmPresetStrategy | Реализует установку пресета реквизитов                                |\n|              Strategy\\UfStrategy | Реализует установку UF через `Bitrix\\Main\\Controller\\UserFieldConfig` |\n|            Strategy\\UfOldStrategy | Реализует установку UF через старые функции                           |\n\n## [`Installator\\Entity`] Сущности\nЭти сущности будет установлены\n\n|                       Название | Описание                                              |\n|-------------------------------:|:------------------------------------------------------|\n|                 **Entity\\Crm** |                                                       |\n|   Entity\\Crm\\ASmartProcessType | Абстракция для смартпроцессов                         |\n| Entity\\Crm\\ASmartProcessTypeUf | Абстрацкия UF для смартпроцессов                      |\n|             Entity\\Crm\\APreset | Абстракция для пресетов реквизитов                    |\n|         Entity\\Crm\\PresetField | Описывает поле пресета реквизита                      |\n|                  **Entity\\UF** |                                                       |\n|              Entity\\UF\\AEntity | Абстрацкия UF                                         |\n|          Entity\\UF\\AEntityEnum | Абстрацкия UF типа перечисление                       |\n|             Entity\\UF\\EnumItem | Реализация элемента перечисления UF типа перечисление |\n|          Entity\\UF\\IEnumStatus | Интерфейс перечисления для статусов                   |\n|          Entity\\UF\\EEnumStatus | Перечисление для статусов                             |\n|            Entity\\UF\\EEntityId | Перечисление объектов к которым можно привязать UF    |\n|               Entity\\UF\\EType | Перечисление типов UF                                |\n|         **Entity\\UF\\Strategy** | Стратегии получения настроек UF                       |\n|                                | Под каждый тип UF своя стратегия                      |\n\n## [`Installator\\Trait`] Трейты\n\n|                Название | Описание                                                                 |\n|------------------------:|:--------------------------------------------------------------------------|\n| Trait\\EntityUfTrait | Перечисление UF сущности для тех, кто реализует `Installator\\IEntityUf` |\n\n## Две ветки установки UF — и это не дубль\n\nВ модуле живут две независимые реализации, и путать их нельзя:\n\n* `Installator\\Entity\\UF\\*` со стратегиями `Installator\\Entity\\UF\\Strategy\\*` —\n  та, что описана выше: сущность несёт своё описание, стратегия под каждый тип\n  UF отдаёт настройки;\n* `Installator\\Uf\\*` — своя ветка со своим `Installator\\Uf\\Manager`, типами\n  `Installator\\Uf\\Type\\*` и стратегиями `Installator\\Uf\\Type\\Strategy\\*`.\n\n`Strategy\\UfOldStrategy` — не «устаревшая копия» `UfStrategy`, а рабочая\nстратегия установки UF через старые функции ядра. Она живёт в новой ветке как\nзапасной путь, когда `\\Bitrix\\Main\\Controller\\UserFieldConfig` неприменим.\n\n[↑ Содержание](\u002Fmodules\u002Foptions) | [Опции настроек модуля →](\u002Fmodules\u002Foptions\u002Foptions)\n\n::note\nИсточник: [options\u002Fdocs\u002F2_installer.md](https:\u002F\u002Fgithub.com\u002Fbx-shef\u002Foptions\u002Fblob\u002Fmain\u002Fdocs\u002F2_installer.md) — правки туда, сайт пересобирается сам.\n::\n\n",{"title":77,"description":80},"j6FCjvxYeIZDsmpzO9dmpW3QGiDTyG6xD39LsNCR5yk",[673,674],{"title":70,"path":71,"stem":72,"description":75,"children":-1},{"title":82,"path":83,"stem":84,"description":85,"children":-1},1790857269436]