Что такое FUSER_ID в 1С-Битриксе

, Михаил

ID покупателя (так называемый FUSER_ID) уникальный для посетителя, открывшего сайт. Он у него живет в куках, даже если он еще не делал ничего. Сейчас поясню, для чего он нужен. В продукте реализован механизм, который позволяет работать с корзиной не авторизованным пользователям. Чтобы этот механизм работал, корзина привязывается не к ID пользователя сайта, а к FUSER_ID - идентификатор пользователя магазина, который записывается в куки. Опишу несколько ситуаций:

Ситуация первая:

  1. Вы не авторизованный пользователь, кладёте товар в корзину - создаётся новый FUSER_ID, пусть это FUSER_X, который записывается в базу и в куки.
  2. Затем вы авторизуетесь под аккаунтом пользователя A. Если к идентификатору пользователя А не привязан никакой FUSER_ID, то он опять же создаётся, привязывается к идентификатору пользователя А (записывается в базу) и пишется в куки, путь это будет FUSER_Y. В это же время все товары не авторизованного пользователя переносятся в корзину авторизованного пользователя.
    Товары покупателя FUSER_X ---> Товары покупателя FUSER_Y.
    Соответственно, теперь к FUSER_X не будет привязано ни одного товара и FUSER_X удаляется из базы.

Ситуация вторая:

  1. Вы авторизованный пользователь А, вашей корзине есть товары, которые привязаны к FUSER_Y.
  2. Вы решили разлогиниться.
  3. В этот момент Вы становитесь не авторизованным пользователем и FUSER_ID из куков удаляется и пишется НОВЫЙ, корзина пуста, т.к. именно по FUSER_ID осуществляется выборка товаров в корзине.

Ситуация третья:

  1. Вы авторизованный пользователь А, вашей корзине есть товары, которые привязаны к FUSER_Y.
  2. Вы не собираетесь разлогиниваться, но получается так, что закончилось время жизни сессии - вы становитесь не авторизованным пользователем. Из куков не удаляется FUSER_ID, он остаётся таким же равным FUSER_Y, т.е. получается, что вы не авторизованный пользователь с FUSER_ID пользователя А, поэтому в корзине присутствуют товары пользователя А.
    Это нормальная ситуация. Согласитесь, пользователю будет не очень приятно, если он набрал 50 товаров в корзину, время сессии закончилось и его товары из корзины пропали.
  3. За этот же компьютер садится другой пользователь, который авторизуется под аккаунтом пользователя В, идентификатор пользователя магазина FUSER_Z. И тут возникает "первая ситуация", перенос товаров от FUSER_Y к FUSER_Z.
  4. В итоге, если пользователь А, авторизуется снова (на другом компьютере или браузере), то его корзина будет пуста.
    Т.е. пользователь B "приобрёл" корзину пользователя А.

Если пользователь А и пользователь B, работают за разными компьютерами, то ситуации переноса корзины от пользователя А к пользователю B никогда не произойдёт, соответственно проблему у покупателей быть не должно.
Это неизбежная логика стандартного механизма корзины.

p.s. FUSER_ID это ID покупателя, но НЕ ID профиля покупателя, это разные сущности.