Встроил на страницу компонент basket.line
Выдает ошибку базы данных.
Несуществующее поле ACTIVE в таблице b_sale_discount_group.
Версия Битрикса 15.0.6, установлены все стабильные обновления.
Посмотрел на более старом сайте где версия 15.0.2 с такой же редакцией (Бизнес)
Различаются файлы
/bitrix/sale/general/discount.php
В частности место где происходит неправильный запрос
Новая версия: (ссылка на скриншот)
Старая версия (ссылка на скриншот)
Очевидно что ошибка происходит из-за новой логики в этом файле, написаной в соответствии с ядром D7, при этом в таблице b_sale_discount_group отсутствует новое поле ACTIVE необходимое для этой логики.
Также я нашел описательный файл для сущности этой таблицы. В нем присутствует поле ACTIVE
/bitrix/modules/sale/lib/internals/discountgroup.php
(ссылка на скриншот)
Вот как таблица выглядит сейчас у меня
(ссылка на скриншот)
Также я проверил логику добавления привязки скидок к группам. Это делается в админке в скрипте
/bitrix/modules/catalog/admin/cat_discount_edit.php
При этом методы GetList и Add используются старые, не через сущность, и не используют выборку или добавление по полю ACTIVE
ссылки на скриншоты
- Add в админке
- GetList в админке
Единственное решение, которое я сейчас вижу - добавить вручную поле ACTIVE в эту таблицу
Правильно ли я поступаю или это можно решить по другому?
Выдает ошибку базы данных.
| Код |
|---|
[Bitrix\Main\DB\SqlQueryException] Mysql query error: Unknown column 'sale_internals_discount_group.ACTIVE' in 'where clause' (400)
SEL ECT
`sale_internals_discount_group`.`DISCOUNT_ID` AS `DISCOUNT_ID`
FR OM `b_sale_discount_group` `sale_internals_discount_group`
WHERE `sale_internals_discount_group`.`GROUP_ID` IN (1,3,4,2)
AND UPPER(`sale_internals_discount_group`.`ACTIVE`) like upper('Y')
/var/www/site/data/www/site-k.ru/bitrix/modules/main/lib/db/mysqlconnection.php:104
#0: Bitrix\Main\DB\MysqlConnection->queryInternal(string, array, object)
/var/www/site/data/www/site-k.ru/bitrix/modules/main/lib/db/connection.php:332
#1: Bitrix\Main\DB\Connection->query(string)
/var/www/site/data/www/site-k.ru/bitrix/modules/main/lib/entity/query.php:1735
#2: Bitrix\Main\Entity\Query->query(string)
/var/www/site/data/www/site-k.ru/bitrix/modules/main/lib/entity/query.php:450
#3: Bitrix\Main\Entity\Query->exec()
/var/www/site/data/www/site-k.ru/bitrix/modules/main/lib/entity/datamanager.php:230
#4: Bitrix\Main\Entity\DataManager::getList(array)
/var/www/site/data/www/site-k.ru/bitrix/modules/sale/general/discount.php:34
#5: CAllSaleDiscount:DoProcessOrder(array, array, array)
/var/www/site/data/www/site-k.ru/bitrix/components/bitrix/sale.basket.basket.line/class.php:272
#6: SaleBasketLineComponent->calculateOrder(array)
/var/www/site/data/www/site-k.ru/bitrix/components/bitrix/sale.basket.basket.line/class.php:240
#7: SaleBasketLineComponent->getTotalPrice()
/var/www/site/data/www/site-k.ru/bitrix/components/bitrix/sale.basket.basket.line/class.php:152
#8: SaleBasketLineComponent->executeComponent()
/var/www/site/data/www/site-k.ru/bitrix/modules/main/classes/general/component.php:506
#9: CBitrixComponent->includeComponent(string, array, NULL)
/var/www/site/data/www/site-k.ru/bitrix/modules/main/classes/general/main.php:1011
#10: CAllMain->IncludeComponent(string, string, array)
/var/www/site/data/www/site-k.dev.test.ru/private/shop/index.php:16 |
Несуществующее поле ACTIVE в таблице b_sale_discount_group.
Версия Битрикса 15.0.6, установлены все стабильные обновления.
Посмотрел на более старом сайте где версия 15.0.2 с такой же редакцией (Бизнес)
Различаются файлы
/bitrix/sale/general/discount.php
В частности место где происходит неправильный запрос
Новая версия: (ссылка на скриншот)
Старая версия (ссылка на скриншот)
Очевидно что ошибка происходит из-за новой логики в этом файле, написаной в соответствии с ядром D7, при этом в таблице b_sale_discount_group отсутствует новое поле ACTIVE необходимое для этой логики.
Также я нашел описательный файл для сущности этой таблицы. В нем присутствует поле ACTIVE
/bitrix/modules/sale/lib/internals/discountgroup.php
(ссылка на скриншот)
Вот как таблица выглядит сейчас у меня
(ссылка на скриншот)
Также я проверил логику добавления привязки скидок к группам. Это делается в админке в скрипте
/bitrix/modules/catalog/admin/cat_discount_edit.php
При этом методы GetList и Add используются старые, не через сущность, и не используют выборку или добавление по полю ACTIVE
ссылки на скриншоты
- Add в админке
- GetList в админке
Единственное решение, которое я сейчас вижу - добавить вручную поле ACTIVE в эту таблицу
Правильно ли я поступаю или это можно решить по другому?