diff --git a/doctors/code.php b/doctors/code.php
new file mode 100644
index 0000000..797e3c7
--- /dev/null
+++ b/doctors/code.php
@@ -0,0 +1,12 @@
+SetTitle('Врачи');
+?>
+
+232
+SetTitle("Врачи");
+?>$APPLICATION->IncludeComponent(
+ "custom:doctors.manager",
+ "",
+ Array(
+
+ )
+);?>
\ No newline at end of file
diff --git a/local/components/custom/doctors.manager/.description.php b/local/components/custom/doctors.manager/.description.php
new file mode 100644
index 0000000..cfb0df3
--- /dev/null
+++ b/local/components/custom/doctors.manager/.description.php
@@ -0,0 +1,14 @@
+ 'Менеджер докторов',
+ 'DESCRIPTION' => 'Комплексный компонент для управления докторами ',
+ 'ICON' => '/images/icon.gif',
+ 'CACHE_PATH' => 'Y',
+ 'PATH' => array(
+ 'ID' => 'custom',
+ 'NAME' => 'Кастомные компоненты'
+ ),
+ 'COMPLEX' => 'Y'
+);
\ No newline at end of file
diff --git a/local/components/custom/doctors.manager/.parameters.php b/local/components/custom/doctors.manager/.parameters.php
new file mode 100644
index 0000000..e69ddb3
--- /dev/null
+++ b/local/components/custom/doctors.manager/.parameters.php
@@ -0,0 +1,45 @@
+ array(
+
+ 'DETAIL_URL' => array(
+ 'PARENT' => 'URL_TEMPLATES',
+ 'NAME' => 'URL детальной страницы',
+ 'TYPE' => 'STRING',
+ 'DEFAULT' => 'index.php?ID=#ELEMENT_ID#'
+ ),
+ 'EDIT_URL' => array(
+ 'PARENT' => 'URL_TEMPLATES',
+ 'NAME' => 'URL редактирования',
+ 'TYPE' => 'STRING',
+ 'DEFAULT' => 'index.php?ID=#ELEMENT_ID#&action=edit'
+ ),
+ 'ADD_URL' => array(
+ 'PARENT' => 'URL_TEMPLATES',
+ 'NAME' => 'URL добавления',
+ 'TYPE' => 'STRING',
+ 'DEFAULT' => 'index.php?action=add'
+ ),
+ 'LIST_URL' => array(
+ 'PARENT' => 'URL_TEMPLATES',
+ 'NAME' => 'URL списка',
+ 'TYPE' => 'STRING',
+ 'DEFAULT' => 'index.php'
+ ),
+ 'ADD_PROC' => array(
+ 'PARENT' => 'URL_TEMPLATES',
+ 'NAME' => 'Добавление процедуры',
+ 'TYPE' => 'STRING',
+ 'DEFAULT' => 'index.php?action=proc_add'
+ ),
+ 'SET_TITLE' => array(
+ 'PARENT' => 'ADDITIONAL_SETTINGS',
+ 'NAME' => 'Устанавливать заголовок страницы',
+ 'TYPE' => 'CHECKBOX',
+ 'DEFAULT' => 'Y'
+ ),
+ )
+);
+?>
\ No newline at end of file
diff --git a/local/components/custom/doctors.manager/class.php b/local/components/custom/doctors.manager/class.php
new file mode 100644
index 0000000..e624c8e
--- /dev/null
+++ b/local/components/custom/doctors.manager/class.php
@@ -0,0 +1,234 @@
+checkModules();
+ $this->determineAction();
+ $this->includeComponentTemplate($this->arResult['TEMPLATE_PAGE']);
+ } catch (Exception $e) {
+ $this->errors[] = $e->getMessage();
+ $this->arResult['ERRORS'] = $this->errors;
+ //$this->includeComponentTemplate('error');
+ }
+ }
+
+ private function checkModules()
+ {
+ if (!Loader::IncludeModule("iblock")) {
+ throw new Exception('Модуль инфоблоков не установлен');
+ }
+ }
+
+ private function determineAction()
+ {
+ $action = $this->request->get('action');
+ $elementId = $this->request->get('ID');
+
+ switch ($action) {
+ case 'add':
+ $this->processAdd();
+ $templatePage = 'add';
+ break;
+ case 'add_proc':
+ $this->processAddProc();
+ $templatePage = 'proc_add';
+ break;
+ case 'edit':
+ $this->processEdit($elementId);
+ $templatePage = 'edit';
+ break;
+ case 'detail':
+ $this->processDetail($elementId);
+ $templatePage = 'detail';
+ break;
+ default:
+ $this->processList();
+ $templatePage = 'list';
+ break;
+ }
+
+ $this->arResult['TEMPLATE_PAGE'] = $templatePage;
+ }
+
+ private function processList()
+ {
+
+ $doctors = DoctorsTable::query()
+ ->setSelect([
+ 'NAME' => 'ELEMENT.NAME',
+ 'LAST_NAME',
+ 'MIDDLE_NAME',
+ 'ID' => 'ELEMENT.ID'
+
+ ])
+ ->fetchCollection();
+
+ $this->arResult['ITEMS'] = [];
+
+ foreach ($doctors as $doctor) {
+
+ $this->arResult['ITEMS'][] = [
+ 'ID' => $doctor->getElement()->getId(),
+ 'NAME' => $doctor->getElement()->getName(),
+ 'MIDDLE_NAME' => $doctor->getMiddleName(),
+ 'LAST_NAME' => $doctor->getLastName(),
+ ];
+
+ }
+
+
+ if ($this->arParams['SET_TITLE'] === 'Y') {
+ $GLOBALS['APPLICATION']->SetTitle('Список врачей');
+ }
+ }
+
+ protected function getDoctorById(int $elementId) : array
+ {
+ $doctor = DoctorsTable::query()
+ ->setSelect([
+ '*',
+ 'NAME' => 'ELEMENT.NAME',
+ 'PROC_IDS',
+ 'ID' => 'ELEMENT.ID'
+ ])->where("ID", $elementId)
+ ->fetch();
+
+ if (!$doctor) {
+ throw new Exception('Элемент не найден');
+ }
+
+ if($doctor['PROC_IDS']){
+ $doctor["PROCS"] = ProcsTable::query()
+ ->setSelect(['NAME' => 'ELEMENT.NAME', 'ID' => 'ELEMENT.ID'])
+ ->where("ELEMENT.ID", 'in', $doctor['PROC_IDS'])
+ ->fetchAll();
+ }
+
+ return $doctor ?: [];
+ }
+
+ protected function getAllProcedures() : array
+ {
+ $procs = ProcsTable::query()
+ ->setSelect(['NAME' => 'ELEMENT.NAME', 'ID' => 'ELEMENT.ID'])
+ ->fetchAll();
+
+ return $procs ?: [];
+ }
+
+
+
+ private function processDetail($elementId)
+ {
+ if (!$elementId) {
+ throw new Exception('Не указан ID элемента');
+ }
+
+ $this->arResult = $this->getDoctorById($elementId);
+
+ if ($this->arParams['SET_TITLE'] === 'Y') {
+ $GLOBALS['APPLICATION']->SetTitle($this->arResult['NAME']);
+ }
+ }
+
+ private function processAdd()
+ {
+
+ if ($this->request->isPost() && check_bitrix_sessid()) {
+ //$this->saveElement();
+
+ $fields['NAME'] = $this->request->getPost('NAME');
+ $fields['MIDDLE_NAME'] = $this->request->getPost('MIDDLE_NAME');
+ $fields['LAST_NAME'] = $this->request->getPost('LAST_NAME');
+ $fields['PROC_IDS'] = $this->request->getPost('PROC_IDS');
+
+ if( DoctorsTable::add($fields)){
+ header('Location: /doctors');
+ exit();
+ } else echo "Произошла ошибка";
+
+ }
+
+ $this->arResult['ALL_PROCEDURES'] = $this->getAllProcedures();
+
+ if ($this->arParams['SET_TITLE'] === 'Y') {
+ $GLOBALS['APPLICATION']->SetTitle('Добавление доктора');
+ }
+ }
+
+ private function processAddProc()
+ {
+
+ if ($this->request->isPost() && check_bitrix_sessid()) {
+ //$this->saveElement();
+
+ $fields['NAME'] = $this->request->getPost('NAME');
+
+
+ if( ProcsTable::add($fields)){
+ header('Location: /doctors');
+ exit();
+ } else echo "Произошла ошибка";
+
+ }
+
+ if ($this->arParams['SET_TITLE'] === 'Y') {
+ $GLOBALS['APPLICATION']->SetTitle('Добавление процедуры');
+ }
+ }
+
+ private function processEdit($elementId)
+ {
+ if (!$elementId) {
+ throw new Exception('Не указан ID элемента');
+ }
+
+ $this->arResult = $this->getDoctorById($elementId);
+
+ $this->arResult['ALL_PROCEDURES'] = $this->getAllProcedures();
+
+
+ if ($this->request->isPost() && check_bitrix_sessid()) {
+
+ //echo "
"; var_dump($this->request->getPostList()); echo "
"; die();
+
+ \CIBlockElement::SetPropertyValues($elementId, DoctorsTable::IBLOCK_ID, $this->request->getPost('PROC_IDS'), "PROC_IDS");
+
+ $fields['NAME'] = $this->request->getPost('NAME');
+ $fields['MIDDLE_NAME'] = $this->request->getPost('MIDDLE_NAME');
+ $fields['LAST_NAME'] = $this->request->getPost('LAST_NAME');
+
+
+ if(DoctorsTable::update($elementId, $fields)){
+ header('Location: /doctors');
+ exit();
+ }
+
+ }
+
+ if ($this->arParams['SET_TITLE'] === 'Y') {
+ $GLOBALS['APPLICATION']->SetTitle('Редактирование: ' . $this->arResult['NAME']);
+ }
+ }
+
+
+
+}
\ No newline at end of file
diff --git a/local/components/custom/doctors.manager/templates/.default/add.php b/local/components/custom/doctors.manager/templates/.default/add.php
new file mode 100644
index 0000000..b473953
--- /dev/null
+++ b/local/components/custom/doctors.manager/templates/.default/add.php
@@ -0,0 +1,38 @@
+
+
+
diff --git a/local/components/custom/doctors.manager/templates/.default/detail.php b/local/components/custom/doctors.manager/templates/.default/detail.php
new file mode 100644
index 0000000..c934810
--- /dev/null
+++ b/local/components/custom/doctors.manager/templates/.default/detail.php
@@ -0,0 +1,28 @@
+
+
+
+
+
+
+
=$arResult['LAST_NAME'] . " " . $arResult['NAME'] . " " . $arResult['MIDDLE_NAME']?>
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/local/components/custom/doctors.manager/templates/.default/edit.php b/local/components/custom/doctors.manager/templates/.default/edit.php
new file mode 100644
index 0000000..a331c30
--- /dev/null
+++ b/local/components/custom/doctors.manager/templates/.default/edit.php
@@ -0,0 +1,41 @@
+
+
+
diff --git a/local/components/custom/doctors.manager/templates/.default/list.php b/local/components/custom/doctors.manager/templates/.default/list.php
new file mode 100644
index 0000000..d956a50
--- /dev/null
+++ b/local/components/custom/doctors.manager/templates/.default/list.php
@@ -0,0 +1,35 @@
+
+
+
+
\ No newline at end of file
diff --git a/local/components/custom/doctors.manager/templates/.default/proc_add.php b/local/components/custom/doctors.manager/templates/.default/proc_add.php
new file mode 100644
index 0000000..f030703
--- /dev/null
+++ b/local/components/custom/doctors.manager/templates/.default/proc_add.php
@@ -0,0 +1,19 @@
+
+
+
\ No newline at end of file
diff --git a/local/components/custom/doctors.manager/templates/.default/style.css b/local/components/custom/doctors.manager/templates/.default/style.css
new file mode 100644
index 0000000..20e23cd
--- /dev/null
+++ b/local/components/custom/doctors.manager/templates/.default/style.css
@@ -0,0 +1,75 @@
+.doctors-list__title {
+ text-align: center;
+ margin-bottom: 40px;
+}
+
+.doctors-list__actions {
+ display: flex;
+ gap: 20px;
+ margin-bottom: 20px;
+}
+
+
+.doctors-list__action {
+ padding: 4px 20px;
+ background: #dfe0e3;
+ border: 1px solid #c9ccd0;
+ border-radius: 5px;
+ color: #000;
+ text-transform: uppercase;
+ font-weight: 500;
+}
+
+.doctors-list__items {
+ display: flex;
+ gap: 32px;
+ flex-wrap: wrap;
+ justify-content: center;
+}
+
+.doctors-list__item {
+ flex: 0 0 200px;
+ display: flex;
+}
+
+.doctors-list__item-wrap{
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ background: #ccc;
+ text-align: center;
+ padding: 20px;
+}
+
+.doctor-detail__actions{
+ display: flex;
+ gap: 20px;
+ margin-bottom: 20px;
+}
+
+.doctor-detail__action {
+ padding: 4px 20px;
+ background: #dfe0e3;
+ border: 1px solid #c9ccd0;
+ border-radius: 5px;
+ color: #000;
+ text-transform: uppercase;
+ font-weight: 500;
+}
+
+.doctor-edit-form__content {
+ display: flex;
+ flex-direction: column;
+ gap: 8px;
+ max-width: 500px;
+}
+
+.doctor-edit-form__input-text {
+ height: 35px;
+ padding: 0 16px;
+}
+
+.doctor-edit-form__submit {
+ height: 35px;
+ cursor: pointer;
+}
\ No newline at end of file
diff --git a/local/php_interface/include/classes/Otus/Models/AbstractIblockPropertyValuesTable.php b/local/php_interface/include/classes/Otus/Models/AbstractIblockPropertyValuesTable.php
new file mode 100644
index 0000000..d7c6e94
--- /dev/null
+++ b/local/php_interface/include/classes/Otus/Models/AbstractIblockPropertyValuesTable.php
@@ -0,0 +1,287 @@
+initCache(3600, md5($cacheDir), $cacheDir)) {
+ $map = $cache->getVars();
+
+ } else {
+ $cache->startDataCache();
+
+ $map['IBLOCK_ELEMENT_ID'] = new IntegerField('IBLOCK_ELEMENT_ID', ['primary' => true]);
+ $map['ELEMENT'] = new ReferenceField(
+ 'ELEMENT',
+ ElementTable::class,
+ ['=this.IBLOCK_ELEMENT_ID' => 'ref.ID']
+ );
+
+ foreach (static::getProperties() as $property) {
+ if ($property['MULTIPLE'] === 'Y') {
+ $map[$property['CODE']] = new ExpressionField(
+ $property['CODE'],
+ sprintf('(select group_concat(`VALUE` SEPARATOR "\0") as VALUE from %s as m where m.IBLOCK_ELEMENT_ID = %s and m.IBLOCK_PROPERTY_ID = %d)',
+ static::getTableNameMulti(),
+ '%s',
+ $property['ID']
+ ),
+ ['IBLOCK_ELEMENT_ID'],
+ ['fetch_data_modification' => [static::class, 'getMultipleFieldValueModifier']]
+ );
+
+ if ($property['USER_TYPE'] === 'EList') {
+ $map[$property['CODE'].'_ELEMENT_NAME'] = new ExpressionField(
+ $property['CODE'].'_ELEMENT_NAME',
+ sprintf('(select group_concat(e.NAME SEPARATOR "\0") as VALUE from %s as m join b_iblock_element as e on m.VALUE = e.ID where m.IBLOCK_ELEMENT_ID = %s and m.IBLOCK_PROPERTY_ID = %d)',
+ static::getTableNameMulti(),
+ '%s',
+ $property['ID']
+ ),
+ ['IBLOCK_ELEMENT_ID'],
+ ['fetch_data_modification' => [static::class, 'getMultipleFieldValueModifier']]
+ );
+ }
+
+ $map[$property['CODE'].'|SINGLE'] = new ReferenceField(
+ $property['CODE'].'|SINGLE',
+ $multipleValuesTableClass,
+ [
+ '=this.IBLOCK_ELEMENT_ID' => 'ref.IBLOCK_ELEMENT_ID',
+ '=ref.IBLOCK_PROPERTY_ID' => new SqlExpression('?i', $property['ID'])
+ ]
+ );
+
+ continue;
+ }
+
+ if ($property['PROPERTY_TYPE'] == PropertyTable::TYPE_NUMBER) {
+ $map[$property['CODE']] = new IntegerField("PROPERTY_{$property['ID']}");
+ } elseif ($property['USER_TYPE'] === 'Date') {
+ $map[$property['CODE']] = new DatetimeField("PROPERTY_{$property['ID']}");
+ } else {
+ $map[$property['CODE']] = new StringField("PROPERTY_{$property['ID']}");
+ }
+
+ if ($property['PROPERTY_TYPE'] === 'E' && ($property['USER_TYPE'] === 'EList' || is_null($property['USER_TYPE']))) {
+ $map[$property['CODE'].'_ELEMENT'] = new ReferenceField(
+ $property['CODE'].'_ELEMENT',
+ ElementTable::class,
+ ["=this.{$property['CODE']}" => 'ref.ID']
+ );
+ }
+ }
+
+ if (empty($map)) {
+ $cache->abortDataCache();
+ } else {
+ $cache->endDataCache($map);
+ }
+ }
+
+ return $map;
+ }
+
+ /**
+ * @param array $data
+ *
+ * @return bool
+ */
+ public static function add(array $data): bool
+ {
+ static::$iblockElement ?? static::$iblockElement = new CIBlockElement();
+ $fields = [
+ 'NAME' => $data['NAME'],
+ 'IBLOCK_ID' => static::IBLOCK_ID,
+ 'PROPERTY_VALUES' => $data,
+ ];
+
+ return static::$iblockElement->Add($fields);
+ }
+
+ /**
+ * @param $primary
+ *
+ * @return DeleteResult
+ * @throws NotImplementedException
+ */
+ public static function delete($primary): DeleteResult
+ {
+ #TODO Implement function
+ throw new NotImplementedException();
+ }
+
+ /**
+ * @return array
+ * @throws ArgumentException
+ * @throws SystemException
+ * @throws ObjectPropertyException
+ */
+ public static function getProperties(): array
+ {
+ if (isset(static::$properties[static::IBLOCK_ID])) {
+ return static::$properties[static::IBLOCK_ID];
+ }
+
+ $dbResult = PropertyTable::query()
+ ->setSelect(['ID', 'CODE', 'PROPERTY_TYPE', 'MULTIPLE', 'NAME', 'USER_TYPE'])
+ ->where('IBLOCK_ID', static::IBLOCK_ID)
+ ->exec();
+ while ($row = $dbResult->fetch()) {
+ static::$properties[static::IBLOCK_ID][$row['CODE']] = $row;
+ }
+
+ return static::$properties[static::IBLOCK_ID] ?? [];
+ }
+
+ /**
+ * @param string $code
+ *
+ * @return int
+ * @throws ArgumentException
+ * @throws ObjectPropertyException
+ * @throws SystemException
+ */
+ public static function getPropertyId(string $code): int
+ {
+ return (int) static::getProperties()[$code]['ID'];
+ }
+
+ /**
+ * @return array
+ */
+ public static function getMultipleFieldValueModifier(): array
+ {
+ return [fn ($value) => array_filter(explode("\0", $value))];
+ }
+
+ /**
+ * @param int|null $iblockId
+ */
+ public static function clearPropertyMapCache(?int $iblockId = null): void
+ {
+ $iblockId = $iblockId ?: static::IBLOCK_ID;
+ if (empty($iblockId)) {
+ return;
+ }
+
+ Cache::clearCache(true, "iblock_property_map/$iblockId");
+ }
+
+ /**
+ * @param string $propertyCode
+ * @param string $byKey
+ *
+ * @return array
+ * @throws ArgumentException
+ * @throws ObjectPropertyException
+ * @throws SystemException
+ */
+ public static function getEnumPropertyOptions(string $propertyCode, string $byKey = 'ID'): array
+ {
+ $dbResult = PropertyEnumerationTable::getList([
+ 'select' => ['ID', 'VALUE', 'XML_ID', 'SORT'],
+ 'filter' => ['=PROPERTY.CODE' => $propertyCode, 'PROPERTY.IBLOCK_ID' => static::IBLOCK_ID],
+ ]);
+ while ($row = $dbResult->fetch()) {
+ $enumPropertyOptions[$row[$byKey]] = $row;
+ }
+
+ return $enumPropertyOptions ?? [];
+ }
+
+ /**
+ * @return string
+ */
+ private static function getMultipleValuesTableClass(): string
+ {
+ $className = end(explode('\\', static::class));
+ $namespace = str_replace('\\'.$className, '', static::class);
+ $className = str_replace('Table', 'MultipleTable', $className);
+
+ return $namespace.'\\'.$className;
+ }
+
+ /**
+ * @return void
+ */
+ private static function initMultipleValuesTableClass(): void
+ {
+ $className = end(explode('\\', static::class));
+ $namespace = str_replace('\\'.$className, '', static::class);
+ $className = str_replace('Table', 'MultipleTable', $className);
+
+ if (class_exists($namespace.'\\'.$className)) {
+ return;
+ }
+
+ $iblockId = static::IBLOCK_ID;
+
+// $php = << new ReferenceField(
+ 'PROCEDURES',
+ ProcsPropertyValuesTable::class,
+ ['=this.PROC_IDS' => 'ref.IBLOCK_ELEMENT_ID']
+ )
+ ];
+
+
+ return array_merge(parent::getMap(), $map);
+ }
+
+}
\ No newline at end of file
diff --git a/local/php_interface/include/classes/Otus/Models/Lists/ProcsPropertyValuesTable.php b/local/php_interface/include/classes/Otus/Models/Lists/ProcsPropertyValuesTable.php
new file mode 100644
index 0000000..f2f185e
--- /dev/null
+++ b/local/php_interface/include/classes/Otus/Models/Lists/ProcsPropertyValuesTable.php
@@ -0,0 +1,10 @@
+getHelperManager();
+ $iblockId = $helper->Iblock()->saveIblock(array (
+ 'IBLOCK_TYPE_ID' => 'lists',
+ 'LID' =>
+ array (
+ 0 => 'co',
+ 1 => 's1',
+ ),
+ 'CODE' => 'doctors',
+ 'API_CODE' => 'doctors',
+ 'REST_ON' => 'N',
+ 'NAME' => 'Врачи',
+ 'ACTIVE' => 'Y',
+ 'SORT' => '500',
+ 'LIST_PAGE_URL' => '#SITE_DIR#/lists/index.php?ID=#IBLOCK_ID#',
+ 'DETAIL_PAGE_URL' => '#SITE_DIR#/lists/detail.php?ID=#ELEMENT_ID#',
+ 'SECTION_PAGE_URL' => '#SITE_DIR#/lists/list.php?SECTION_ID=#SECTION_ID#',
+ 'CANONICAL_PAGE_URL' => '',
+ 'PICTURE' => NULL,
+ 'DESCRIPTION' => '',
+ 'DESCRIPTION_TYPE' => 'text',
+ 'RSS_TTL' => '24',
+ 'RSS_ACTIVE' => 'Y',
+ 'RSS_FILE_ACTIVE' => 'N',
+ 'RSS_FILE_LIMIT' => NULL,
+ 'RSS_FILE_DAYS' => NULL,
+ 'RSS_YANDEX_ACTIVE' => 'N',
+ 'XML_ID' => NULL,
+ 'INDEX_ELEMENT' => 'Y',
+ 'INDEX_SECTION' => 'Y',
+ 'WORKFLOW' => 'N',
+ 'BIZPROC' => 'N',
+ 'SECTION_CHOOSER' => 'L',
+ 'LIST_MODE' => '',
+ 'RIGHTS_MODE' => 'S',
+ 'SECTION_PROPERTY' => 'N',
+ 'PROPERTY_INDEX' => 'N',
+ 'VERSION' => '2',
+ 'LAST_CONV_ELEMENT' => '0',
+ 'SOCNET_GROUP_ID' => NULL,
+ 'EDIT_FILE_BEFORE' => '',
+ 'EDIT_FILE_AFTER' => '',
+ 'SECTIONS_NAME' => 'Разделы',
+ 'SECTION_NAME' => 'Раздел',
+ 'ELEMENTS_NAME' => 'Элементы',
+ 'ELEMENT_NAME' => 'Элемент',
+ 'FULLTEXT_INDEX' => 'N',
+ 'EXTERNAL_ID' => NULL,
+ 'LANG_DIR' => '/extranet/',
+ 'IPROPERTY_TEMPLATES' =>
+ array (
+ ),
+ 'ELEMENT_ADD' => 'Добавить элемент',
+ 'ELEMENT_EDIT' => 'Изменить элемент',
+ 'ELEMENT_DELETE' => 'Удалить элемент',
+ 'SECTION_ADD' => 'Добавить раздел',
+ 'SECTION_EDIT' => 'Изменить раздел',
+ 'SECTION_DELETE' => 'Удалить раздел',
+));
+ $helper->Iblock()->saveIblockFields($iblockId, array (
+ 'IBLOCK_SECTION' =>
+ array (
+ 'NAME' => 'Привязка к разделам',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'KEEP_IBLOCK_SECTION_ID' => 'N',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'ACTIVE' =>
+ array (
+ 'NAME' => 'Активность',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => 'Y',
+ 'VISIBLE' => 'Y',
+ ),
+ 'ACTIVE_FROM' =>
+ array (
+ 'NAME' => 'Начало активности',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'ACTIVE_TO' =>
+ array (
+ 'NAME' => 'Окончание активности',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'SORT' =>
+ array (
+ 'NAME' => 'Сортировка',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '500',
+ 'VISIBLE' => 'Y',
+ ),
+ 'NAME' =>
+ array (
+ 'NAME' => 'Название',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'PREVIEW_PICTURE' =>
+ array (
+ 'NAME' => 'Картинка для анонса',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'FROM_DETAIL' => 'N',
+ 'UPDATE_WITH_DETAIL' => 'N',
+ 'DELETE_WITH_DETAIL' => 'N',
+ 'SCALE' => 'N',
+ 'WIDTH' => '',
+ 'HEIGHT' => '',
+ 'IGNORE_ERRORS' => 'N',
+ 'METHOD' => 'resample',
+ 'COMPRESSION' => 95,
+ 'USE_WATERMARK_TEXT' => 'N',
+ 'WATERMARK_TEXT' => '',
+ 'WATERMARK_TEXT_FONT' => '',
+ 'WATERMARK_TEXT_COLOR' => '',
+ 'WATERMARK_TEXT_SIZE' => '',
+ 'WATERMARK_TEXT_POSITION' => 'tl',
+ 'USE_WATERMARK_FILE' => 'N',
+ 'WATERMARK_FILE' => '',
+ 'WATERMARK_FILE_ALPHA' => '',
+ 'WATERMARK_FILE_POSITION' => 'tl',
+ 'WATERMARK_FILE_ORDER' => '',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'PREVIEW_TEXT_TYPE' =>
+ array (
+ 'NAME' => 'Тип описания для анонса',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => 'text',
+ 'VISIBLE' => 'Y',
+ ),
+ 'PREVIEW_TEXT' =>
+ array (
+ 'NAME' => 'Описание для анонса',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'DETAIL_PICTURE' =>
+ array (
+ 'NAME' => 'Детальная картинка',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'SCALE' => 'N',
+ 'WIDTH' => '',
+ 'HEIGHT' => '',
+ 'IGNORE_ERRORS' => 'N',
+ 'METHOD' => 'resample',
+ 'COMPRESSION' => 95,
+ 'USE_WATERMARK_TEXT' => 'N',
+ 'WATERMARK_TEXT' => '',
+ 'WATERMARK_TEXT_FONT' => '',
+ 'WATERMARK_TEXT_COLOR' => '',
+ 'WATERMARK_TEXT_SIZE' => '',
+ 'WATERMARK_TEXT_POSITION' => 'tl',
+ 'USE_WATERMARK_FILE' => 'N',
+ 'WATERMARK_FILE' => '',
+ 'WATERMARK_FILE_ALPHA' => '',
+ 'WATERMARK_FILE_POSITION' => 'tl',
+ 'WATERMARK_FILE_ORDER' => '',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'DETAIL_TEXT_TYPE' =>
+ array (
+ 'NAME' => 'Тип детального описания',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => 'text',
+ 'VISIBLE' => 'Y',
+ ),
+ 'DETAIL_TEXT' =>
+ array (
+ 'NAME' => 'Детальное описание',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'XML_ID' =>
+ array (
+ 'NAME' => 'Внешний код',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'CODE' =>
+ array (
+ 'NAME' => 'Символьный код',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'UNIQUE' => 'Y',
+ 'TRANSLITERATION' => 'Y',
+ 'TRANS_LEN' => 100,
+ 'TRANS_CASE' => 'L',
+ 'TRANS_SPACE' => '-',
+ 'TRANS_OTHER' => '-',
+ 'TRANS_EAT' => 'Y',
+ 'USE_GOOGLE' => 'N',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'TAGS' =>
+ array (
+ 'NAME' => 'Теги',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_NAME' =>
+ array (
+ 'NAME' => 'Название',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_PICTURE' =>
+ array (
+ 'NAME' => 'Картинка для анонса',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'FROM_DETAIL' => 'N',
+ 'UPDATE_WITH_DETAIL' => 'N',
+ 'DELETE_WITH_DETAIL' => 'N',
+ 'SCALE' => 'N',
+ 'WIDTH' => '',
+ 'HEIGHT' => '',
+ 'IGNORE_ERRORS' => 'N',
+ 'METHOD' => 'resample',
+ 'COMPRESSION' => 95,
+ 'USE_WATERMARK_TEXT' => 'N',
+ 'WATERMARK_TEXT' => '',
+ 'WATERMARK_TEXT_FONT' => '',
+ 'WATERMARK_TEXT_COLOR' => '',
+ 'WATERMARK_TEXT_SIZE' => '',
+ 'WATERMARK_TEXT_POSITION' => 'tl',
+ 'USE_WATERMARK_FILE' => 'N',
+ 'WATERMARK_FILE' => '',
+ 'WATERMARK_FILE_ALPHA' => '',
+ 'WATERMARK_FILE_POSITION' => 'tl',
+ 'WATERMARK_FILE_ORDER' => '',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_DESCRIPTION_TYPE' =>
+ array (
+ 'NAME' => 'Тип описания',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => 'text',
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_DESCRIPTION' =>
+ array (
+ 'NAME' => 'Описание',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_DETAIL_PICTURE' =>
+ array (
+ 'NAME' => 'Детальная картинка',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'SCALE' => 'N',
+ 'WIDTH' => '',
+ 'HEIGHT' => '',
+ 'IGNORE_ERRORS' => 'N',
+ 'METHOD' => 'resample',
+ 'COMPRESSION' => 95,
+ 'USE_WATERMARK_TEXT' => 'N',
+ 'WATERMARK_TEXT' => '',
+ 'WATERMARK_TEXT_FONT' => '',
+ 'WATERMARK_TEXT_COLOR' => '',
+ 'WATERMARK_TEXT_SIZE' => '',
+ 'WATERMARK_TEXT_POSITION' => 'tl',
+ 'USE_WATERMARK_FILE' => 'N',
+ 'WATERMARK_FILE' => '',
+ 'WATERMARK_FILE_ALPHA' => '',
+ 'WATERMARK_FILE_POSITION' => 'tl',
+ 'WATERMARK_FILE_ORDER' => '',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_XML_ID' =>
+ array (
+ 'NAME' => 'Внешний код',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_CODE' =>
+ array (
+ 'NAME' => 'Символьный код',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'UNIQUE' => 'N',
+ 'TRANSLITERATION' => 'N',
+ 'TRANS_LEN' => 100,
+ 'TRANS_CASE' => 'L',
+ 'TRANS_SPACE' => '-',
+ 'TRANS_OTHER' => '-',
+ 'TRANS_EAT' => 'Y',
+ 'USE_GOOGLE' => 'N',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'LOG_SECTION_ADD' =>
+ array (
+ 'NAME' => 'LOG_SECTION_ADD',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => NULL,
+ 'VISIBLE' => 'Y',
+ ),
+ 'LOG_SECTION_EDIT' =>
+ array (
+ 'NAME' => 'LOG_SECTION_EDIT',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => NULL,
+ 'VISIBLE' => 'Y',
+ ),
+ 'LOG_SECTION_DELETE' =>
+ array (
+ 'NAME' => 'LOG_SECTION_DELETE',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => NULL,
+ 'VISIBLE' => 'Y',
+ ),
+ 'LOG_ELEMENT_ADD' =>
+ array (
+ 'NAME' => 'LOG_ELEMENT_ADD',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => NULL,
+ 'VISIBLE' => 'Y',
+ ),
+ 'LOG_ELEMENT_EDIT' =>
+ array (
+ 'NAME' => 'LOG_ELEMENT_EDIT',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => NULL,
+ 'VISIBLE' => 'Y',
+ ),
+ 'LOG_ELEMENT_DELETE' =>
+ array (
+ 'NAME' => 'LOG_ELEMENT_DELETE',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => NULL,
+ 'VISIBLE' => 'Y',
+ ),
+));
+ $helper->Iblock()->saveGroupPermissions($iblockId, array (
+ 'administrators' => 'X',
+ 'everyone' => 'R',
+));
+ $helper->Iblock()->saveProperty($iblockId, array (
+ 'NAME' => 'Отчество',
+ 'ACTIVE' => 'Y',
+ 'SORT' => '500',
+ 'CODE' => 'MIDDLE_NAME',
+ 'DEFAULT_VALUE' => '',
+ 'PROPERTY_TYPE' => 'S',
+ 'ROW_COUNT' => '1',
+ 'COL_COUNT' => '70',
+ 'LIST_TYPE' => 'L',
+ 'MULTIPLE' => 'N',
+ 'XML_ID' => NULL,
+ 'FILE_TYPE' => '',
+ 'MULTIPLE_CNT' => '5',
+ 'LINK_IBLOCK_ID' => '0',
+ 'WITH_DESCRIPTION' => 'N',
+ 'SEARCHABLE' => 'N',
+ 'FILTRABLE' => 'N',
+ 'IS_REQUIRED' => 'N',
+ 'VERSION' => '2',
+ 'USER_TYPE' => NULL,
+ 'USER_TYPE_SETTINGS' => 'a:0:{}',
+ 'HINT' => '',
+ 'FEATURES' =>
+ array (
+ 0 =>
+ array (
+ 'MODULE_ID' => 'iblock',
+ 'FEATURE_ID' => 'DETAIL_PAGE_SHOW',
+ 'IS_ENABLED' => 'N',
+ ),
+ 1 =>
+ array (
+ 'MODULE_ID' => 'iblock',
+ 'FEATURE_ID' => 'LIST_PAGE_SHOW',
+ 'IS_ENABLED' => 'N',
+ ),
+ ),
+));
+ $helper->Iblock()->saveProperty($iblockId, array (
+ 'NAME' => 'Фамилия',
+ 'ACTIVE' => 'Y',
+ 'SORT' => '500',
+ 'CODE' => 'LAST_NAME',
+ 'DEFAULT_VALUE' => '',
+ 'PROPERTY_TYPE' => 'S',
+ 'ROW_COUNT' => '1',
+ 'COL_COUNT' => '70',
+ 'LIST_TYPE' => 'L',
+ 'MULTIPLE' => 'N',
+ 'XML_ID' => NULL,
+ 'FILE_TYPE' => '',
+ 'MULTIPLE_CNT' => '5',
+ 'LINK_IBLOCK_ID' => '0',
+ 'WITH_DESCRIPTION' => 'N',
+ 'SEARCHABLE' => 'N',
+ 'FILTRABLE' => 'N',
+ 'IS_REQUIRED' => 'N',
+ 'VERSION' => '2',
+ 'USER_TYPE' => NULL,
+ 'USER_TYPE_SETTINGS' => 'a:0:{}',
+ 'HINT' => '',
+ 'FEATURES' =>
+ array (
+ 0 =>
+ array (
+ 'MODULE_ID' => 'iblock',
+ 'FEATURE_ID' => 'DETAIL_PAGE_SHOW',
+ 'IS_ENABLED' => 'N',
+ ),
+ 1 =>
+ array (
+ 'MODULE_ID' => 'iblock',
+ 'FEATURE_ID' => 'LIST_PAGE_SHOW',
+ 'IS_ENABLED' => 'N',
+ ),
+ ),
+));
+ $helper->UserOptions()->saveElementForm($iblockId, array (
+ 'Параметры|edit1' =>
+ array (
+ 'ID' => 'ID',
+ 'DATE_CREATE' => 'Создан',
+ 'TIMESTAMP_X' => 'Изменен',
+ 'ACTIVE' => 'Активность',
+ 'NAME' => 'Имя',
+ 'PROPERTY_MIDDLE_NAME' => 'Отчество',
+ 'PROPERTY_LAST_NAME' => 'Фамилия',
+ 'CODE' => 'Символьный код',
+ 'SORT' => 'Сортировка',
+ 'PROPERTY_PROC_IDS' => 'Процедуры',
+ ),
+));
+ $helper->UserOptions()->saveElementGrid($iblockId, array (
+ 'views' =>
+ array (
+ 'default' =>
+ array (
+ 'columns' =>
+ array (
+ 0 => 'NAME',
+ 1 => 'PROPERTY_MIDDLE_NAME',
+ 2 => 'PROPERTY_LAST_NAME',
+ 3 => 'ACTIVE',
+ 4 => 'PROPERTY_PROC_IDS',
+ 5 => 'SORT',
+ 6 => 'TIMESTAMP_X',
+ 7 => 'ID',
+ ),
+ 'columns_sizes' =>
+ array (
+ 'expand' => 1,
+ 'columns' =>
+ array (
+ ),
+ ),
+ 'sticked_columns' =>
+ array (
+ ),
+ 'custom_names' =>
+ array (
+ ),
+ ),
+ ),
+ 'filters' =>
+ array (
+ ),
+ 'current_view' => 'default',
+));
+
+ }
+}
diff --git a/local/php_interface/migrations/DoctorsPropProcedures20260105214201.php b/local/php_interface/migrations/DoctorsPropProcedures20260105214201.php
new file mode 100644
index 0000000..5e88f39
--- /dev/null
+++ b/local/php_interface/migrations/DoctorsPropProcedures20260105214201.php
@@ -0,0 +1,63 @@
+getHelperManager();
+ $iblockId = $helper->Iblock()->getIblockIdIfExists('doctors', 'lists');
+ $helper->Iblock()->saveProperty($iblockId, array (
+ 'NAME' => 'Процедуры',
+ 'ACTIVE' => 'Y',
+ 'SORT' => '500',
+ 'CODE' => 'PROC_IDS',
+ 'DEFAULT_VALUE' => '',
+ 'PROPERTY_TYPE' => 'E',
+ 'ROW_COUNT' => '1',
+ 'COL_COUNT' => '30',
+ 'LIST_TYPE' => 'L',
+ 'MULTIPLE' => 'Y',
+ 'XML_ID' => NULL,
+ 'FILE_TYPE' => '',
+ 'MULTIPLE_CNT' => '5',
+ 'LINK_IBLOCK_ID' => 'lists:procedures',
+ 'WITH_DESCRIPTION' => 'N',
+ 'SEARCHABLE' => 'N',
+ 'FILTRABLE' => 'N',
+ 'IS_REQUIRED' => 'N',
+ 'VERSION' => '2',
+ 'USER_TYPE' => NULL,
+ 'USER_TYPE_SETTINGS' => 'a:0:{}',
+ 'HINT' => '',
+ 'FEATURES' =>
+ array (
+ 0 =>
+ array (
+ 'MODULE_ID' => 'iblock',
+ 'FEATURE_ID' => 'DETAIL_PAGE_SHOW',
+ 'IS_ENABLED' => 'N',
+ ),
+ 1 =>
+ array (
+ 'MODULE_ID' => 'iblock',
+ 'FEATURE_ID' => 'LIST_PAGE_SHOW',
+ 'IS_ENABLED' => 'N',
+ ),
+ ),
+));
+
+ }
+}
diff --git a/local/php_interface/migrations/Procedures20260105214116.php b/local/php_interface/migrations/Procedures20260105214116.php
new file mode 100644
index 0000000..5148134
--- /dev/null
+++ b/local/php_interface/migrations/Procedures20260105214116.php
@@ -0,0 +1,429 @@
+getHelperManager();
+ $iblockId = $helper->Iblock()->saveIblock(array (
+ 'IBLOCK_TYPE_ID' => 'lists',
+ 'LID' =>
+ array (
+ 0 => 'co',
+ 1 => 's1',
+ ),
+ 'CODE' => 'procedures',
+ 'API_CODE' => 'procedures',
+ 'REST_ON' => 'N',
+ 'NAME' => 'Процедуры',
+ 'ACTIVE' => 'Y',
+ 'SORT' => '500',
+ 'LIST_PAGE_URL' => '#SITE_DIR#/lists/index.php?ID=#IBLOCK_ID#',
+ 'DETAIL_PAGE_URL' => '#SITE_DIR#/lists/detail.php?ID=#ELEMENT_ID#',
+ 'SECTION_PAGE_URL' => '#SITE_DIR#/lists/list.php?SECTION_ID=#SECTION_ID#',
+ 'CANONICAL_PAGE_URL' => '',
+ 'PICTURE' => NULL,
+ 'DESCRIPTION' => '',
+ 'DESCRIPTION_TYPE' => 'text',
+ 'RSS_TTL' => '24',
+ 'RSS_ACTIVE' => 'Y',
+ 'RSS_FILE_ACTIVE' => 'N',
+ 'RSS_FILE_LIMIT' => NULL,
+ 'RSS_FILE_DAYS' => NULL,
+ 'RSS_YANDEX_ACTIVE' => 'N',
+ 'XML_ID' => NULL,
+ 'INDEX_ELEMENT' => 'N',
+ 'INDEX_SECTION' => 'N',
+ 'WORKFLOW' => 'N',
+ 'BIZPROC' => 'N',
+ 'SECTION_CHOOSER' => 'L',
+ 'LIST_MODE' => '',
+ 'RIGHTS_MODE' => 'S',
+ 'SECTION_PROPERTY' => 'N',
+ 'PROPERTY_INDEX' => 'N',
+ 'VERSION' => '2',
+ 'LAST_CONV_ELEMENT' => '0',
+ 'SOCNET_GROUP_ID' => NULL,
+ 'EDIT_FILE_BEFORE' => '',
+ 'EDIT_FILE_AFTER' => '',
+ 'SECTIONS_NAME' => 'Разделы',
+ 'SECTION_NAME' => 'Раздел',
+ 'ELEMENTS_NAME' => 'Элементы',
+ 'ELEMENT_NAME' => 'Элемент',
+ 'FULLTEXT_INDEX' => 'N',
+ 'EXTERNAL_ID' => NULL,
+ 'LANG_DIR' => '/extranet/',
+ 'IPROPERTY_TEMPLATES' =>
+ array (
+ ),
+ 'ELEMENT_ADD' => 'Добавить элемент',
+ 'ELEMENT_EDIT' => 'Изменить элемент',
+ 'ELEMENT_DELETE' => 'Удалить элемент',
+ 'SECTION_ADD' => 'Добавить раздел',
+ 'SECTION_EDIT' => 'Изменить раздел',
+ 'SECTION_DELETE' => 'Удалить раздел',
+));
+ $helper->Iblock()->saveIblockFields($iblockId, array (
+ 'IBLOCK_SECTION' =>
+ array (
+ 'NAME' => 'Привязка к разделам',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'KEEP_IBLOCK_SECTION_ID' => 'N',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'ACTIVE' =>
+ array (
+ 'NAME' => 'Активность',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => 'Y',
+ 'VISIBLE' => 'Y',
+ ),
+ 'ACTIVE_FROM' =>
+ array (
+ 'NAME' => 'Начало активности',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'ACTIVE_TO' =>
+ array (
+ 'NAME' => 'Окончание активности',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'SORT' =>
+ array (
+ 'NAME' => 'Сортировка',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '500',
+ 'VISIBLE' => 'Y',
+ ),
+ 'NAME' =>
+ array (
+ 'NAME' => 'Название',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'PREVIEW_PICTURE' =>
+ array (
+ 'NAME' => 'Картинка для анонса',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'FROM_DETAIL' => 'N',
+ 'UPDATE_WITH_DETAIL' => 'N',
+ 'DELETE_WITH_DETAIL' => 'N',
+ 'SCALE' => 'N',
+ 'WIDTH' => '',
+ 'HEIGHT' => '',
+ 'IGNORE_ERRORS' => 'N',
+ 'METHOD' => 'resample',
+ 'COMPRESSION' => 95,
+ 'USE_WATERMARK_TEXT' => 'N',
+ 'WATERMARK_TEXT' => '',
+ 'WATERMARK_TEXT_FONT' => '',
+ 'WATERMARK_TEXT_COLOR' => '',
+ 'WATERMARK_TEXT_SIZE' => '',
+ 'WATERMARK_TEXT_POSITION' => 'tl',
+ 'USE_WATERMARK_FILE' => 'N',
+ 'WATERMARK_FILE' => '',
+ 'WATERMARK_FILE_ALPHA' => '',
+ 'WATERMARK_FILE_POSITION' => 'tl',
+ 'WATERMARK_FILE_ORDER' => '',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'PREVIEW_TEXT_TYPE' =>
+ array (
+ 'NAME' => 'Тип описания для анонса',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => 'text',
+ 'VISIBLE' => 'Y',
+ ),
+ 'PREVIEW_TEXT' =>
+ array (
+ 'NAME' => 'Описание для анонса',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'DETAIL_PICTURE' =>
+ array (
+ 'NAME' => 'Детальная картинка',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'SCALE' => 'N',
+ 'WIDTH' => '',
+ 'HEIGHT' => '',
+ 'IGNORE_ERRORS' => 'N',
+ 'METHOD' => 'resample',
+ 'COMPRESSION' => 95,
+ 'USE_WATERMARK_TEXT' => 'N',
+ 'WATERMARK_TEXT' => '',
+ 'WATERMARK_TEXT_FONT' => '',
+ 'WATERMARK_TEXT_COLOR' => '',
+ 'WATERMARK_TEXT_SIZE' => '',
+ 'WATERMARK_TEXT_POSITION' => 'tl',
+ 'USE_WATERMARK_FILE' => 'N',
+ 'WATERMARK_FILE' => '',
+ 'WATERMARK_FILE_ALPHA' => '',
+ 'WATERMARK_FILE_POSITION' => 'tl',
+ 'WATERMARK_FILE_ORDER' => '',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'DETAIL_TEXT_TYPE' =>
+ array (
+ 'NAME' => 'Тип детального описания',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => 'text',
+ 'VISIBLE' => 'Y',
+ ),
+ 'DETAIL_TEXT' =>
+ array (
+ 'NAME' => 'Детальное описание',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'XML_ID' =>
+ array (
+ 'NAME' => 'Внешний код',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'CODE' =>
+ array (
+ 'NAME' => 'Символьный код',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'UNIQUE' => 'Y',
+ 'TRANSLITERATION' => 'Y',
+ 'TRANS_LEN' => 100,
+ 'TRANS_CASE' => 'L',
+ 'TRANS_SPACE' => '-',
+ 'TRANS_OTHER' => '-',
+ 'TRANS_EAT' => 'Y',
+ 'USE_GOOGLE' => 'N',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'TAGS' =>
+ array (
+ 'NAME' => 'Теги',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_NAME' =>
+ array (
+ 'NAME' => 'Название',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_PICTURE' =>
+ array (
+ 'NAME' => 'Картинка для анонса',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'FROM_DETAIL' => 'N',
+ 'UPDATE_WITH_DETAIL' => 'N',
+ 'DELETE_WITH_DETAIL' => 'N',
+ 'SCALE' => 'N',
+ 'WIDTH' => '',
+ 'HEIGHT' => '',
+ 'IGNORE_ERRORS' => 'N',
+ 'METHOD' => 'resample',
+ 'COMPRESSION' => 95,
+ 'USE_WATERMARK_TEXT' => 'N',
+ 'WATERMARK_TEXT' => '',
+ 'WATERMARK_TEXT_FONT' => '',
+ 'WATERMARK_TEXT_COLOR' => '',
+ 'WATERMARK_TEXT_SIZE' => '',
+ 'WATERMARK_TEXT_POSITION' => 'tl',
+ 'USE_WATERMARK_FILE' => 'N',
+ 'WATERMARK_FILE' => '',
+ 'WATERMARK_FILE_ALPHA' => '',
+ 'WATERMARK_FILE_POSITION' => 'tl',
+ 'WATERMARK_FILE_ORDER' => '',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_DESCRIPTION_TYPE' =>
+ array (
+ 'NAME' => 'Тип описания',
+ 'IS_REQUIRED' => 'Y',
+ 'DEFAULT_VALUE' => 'text',
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_DESCRIPTION' =>
+ array (
+ 'NAME' => 'Описание',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_DETAIL_PICTURE' =>
+ array (
+ 'NAME' => 'Детальная картинка',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'SCALE' => 'N',
+ 'WIDTH' => '',
+ 'HEIGHT' => '',
+ 'IGNORE_ERRORS' => 'N',
+ 'METHOD' => 'resample',
+ 'COMPRESSION' => 95,
+ 'USE_WATERMARK_TEXT' => 'N',
+ 'WATERMARK_TEXT' => '',
+ 'WATERMARK_TEXT_FONT' => '',
+ 'WATERMARK_TEXT_COLOR' => '',
+ 'WATERMARK_TEXT_SIZE' => '',
+ 'WATERMARK_TEXT_POSITION' => 'tl',
+ 'USE_WATERMARK_FILE' => 'N',
+ 'WATERMARK_FILE' => '',
+ 'WATERMARK_FILE_ALPHA' => '',
+ 'WATERMARK_FILE_POSITION' => 'tl',
+ 'WATERMARK_FILE_ORDER' => '',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_XML_ID' =>
+ array (
+ 'NAME' => 'Внешний код',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => '',
+ 'VISIBLE' => 'Y',
+ ),
+ 'SECTION_CODE' =>
+ array (
+ 'NAME' => 'Символьный код',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' =>
+ array (
+ 'UNIQUE' => 'N',
+ 'TRANSLITERATION' => 'N',
+ 'TRANS_LEN' => 100,
+ 'TRANS_CASE' => 'L',
+ 'TRANS_SPACE' => '-',
+ 'TRANS_OTHER' => '-',
+ 'TRANS_EAT' => 'Y',
+ 'USE_GOOGLE' => 'N',
+ ),
+ 'VISIBLE' => 'Y',
+ ),
+ 'LOG_SECTION_ADD' =>
+ array (
+ 'NAME' => 'LOG_SECTION_ADD',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => NULL,
+ 'VISIBLE' => 'Y',
+ ),
+ 'LOG_SECTION_EDIT' =>
+ array (
+ 'NAME' => 'LOG_SECTION_EDIT',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => NULL,
+ 'VISIBLE' => 'Y',
+ ),
+ 'LOG_SECTION_DELETE' =>
+ array (
+ 'NAME' => 'LOG_SECTION_DELETE',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => NULL,
+ 'VISIBLE' => 'Y',
+ ),
+ 'LOG_ELEMENT_ADD' =>
+ array (
+ 'NAME' => 'LOG_ELEMENT_ADD',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => NULL,
+ 'VISIBLE' => 'Y',
+ ),
+ 'LOG_ELEMENT_EDIT' =>
+ array (
+ 'NAME' => 'LOG_ELEMENT_EDIT',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => NULL,
+ 'VISIBLE' => 'Y',
+ ),
+ 'LOG_ELEMENT_DELETE' =>
+ array (
+ 'NAME' => 'LOG_ELEMENT_DELETE',
+ 'IS_REQUIRED' => 'N',
+ 'DEFAULT_VALUE' => NULL,
+ 'VISIBLE' => 'Y',
+ ),
+));
+ $helper->Iblock()->saveGroupPermissions($iblockId, array (
+ 'administrators' => 'X',
+ 'everyone' => 'R',
+));
+ $helper->UserOptions()->saveElementForm($iblockId, array (
+ 'Параметры|edit1' =>
+ array (
+ 'ID' => 'ID',
+ 'DATE_CREATE' => 'Создан',
+ 'TIMESTAMP_X' => 'Изменен',
+ 'ACTIVE' => 'Активность',
+ 'NAME' => 'Название',
+ 'CODE' => 'Символьный код',
+ 'SORT' => 'Сортировка',
+ ),
+));
+ $helper->UserOptions()->saveElementGrid($iblockId, array (
+ 'views' =>
+ array (
+ 'default' =>
+ array (
+ 'columns' =>
+ array (
+ 0 => '',
+ ),
+ 'columns_sizes' =>
+ array (
+ 'expand' => 1,
+ 'columns' =>
+ array (
+ ),
+ ),
+ 'sticked_columns' =>
+ array (
+ ),
+ 'custom_names' =>
+ array (
+ ),
+ ),
+ ),
+ 'filters' =>
+ array (
+ ),
+ 'current_view' => 'default',
+));
+
+ }
+}