Bitrix - Структура базы данных модуля пользователей. Таблицы битрикс


Структура базы данных модуля пользователей

Таблица `b_user` содержит основные пользовательские данные: внутренний идентификатор, электронный адрес, логин, хэш пароля, хэш контрольного слова, дата регистрации и дополнительные предустановленные поля личных и рабочих данных.

Структура таблицы `b_user` :

опишу основные поля данной таблицы, сведения о которых могут помочь при манипуляциях с данными пользователя:

  `LOGIN` - логин пользователя,  `PASSWORD` - хэш пароля пользователя,  `CHECKWORD` - хэш контрольного слова,  `ACTIVE` - активность пользователя ('Y', 'N'),  `NAME` - имя пользователя,  `LAST_NAME` фамилия пользователя,  `EMAIL` электронный адрес пользователя,  `LAST_LOGIN` - дата последнего авторизованного входа,  `DATE_REGISTER` - дата регистрации,  `LID` привязка к сайту,  `PERSONAL_* - поля персональных данных  `WORK_* - поля данных связанных с работой,  `ADMIN_NOTES` - комментарий админа,  `PERSONAL_BIRTHDAY` - дата рождения,  `EXTERNAL_AUTH_ID` - идентификатор внешнего сервиса авторизации,  `SECOND_NAME` - отчество,  `CONFIRM_CODE` - код подтверждения при восстановлении пароля,  `LOGIN_ATTEMPTS` - количество попыток авторизации,  `LAST_ACTIVITY_DATE` - дата последней активности.

Таблица `b_user_field` хранит набор пользовательских полей для различных модулей, типа блог, пользователи и т.п. Фильтрация по модулю осуществляется с помощью содержимого поля ENTITY_ID (в нашем случае для пользователя там будет указано USER).

Структура таблицы `b_user_field`ENTITY_ID – идентификатор модуля,FIELD_NAME – имя поля,USER_TYPE_ID – тип поля(string, iblock_element, file и т.п.),XML_IDSORT – индекс сортировки,MULTIPLE – является ли поле полем с множественным значением,MANDATORY – обязательно ли поле,SHOW_FILTER – показывать в фильтрации административного листинга,SHOW_IN_LIST – показывать в списке административного листинга,EDIT_IN_LIST - возможно ли редактирование в списке административного листинга,IS_SEARCHABLE – возможен поиск по поля,SETTINGS – дополнительные настройки в сериализованном виде, типа: (a:6:{s:4:"SIZE";i:20;s:4:"ROWS";i:1;s:6:"REGEXP";N;s:10:"MIN_LENGTH";i:0;s:10:"MAX_LENGTH";i:0;s:13:"DEFAULT_VALUE";N;})

Таблица `b_user_field_enum`  предназначена для  хранения значений типа поля enumeration:

Структура таблицы `b_user_field_enum`  : 

ID – идентификатор записи

USER_FIELD_ID – идентификатор пользовательского поля

VALUE – значение

DEF – значение используется как значение по умолчаниию

SORT – индекс сортировки

Мультиязычность для названий пользовательских полей реализуется с помощью таблицы `b_user_field_lang`.

 

Структура таблицы `b_user_field_lang`:

USER_FIELD_ID - идентификатор пользовательского поля

LANGUAGE_ID – идентификатор языка

EDIT_FORM_LABEL – фраза представления поля в форме просмотра и редактирования

LIST_COLUMN_LABEL –фраза представления поля в листинге

LIST_FILTER_LABEL – фраза представления поля в листинге фильтрации

ERROR_MESSAGE – фраза сообщения ошибки при работе с полем

HELP_MESSAGE – фраза помощи при работе с полем

Дополнительные пользовательские свойства хранятся в таблице`b_uts_user`, где каждое поле в структуре таблицы является пользовательским полем. Привязка осуществляется по полю VALUE – идентификатор пользователя, это единственное предустановленное поле в этой таблице, остальные поля соответствуют полям записи из таблицы `b_user_field`.

 

Пример структуры моей таблицы:

VALUE_ID

UF_CITY – пользовательское поле «город»

UF_СOUNTRY – пользовательское поле «страна»

Группы пользователей хранятся в `b_group` .

 

Структура таблицы  `b_group` :

ID –идентификатор записи

TIMESTAMP_X

ACTIVE – активность группы

C_SORT – индекс сортировки

ANONYMOUS

NAME – имя группы

DESCRIPTION - описания

SECURITY_POLICY

STRING_ID

Связь между пользователями и пользовательскими группами осуществляется через таблицу `b_user_group`. 

 

Структура таблицы `b_user_group`:

USER_ID – идентификатор пользователя

GROUP_ID – идентификатор группы

DATE_ACTIVE_FROM – время активности пользователя в группе с …

DATE_ACTIVE_TO – время активности пользователя в группе по …

promst59.ru

ORM OM NOM NOM или тайны ORM в 1С-Битрикс

О чем и для кого эта статья

Эта статья – одна из самых популярных страниц нашего сайта. Несколько сотен человек каждый день читают ее. Мы опубликовали важнейшую для мира Битрикс-разработки справочную информацию за полгода до появления официальной документации.

Статья будет вам интересна, если Вы уже видели и слышали что-то про ORM в 1С-Битрикс: Управление сайтом , и даже пробовали разрабатывать сайты на 1С-Битрикс с собственными ORM-классами. Статья состоит из трех частей:

Базовые возможности ORM в 1С-Битрикс: Управление сайтом

Согласно SRP , каждый класс в программе должен иметь только одну обязанность. Например: работа с форматом валют, работа с языковым пакетом, работа с настройками приложения.

В такой серьезной системе, как 1С-Битрикс: Управление сайтом классов и обязанностей должно быть немало. Моя IDE подсказывает, что в Интернет-магазине версии 16.0.1 объявлено 2759 классов. Я точно уверен, что самая многочисленная “группа” — классы для работы с таблицами в БД. CIBlockElement для работы с таблицей b_iblock_element (элементы инфоблоков), CSaleOrder для таблицы b_sale_order (заказы), CUser для работы с b_user (пользователи) и т.д. В БД сейчас 413 таблиц. Выходит, должно быть 413 классов для работы с каждой из них.

До недавнего времени каждый такой класс обладал уникальностью снежинки. Да, во многих выборка из таблицы выполнялась в методе с названием “ GetList ”, но это не более чем соглашение. Это нигде не было закреплено и никем не проверялось.

Более того, несмотря на общее название, эти методы вполне могли работать по-разному. вспомните 3 метода, имеющих одинаковое название:

  1. CUser::GetList
  2. CIBlockElement::GetList
  3. CSaleOrder::GetList

Пожалуй, только опытный программист сможет сходу назвать особенности их применения без подглядывания в справку. А ведь есть еще такие острые вопросы, как добавление в БД, обработка ошибок и т.п. И, зачастую, каждый класс решает “сам за себя”.

Но сейчас ситуация меняется. Появилось новое ядро D7 , с новыми идеями, механизмами и концепциями. Поговорим об одной из них, краеугольной - ORM (Object Relation Model). Об ORM подробно рассказывают в блоге разработчиков и есть отличное руководство в документации . Постараюсь не повторяться и буду считать, что вы уже написали пару ORM-классов, ориентируясь на эти статьи.

Я выделю только основное. Если класс отвечает за доступ к таблице БД, он должен быть наследником класса Bitrix\Main\Entity\DataManager и должен переопределять только два метода:

  1. getTableName для получения имени таблицы
  2. getMap для получения массива колонок таблицы — объектов Bitrix\Main\Entity\Field

Метод getFilePath , который упоминается в блоге, больше не является обязательным!

Хочется похвалить разработчиков за ORM. Это не просто слова и планы на будущее. На момент написания этого текста (декабрь 2015) переведено на “новые рельсы” 215 классов. То есть, больше половины всех классов для работы с БД уже имеют D7-аналоги и используются.

Выводы по базовым возможностям ORM в 1С-Битрикс: УС . У нас появился очень мощный API для работы с БД с правильной современной архитектурой. Стоит незамедлительно переводить все свои старые классы на “ORM-рельсы”. Руководство по разработке этих классов достаточно подробное и отвечает на главные вопросы.

Автоматическая генерация ORM-классов

Первое, о чем хочется рассказать в этой статье об ORM — генератор ORM классов. По неизвестной мне причине он тщательно скрыт в недрах панели управления сайтом. Когда пользуешься им, возникает ощущение, что прикасаешься к чему-то запретному :) Хотя в среде разработчиков о нем часто говорят: и на сайте идей , и в блогах .

Чтобы его использовать, нужно открыть страницу Настройки > Производительность > Таблицы и добавить GET-параметр orm=y. Адрес будет выглядеть так: /bitrix/admin/perfmon_tables.php?lang=ru&orm=y

После этого для любой таблицы в БД сайта можно автоматически создавать ORM-класс. Для примера выберем штатную таблицу шаблонов сайта b_site_template .

После перезагрузки страницы имеем следующий код: код в Gist . Результат после небольших преобразований может быть сведен к настоящему классу для работы с шаблонами, расположенному по пути /bitrix/modules/main/lib/sitetemplate.php .

Важная особенность генератора: поля описываются не объектами-потомками Bitrix\Main\Entity\Field , а ассоциативными массивами. Этот формат считается устаревшим, хотя поддерживается и используется во многих системных классах.

Отличное подспорье для создателей модулей: генератор позволит поставить производство классов на поток.

Работа с удаленными БД

Помимо очевидного, есть под капотом ORM и куда более интересные возможности. Например, работа с разными БД ( вертикальный шардинг )! Теперь, заканчивая работу по созданию класса никто не мешает сказать “ах да, эта таблица лежит в другой БД с другим логином и паролем”.

Никаких ограничений по сравнению с “локальными” таблицами нет. По таблицам внешней БД можно точно так же делать выборки, изменять записи, группировать и т.п. Нельзя только пытаться сделать JOIN таблиц в разных БД.

Чтобы указать, в какой БД требуется искать таблицу, в ORM-классе требуется переопределить метод getConnectionName . Здесь указывается псевдоним подключения (по умолчанию “default” — главное подключение, та же БД, в которую установлены штатные таблицы).

Само подключение должно быть вручную прописано в настройках ядра D7 (файл /bitrix/.settings.php ), узел connections > value > имя подключения .

Если с host, database, login, password вопросов, в принципе, нет, то первый параметр className заслуживает отдельного внимания. Для этого потребуется сделать небольшое отступление и рассказать об организации работы с БД в новом ядре.

Нюансы работы с разными типами БД

В новом ядре изменилась так же работа с БД . “Главными” по этому вопросу стали классы в пространстве имен Bitrix\Main\DB . Конкретно за подключение к БД и выполнение всех запросов отвечают классы семейства Bitrix\Main\DB\Connection , а именно:

Наверное, для 95% сайтов хватает этого набора (а для 90% только Bitrix\Main\DB\MysqliConnection ). А что же делать, если подключение к БД очень экзотическое?

Например, у заказчика чрезвычайно устаревшая (или наоборот, слишком свежая) версия СУБД и невозможно использовать встроенный драйвер для PHP. В таких случаях на помощь спешат, конечно же, программисты.

Чтобы добавить в 1С-Битрикс: Управление сайтом поддержку нового типа БД, необходимо следовать простой инструкции:

  1. Создать класс подключения (наследник Bitrix\Main\DB\Connection ). В нем определить все “базовые” операции с БД: подключение, отключение, выполнение произвольного запроса, работу с транзакциями.
  2. Создать класс SQL-хелпер (наследник Bitrix\Main\DB\SqlHelper ) и возвращать его экземпляр в методе createSqlHelper . Класс предназначен для самой низкоуровневой работы с БД - он добавляет экранирование, работает с датами, предоставляет доступ к базовым SQL-функциям и т.п.
  3. Создать класс для результата выборки (наследник Bitrix\Main\DB\Result ). В нем требуется определить методы-обертки над традиционными функциями работы с результатом выборки.

Теперь вы знаете, какие className можно указывать в /bitrix/.settings.php и как создавать собственные подключения к БД.

Реальный пример: использование ORM для подключения из PHP к MSSQL в Linux

Как уже было отмечено выше, класс Bitrix\Main\DB\MssqlConnection основан на расширении sqlsrv, которое доступно только на windows-сервере. В одном из наших проектов возникла необходимость подключиться к MSSQL с linux-сервера, то есть решение от 1C-Битрикс нам не подходило (а компиляция драйвера в linux ничем хорошим не закончилась). Помогла природная смекалка и знание ООП.

На сервер было установлено расширение mssql ( http://php.net/manual/ru/book.mssql.php ) и была разработана следующая архитектура:

Был разработан собственный набор MSSQL-классов, многие методы были унаследованы от стандартных Bitrix\Main\DB\Mssql* . Пришлось буквально в паре десятков мест произвести замены вроде sqlsrv_query => mssql_query. К этому пакету (и способу его получения) вернемся в завершении статьи.

Выбор данных из хранимых процедур вместо таблиц

ORM подходит даже для таких экзотических запросов, как выборка данных не из таблицы, а из хранимых процедур. Такие процедуры могут быть созданы в MSSQL-базе данных. Что ж, попробуем “обмануть” ORM и подсунуть ей процедуру вместо имени таблицы.

Укажем название функции в методе getTableName .

Однако, сразу такой код работать не будет. Дело в том, что при использовании подключения Bitrix\Main\DB\MssqlConnection все вхождения имен таблиц проходят через экранирование. Попытка сразу выполнить такой запрос приведет к выбрасыванию исключения:

MS Sql query error: Invalid object name 'foo_table_procedure()'. (400)

SELECT

[base].[bar] AS [BAR],

[base].[baz] AS [BAZ],

FROM [foo_table_procedure()] [base]

Увы, не получилось. На самом деле, мы в одном шаге от успеха, помешали только знаки “[“ и “]”, которыми MssqlSqlHelper защитил имя используемой “таблицы”. Проблема решается “в лоб” созданием собственного подключения ( Connection ) и SqlHelper ’а.

На сервер было установлено расширение mssql ( http://php.net/manual/ru/book.mssql.php ) и была разработана следующая архитектура:

Где self::isKnownFunctionCall — метод проверки, который возвращает true, если в $identifier находится “foo_table_procedure()”.

Выводы

Новое ядро D7 уже здесь. Каждый месяц появляются все новые и новые классы, они постепенно заменяют старые. Если в Ваших проектах или модулях есть классы, чья ответственность — предоставление доступа к 1 таблице в БД (локальной или сторонней) — требуется его переписать, поставить “на рельсы" одной из ключевых фич в новом 1С-Битрикс: Управлении сайтом.

Что касается пакета классов для подключения с linux-сервера к MSSQL БД. Если Вы хотите получить этот пакет (3 класса: MssqlConnection , MssqlSqlHelper , MsssqlResult ), поделитесь статьей в соц.сетях и заполните форму в конце страницы. Ссылка для скачивания файлов придёт вам на почту. 

Оцените статью:

Спасибо, ваш голос успешно добавлен!

www.intervolga.ru

Некоторые приёмы работы в Битрикс на SQL и BASH / Хабр

Я продолжаю писать о Битриксе в контексте обменов, Mysql и командной строки Linux.

Эта статья является вводной к серии статей о структуре базы данных Битрикс, где эта тема будет раскрыта достаточно подробно. Для начала же будут представлены решения некоторых небольших, но назойливых задач. Как всегда, знание SQL обязательно.

В статье рассматриваются довольно частные вопросы, которые не возникают ежедневно. Конечно, вы можете использовать эти материалы по их прямому назначению, но главная цель статьи не в этом. Я начинаю вскрывать «чёрный ящик» под названием «структура базы данных битрикс», и показывать, что эти знания могут пригодиться для повышения уровня владения как системой, так и базовыми технологиями (SQL, linux shell), что, конечно, помогает решать новые, сложные, интересные, разнообразные задачи.

Страница, с которой можно делать SQL запросы в базу, или mysql web клиент битрикс, находится в панели управления Битрикса по пути: «Настройки->Инструменты->SQL запрос».

Также, конечно, можно делать запросы из командной строки операционной системы, для чего могу предложить вам несложную операцию извлечения логина и пароля прямо из настроек Битрикса:

log=$(grep -i "login" /home/bitrix/www/bitrix/php_interface/dbconn.php | cut -f2 -d'"') pas=$(grep -i "pass" /home/bitrix/www/bitrix/php_interface/dbconn.php | cut -f2 -d'"') mysql -u$log -p$pas $log — таким образом можно получить логин и пароль к базе данных Mysql Bitrix из командной строки linux на bash. Пути, конечно же, заменяйте на ваши собственные. В варианте, предоставляемом виртаульной машиной Битрикс, DOCUMENT_ROOT выглядит как /home/bitrix/www/.

1. Настройка «Избранного» для всех пользователей панели управления Bitrix сразу.

Когда вводится новый сайт, разработчику не хочется объяснять каждому, кто добавляет новости или редактирует страницы, что нужно нажать, чтобы попасть в новости или каталог товаров. Лучше вывести ссылки прямо на стартовую страницу панели управления битрикс, тем более, что в битриксе «рабочий стол» в админке для этого и предназначен.

Если настройки так называемого «рабочего стола» можно распространить на всех, кто зайдёт в админку Битрикса, то колонку «Избранное» пользователь заполняет только для себя. Это логично, но обычно пользователи пренебрегают такой возможностью, поэтому сделаем эту работу за них.

К тому же, не всё можно поместить на «Рабочий стол», а в «Избранное» можно добавить всё, что угодно, даже ссылку на сторонний ресурс, например, на почту или тикеты службы техподдержки другой системы.

Заполнить блок «Избранное» в админке битрикса именно для всех контент-менеджеров панель управления не позволяет: нет такой кнопочки. Поэтому, вначале добавим нужные ссылки в блок «Избранное» для себя.

Узнайте ваш ID пользователя. Если вы под администратором (admin) в панели управления, то ваш ID пользователя =1.

Очевидно, эти данные относятся к пользователю, и первый взгляд бросается на таблицы, начинающиеся с b_user_, которых в базе Битрикса с десяток. Однако, нужная нам таблица не имеет такого префикса и называется b_favorites.

Эта таблица содержит поле COMMON, которое для всех записей имеет значение 'N'. Как обнаруживается, функция показа избранного для всех пользователей есть, и поле COMMON в таблице b_favorites полностью оправдывает своё наименование.

update b_favorite set common='Y' where user_id=1; Нам даже не нужно дублировать записи администратора для всех пользователей (а как тогда было бы с вновь заводимыми администраторами сайта?.. Делать mysql триггер?.. Заводить событие?...). Теперь все пользователи админки Bitrix видят те же самые «Избранные», что и вы. Задача решена.

2. Как сменить логин и пароль пользователя битрикс через базу данных. Как сбросить пароль администратора Bitrix.

Если вы не можете зайти в панель управления Битрикс, но база доступна, вы можете либо установить свой собственный пароль для пользователя, либо сделать его таким же, как у какого-то другого пользователя, пароль которого вы знаете.

Основные данные всех пользователей хранятся в таблице b_user. Вам нужно знать ID пользователя в системе Битрикс.

Установка собственного логина и пароля Bitrix средствами Mysql

Пароль хранится в базе в виде:

<соль_строка>md5(<соль_строка><пароль>)

Говорят, они что-то ещё изменили, но если вы сделаете так, то оно будет работать.

update b_user set login='su',password=concat('12345678',md5('12345678stupidpassword')) where id=8;где su — новый логин пользователя 12345678 — соль stupidpassword — новый пароль пользователя id=8 — id пользователя (если admin, то =1) Пароль битрикс сброшен, задача решена. Заодно, вы можете изменить и логин.

Копирование пароля от другого пользователя

И второй, очень простой, способ сброса пароля в битрикс.

На этот раз, нам нужно просто перенести хеш пароля от одного пользователя к другому. Конечно, нужно знать ID обоих пользователей в bitrix, в данном случае пользователю с ID=36 мы устанавливаем пароль от пользователя с ID=895.

update b_user b1 inner join b_user b2 on b2.id=36 set b1.password=b2.password where b1.id=895;

3. Применение настройки полей в редактировании заказа в Bitrix админке для всех пользователей.

В некоей доменной зоне второго уровня, на некотором сайте, в административной панели системы управления Битрикс располагается страница редактирования заказа интернет-магазина, в заголовке таблицы товаров которой есть кнопка настройки в виде шестерёнки, и бывает эта кнопка то синяя, то серая…

Нажав на эту кнопку, можно задавать поля заказа, которые будут выводиться в таблице, в том числе и пользовательские свойства заказа. Но при этом, задаётся это только для одного пользователя.

Чтобы применить эти настройки ко всем пользователям панели управления битрикса, а не объяснять каждому, «нажмите маленькую кнопочку в заголовке таблицы с товарами, видите список свойств… Выберите нужные вам...», выставим настройки через базу.

Эти настройки хранятся в таблице b_user_option, которые сопоставлены определённому пользователю посредством поля user_id. Но есть одна особенность: если user_id=0, то свойство — глобальное, и применяется для всех пользователей.

update b_user_option set user_id=0 where name='table_columns' and category='order_basket_table' and user_id=1 где user_id=1 — ID пользователя, под которым вы настраивали таблицу товаров. Если это admin, то ID=1.

Задача решена: Теперь ваши настройки таблицы товаров работают у всех сразу.

4. Сортировка результатов поиска в битрикс по собственному алгоритму.

Если речь идёт о поиске по сайту, основной таблицей для модулей поиска в битриксе является b_search_content.

Интересные поля таблицы b_search_content:

custom_rank — поле, по которому сортировка работает прежде всех остальных полей param1 — код инфоблока param2 — номер инфоблока module_id — ='iblock' item_id — id элемента или раздела — для поиска в инфоблоках.

Прежде всего нас интересует поле custom_rank.

Если в предыдущих случаях мы пользовались предусмотренными, но нереализованными возможностями Битрикс, то для этого поля в панели управления специальная «галочка» есть. Но выставляется она отдельно для каждого элемента, и обычно этой возможностью не пользуются.

Это поле кстати оказывается числовым, так и заполним его по своему усмотрению, тем самым задавая собственные правила сортировки результатов поиска. По умолчанию, для всех элементов его значение равно нулю.

В моём случае, при поиске товаров в каталоге интернет-магазина, реализованном на решении разработчика romza, нужно было вначале выводить те товары, у которых была установлена некая специальная галочка, которая являлась «свойством», соответствующим наличию товара в определённой торговой точке. Прилетало всё это добро с инкрементальной загрузкой из 1С, поэтому данный SQL запрос был повешен на событие окончания обмена с 1С.

update b_search_content sc inner join b_iblock_element_property elp on elp.iblock_element_id=sc.item_id and elp.iblock_property_id=<числовой_id_параметра> set sc.custom_rank=if(elp.value=<числовой_id_значения_параметра>,<произвольное_число>,0) where sc.param1='<код_инфоблока>' and sc.param2=<номер_инфоблока> В настройке инфоблока должно быть указано «Значения свойств хранятся: в общей таблице (по умолчанию)», а не в отдельной таблице, иначе запрос будет выглядеть несколько по-другому.

Сейчас же, за счёт того, что запрос идёт вначале по таблице b_iblock_element_property, а не b_iblock_element, которая является основной для хранения элементов инфоблоков, мы отбираем только те элементы, у которых нужное свойство вообще есть, и если оно равно нужному значению, то поднимается custom_rank, в противном случае, он сбрасывается в ноль.

В моём случае задача решена, а для вас имеется полный простор для реализации своей собственной логики сортировки результатов поиска. А если вам не совсем знакомы эти наименования таблиц, то уже в следующей статье я раскрою их назначение более подробно.

Как быстро почистить кеш в битрикс.

«И на footer.php»: Очистка кеша в битрикс через панель управления происходит очень медленно. На самом деле, идёт всего лишь удаление файлов в определённых директориях, просто это делается медленными средствами. Сделаем специальный файл для очистки кеша в битрикс в командной строке linux.cd /home/bitrix/ cat <<'EOF' > clearcache.sh #!/bin/bash cd $( dirname $0 ) basedir=$(pwd)/www/bitrix/ for d in cache managed_cache; do find $basedir$d -mindepth 1 -delete done EOF chmod 0775 clearcache.sh Теперь вы можете запустить ./clearcache.sh, и кеш битрикса очистится практически мгновенно.

Скрипт этот должен лежать на одну директорию выше, чем DOCUMENT_ROOT вашего сайта. Хотя, вы можете изменить как место его нахождения, так и код, суть в том, что мы должны удалить все файлы из директорий:

cache managed_cache stack_cache — раньше была ещё эта директория, но в последних версиях я её не наблюдаю, поэтому сейчас без неё.

На самом деле, если удалить и сами директории, ничего не случится, они пересоздадутся. Но более правильно их оставлять.

В виртаульной машине Битрикс DOCUMENT_ROOT равен /home/bitrix/www/, если же у вас сайт установлен в другую директорию, скорректируйте скрипт согласно вашим путям.

habr.com

Структура таблиц базы данных функционала скидок и купонов

Функциональность скидок представлена следующими таблицами:b_catalog_discount, b_catalog_discount_coupon,b_catalog_discount2cat, b_catalog_discount2group,b_catalog_discount2iblock, b_catalog_discount2product,b_catalog_discount2section. Здесь основной таблицей является таблицаb_catalog_discount.

Таблица b_catalog_discount cодержит следующие поля:`ID` - идентификатор скидки (автоинкримент),`SITE_ID` - привязка к сайту,`ACTIVE` - активность(Y,N),`ACTIVE_FROM` - указание с какой даты активна скидка,`ACTIVE_TO` - указание до какой даты активна скидка,`RENEWAL`- пролонгация,`NAME` - название,`MAX_USES` - количество раз можно использовать,`COUNT_USES` - использованное количество раз,`COUPON` - купон для скидки,`SORT` - индекс сортировки,`MAX_DISCOUNT` максимальная скидка,`VALUE_TYPE` - тип скидки("V" - Фиксированная сумма, "P" - проценты от суммы),`VALUE` значение скидки,`CURRENCY` - iso код валюты,`MIN_ORDER_SUM` - минимальная сумма скидки,`TIMESTAMP_X` - время,`NOTES` - примечание. 

Следующие таблицы предназначаются для создания скидки на определенный товар или товар содержащийся в определенном месте:b_catalog_discount2cat, - объекты находящиеся в определенной категории,b_catalog_discount2group - скидка для определенной пользовательской группы,b_catalog_discount2iblock – скидка на товар из определенного информационного блока,b_catalog_discount2product – скидка на определенный товар,b_catalog_discount2section - скидка на товары в определенной секции.

Структура всех таблиц идентична:Идентификатор записи(ID),Идентификатор скидки(DISCOUNT_ID),Идентификатор принадлежности (SECTION_ID, GROUP_ID и т.д)

Последняя таблица функционала относящегося к скидкам -b_catalog_discount_coupon.В ней хранятся создаваемые вами купоны.`ID` - идентификатор записи,`DISCOUNT_ID` - идентификатор скидки,`ACTIVE` - признак активности ('Y', 'N'), `COUPON` - уникальный ключ купона,`DATE_APPLY` - дата применения купона,`ONE_TIME` - единичного использования ('Y', 'N'),`DESCRIPTION` - описание. Соответственно вы должны учесть, что для создания купона, вы должны заблаговреммено создать скидку для этого купона в таблицеb_catalog_discount. Данный функционал находится в разделах «Скидки», «Разделы скидок» раздела «Торговый каталог» административной части

promst59.ru


Prostoy-Site | Все права защищены © 2018 | Карта сайта