На той вкладке устанавливается количество попыток ввода пароля до показа капчи. Проблема в другом. Я уже ее обнаружил.
24.08.2021 07:58:58
Доброе утро!
Передо мной стоит следующая задача: после обмена с 1с устанавливать кратность товару на вкладке торговый каталог в соответствии с пришедшей. Кратность у нас организована следующим образом: из 1ски приходит значение кратности, затем это значение устанавливается в свойство товара Кратность продаж. В торговом каталоге тоже есть свойство единица измерения, которое после обмена не меняет своего значения (всегда 1). Вопросы: 1. Как правильно обновлять значение единицы измерения в торговом каталоге после обмена с 1с? Пытался использовать события: - OnAfterIBlockElementUpdate, OnAfterIBlockElementAdd - события возникают на каждом товаре при обмене, но кратность изменить не удается - \Bitrix\Catalog\MeasureRatio::OnBeforeUpdate, \Bitrix\Catalog\MeasureRatio::OnBeforeAdd - события возникают при обмене, но на единицах товара, соответственно я проверил следующее - изменил вечером кратность у товара с 1 на 10, после обмена кратность в свойстве товара стала 1, а в торговом каталоге осталась равной 10. Причем, если в карточку товара просто зайти и нажать применить, то в торговом каталоге тоже станет 1ца. Событие на том конкретном товаре, в котором я менял кратность на 10 не возникло. 2. Подскажите, какая логика у срабатывания событий \Bitrix\Catalog\MeasureRatio::OnBeforeUpdate, \Bitrix\Catalog\MeasureRatio::OnBeforeAdd во время обмена с 1с? 3. Где и как найти место, в котором свойство товара Кратность продаж устанавливается равным строке, пришедшей из 1с? Пока не вышло(... Хотя я только что понял, свойство товара Кратность продаж создается самой 1ской при обмене, если его раньше не было, соответственно туда и приходит значение кратности при обмене... Обмен у нас стандартный. |
|
|
29.07.2021 10:57:05
Всем привет.
Столкнулся с такой проблемой. У меня сайт обменивается с 1С товарами, ценами и т.д. Я назначил обработчик событий на OnAfterIBlockElementUpdate, в котором обновляются остатки товаров по складам в зависимости от условий. У товаров после обмена обновляется время изменения, но событие не срабатывает... Если в админке в карточке товара нажать кнопку применить, то все ок. Причем, раньше вроде работало или я невнимательно следил за этим... Есть какие-то новые пути решения этой проблемы? Или все сводится к совету на форуме из 2014г "выключите в настройках отгрузки из 1С "Использовать контрольные суммы элементов для оптимизации обновления каталога"?? |
|
|
26.07.2021 14:53:55
Всем доброго дня!
Подскажите пожалуйста, есть ли в D7 аналоги событий OnAfterIBlockElementUpdate и OnAfterIBlockElementAdd? Пытался сделать так $eventManager->addEventHandler("iblock", "Bitrix\Iblock\ElementTable::OnBeforeUpdate", ["iblockElementEventCustom", "changeRemains"]); Но событие не срабатывает. Какой-то конкретной информации не удалось найти почему-то. |
|
|
24.07.2021 10:35:48
Кое-что нашел...
"В модуле sale есть класс CAllSaleUser, который содержит функцию OnUserLogin(). Она вызывается при логине пользователя. При этом она же принудительно перекидывает всю заполненную корзину вновь залогиненному пользователю. Это хорошо работает, когда корзина набирается без регистрации, а затем пользователь входит в свой аккаунт, сохраняя при этом собранную корзину. И в то же время это работает совершенно непредсказуемо, когда пользователь перелогинивается - при этом корзина у одного пользователя целиком сливается с его текущей корзиной без какой бы то ни было возможности вернуть все обратно. Пару лет назад мы нашли решение данной проблемы, полностью отключив трансфер корзин. Однако сделано это в ядре, и при обновлении обычно изменения затираются, что и логично. Было бы неплохо вынести трансфер в отдельную настройку, чтобы лишний раз не сталкивать пользователя с таким поведением движка." Полностью поддерживаю! Проголосуйте, кому небезразлична судьба корзин)) |
|
|
23.07.2021 10:34:24
Ситуация с новым ядром конечно да...
Вот есть старые классы CSaleUser и CAllSaleUser. Сделали новый класс Fuser. Хорошо, но какого извините фига новый класс использует методы старых!???? А эти комментарии //TODO конечно доставляют)) где-то видел коммент говорящий переделать текущий метод под D7. Интересно, а в целом почему класс нового ядра использует методы старого?? Отказ от глобальных переменных там... от global $USER например. |
|
|
22.07.2021 08:26:08
Больше никто ничего не посоветует??
Закоментил код в файлах app/bitrix/modules/sale/lib/fuser.php app/bitrix/modules/sale/lib/internals/fuser.php app/bitrix/modules/sale/lib/discount/context/fuser.php Но в таблицу b_sale_fuser все равно добавляется запись о новом fuser_id для пользотателя, зашедшего в каталог! Как? Где? Метод класса по запись в БД заблокирован! Ухаха, ухаха, оказывается у класса Fuser есть класс-клон CSaleUser. Что за прикол такой!?? Это не смешно! Хе-хе, а еще есть CAllSaleUser))). Ах даа, старое и новое ядро... |
|
|
16.07.2021 16:58:03
Поведение целиком и полностью аналогично описанию
Цитата "В итоге, если «пользователь Иванов», авторизуется снова (на другом компьютере или в другом браузере), то его корзина будет пуста. Т.е. «пользователь Петров» приобрёл корзину «пользователь Иванов». Если «пользователь Иванов» и «пользователь Петров», работают за разными компьютерами, то ситуации переноса корзины от одного пользователя другому никогда не произойдёт, соответственно проблему у покупателей быть не должно." Так что все-таки в FUSER_ID дело. Я и по таблицам в базе следил и глазами видел как фузеры перезжают. |
|
|
16.07.2021 14:38:29
Алексей, спасибо за советы!
К сожалению у меня с проектом ситуация полностью аналогична вашей))) поэтому страха потерять возможность обновления больше нет. Страха больше вообще нет...)) Я был так глубоко и далеко, там было очень темно и сыро. А еще добрые люди прошлись idешкой по всему проекту, которая заменила переменные на константы и прочая ересь. Причем ее совсем не заботило где яядро, а где нет)) Иногда я боюсь пробудить Ктулху работая над сайтом. По ночам я уже слышу зов... По поводу доп таблицы мне кажется это порядком нагрузит корзину, учитывая, что у нас у клиента может быть свыше 500 товаров, а иногда и 1000. Моя идея пока что - записывать в таблицу с корзиной вместо фузер айди именно юзер айди, соответственно и выборку делать по юзер айди. Кастрировать ядро придется конечно же. Как-то еще надо запретить присвоение неавторизованным пользователям FUSER_ID ибо на нашем проекте это ни к чему. А в таблице b_fuser уже > 2 000 000 записей... |
|
|
15.07.2021 14:03:52
Апаю тему...
Произошло несколько эксцессов у клиентов и менеджеров из-за перецепки корзин... По этой причине, а также исходя из того, что неавторизованные пользователи не могут у нас пользоваться корзиной, было принято решение привязывать товары не в корзине не к FUSER_ID а к USER_ID, чтобы подобных ситуаций впредь не повторялось. Подскажите, кто-то сталкивался с подобным? Как грамотно уйти из этой ситуации? Или выход один - полный выпил ФУЗЕР_ИД из корзины?? |
|
|
13.07.2021 21:30:58
Посмотрел, возможно я что-то упустил, но не понял как события могут мне помочь удалить несколько товаров из корзины сразу. Я написал скрипт очистки корзины пользователя от неактуальных товаров. События тут особо не к чему пришить.
Также в видеоркурсе, а конкретнее в уроке |
|
|
08.07.2021 10:00:13
Доброе утро, коллеги!
Осваиваю модный Д7 и у меня конкретно начало пригорать. Аж кондратий начинает хватать. Но бессмысленного нытья тут не будет. Хотя конечно сильно удивляет ситуация со старым и новым ядром в ПЛАТНОМ блин продукте, стоимость которого доходит до полутора миллиона рублей. Ну ничего, пусть это все остается на совести разработчиков. Я недавно посмотрел вебинар про Битрикс 3, и сердце стало биться быстрее) Надеюсь, что получится что-то годное и желаю разрабам удачи. И заклинаю Вас, откажитесь уже наконец от обратной совместимости. Хватит тащить на себе бородатый доисторический груз. Лучше потратьте это время на качественную разработку системы и документирование. А теперь к делу: как за один запрос из корзины удалить сразу несколько товаров в Д7 ????????? Пытаюсь использовать конструкцию $dbRes = \Bitrix\Sale\Internals\BasketTable::delete($items); но в итоге происходит матерная ругань на массив. Если передать только один первичный ключ, то все ок. В случае $basket->delete() тоже удаляется только один товар. Неужели выход только один, а именно - удалять позиции в цикле? Это же противоречит здравой логике! Не проще ли тогда написать прямой SQL запрос к бд, записав в строку все айдишники позиций товаров в таблице для удаления!? |
|
|
07.07.2021 14:25:08
Добрый день.
Хочу настроить для контент-редакторов возможность создавать фасетные индексы. Соответствующая кнопка располагается в разделе контент на вкладке инфоблоки. Дал пользователю полный доступ к инфоблоку соответствующему, главный модуль - управление структурой, торговый каталог тоже давал полные права, но кнопка создания фасетных индексов так и не появилась! Что я упустил? Куда смотреть? |
|
|
02.07.2021 08:52:20
Доброе утро!
Кто-нибудь сталкивался с такой проблемой: после регистрации пользователь пытается авторизоваться со своим логином и паролем. После 2й попытки ввода учетных данных у пользователя вылазит капча и только после этого происходит авторизация. Данные вводились при всех попытках верные, в этом сомнений нет. В админке у группы "Все пользователи" стоит настройка Количество попыток ввода пароля до показа CAPTCHA - 1. Важное дополнение: баг происходит только после того как пользователю поменяли пароль через админку. |
|
|