Встроил на страницу компонент basket.line Выдает ошибку базы данных.
Код
[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 с такой же редакцией (Бизнес)
Очевидно что ошибка происходит из-за новой логики в этом файле, написаной в соответствии с ядром D7, при этом в таблице b_sale_discount_group отсутствует новое поле ACTIVE необходимое для этой логики.
Также я нашел описательный файл для сущности этой таблицы. В нем присутствует поле ACTIVE /bitrix/modules/sale/lib/internals/discountgroup.php
Судя по описанию, у Вас некорректно прошла установка обновления sale 14.11.0 Вы можете обратиться в ТП для исправления этой ситуации, либо создать поле вручную, выполнив 2 запроса:
Код
alt er table b_sale_discount_group add ACTIVE char(1) null
Код
upd ate b_sale_discount_group DC INNER JOIN b_sale_discount D ON D.ID = DC.DISCOUNT_ID se t DC.ACTIVE = D.ACTIVE
Запросы приведены для Mysql После этого рекомендую выполнить проверку сайта в админке.
Не надо сверлить зубы через задний проход дрелью от Сваровски
Я понял. Еще понял что я спутал b_catalog_discount и b_sale_discount при описании проблемы и сравнении старых и новых версий модулей. Евгений, подскажите, где используется в административном разделе таблица b_sale_discount и b_sale_discount_group? Хочу посмотреть, что там все работает.
Могли ошибки при обновлении произойти из-за неправильной кодировки некоторых таблиц? У 16 таблиц была кодировка utf8_general_ci вместо utf8_unicode_ci.