Всем привет. Есть http-сервис. Некорректно отрабатывает простой код.

```1c
    Доступен = Ложь;

    Для каждого ТекущаяСтрока Из ПользовательЛичногоКабинета.Клиенты Цикл

    Если ТекущаяСтрока.Клиент = Клиент Тогда

    Доступен = Истина;
    Прервать;

    КонецЕсли;

    КонецЦикла;

    Возврат Доступен;
```

Две одинаковые ссылки на один и тот же элемент справочника. И они не равны. В чем прикол?

Вопрос решается перезапуском службы веб сервера. Но спустя 3-4 подключения, начинается опять.
---
ахахах. Я даже комментарий оставил со ссылкой на инфостарт)))

```1c
    Функция КлиентДоступенПользователюЛичногоКабинета(ПользовательЛичногоКабинета, мКлиент)

    // этот код, почемуто иногда не срабатвыает. Какой то глюк.
    // https://forum.infostart.ru/forum9/topic278663/#message2800678
    // ссылка иногла не равна ссылке. Приходится перезапускать службу веб сервера.
    // решим переделать по сравнению уидов строк.

    // Старый код.
    //ПараметрыОтбора = Новый Структура;
    //ПараметрыОтбора.Вставить("Клиент", Клиент);
    //НайденныеСтроки = ПользовательЛичногоКабинета.Клиенты.НайтиСтроки(ПараметрыОтбора);
    //
    //Возврат НайденныеСтроки.Количество() > 0;

    Доступен = Ложь;

    УИДКлиентаСтрока = Строка(мКлиент.УникальныйИдентификатор());

    Для каждого ТекущаяСтрока Из ПользовательЛичногоКабинета.Клиенты Цикл

    УИДКлиентаБазыСтрока = Строка(ТекущаяСтрока.Клиент.УникальныйИдентификатор());

    Если ВРег(УИДКлиентаБазыСтрока) = ВРег(УИДКлиентаСтрока) Тогда

    Доступен = Истина;
    Прервать;

    КонецЕсли;

    КонецЦикла;

    Возврат Доступен;

    КонецФункции
```
---
А поиск в таблице тоже не работает?
---
нет. Сначала сделал через найтистроки. Удивился результату. Решил переписать и тоже самое)
---
А какая платформа?
---
8.3.18.1741
Клиент-сервер
---
Можно предложить попробовать на другой версии платформы.
Еще можно предложить написать на линию консультации и на партнерский форум, если есть доступ.
---
Этот код выполняет HTTP-сервис. И желательно написать так, чтобы не привязываться к версиям и ошибкам платформы. )) Понимаю, что тяжело. )))) Если ошибка будет повторяться, то буду эксперементировать)) Спасибо.
---
Вопрос решается перезапуском службы веб сервера. Но спустя 3-4 подключения, начинается опять. Значит, код правильный (срабатывает), а глючит платформа.

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

В-общем, сравнивать простые типы данных, а не агрегатные.
---
уже реализовал именно так. Буду отслеживать.
---
очень странно,может кеш почистить?
---
Добрый день! А почему не обращаетесь через ссылку?

```1c
    ТекущаяСтрока.Клиент.Ссылка = Клиент.Ссылка
```

Не всегда видится то, что видится.
---
ТекущаяСтрока.Клиент и Клиент – и так ссылки, судя по Табло. Я бы еще ЗначениеВСтрокуВнутр сравнил.
---
Ну не всегда. Только в данный момент момент отладки. Кто даст гарантию, что это каждый раз?
---
Забавно, думал что такого быть не может, а вот, коллега столкнулся, релиз 8.3.25.1374.
В в контектсе веб-сервиса создается документ. Не работает элементарно ОбщегоНазначения.ЗначениеРеквизитаОбъекта() в типовом коде заполнения документа. Не работает потому что ЗначениеРеквизитаОбъекта() вызывает ЗначенияРеквизитовОбъектов(), которая возвращает соответствие, и ЗначениеРеквизитаОбъекта() не может в этом соответствии найти ссылку.
Кстати, ЗначениеВСтрокуВнутр() совпадают тоже.
---
Я бы думал в сторону того, что сеанс http-сервиса - не совсем полноценный сеанс, там может быть не все параметры сеанса инициализированны. Возможно, это как-то связано с разделением данных, что опять же, в сторону сеанса.
---
И еще вопрос - как в переменную "Клиент" передаются данные? Может там словоблудие полное.
Если через ПолучитьОбъект(Чего_то_Там).Ссылка, то ошибка исключается.
---
а если обратиться через . Ссылка?
---
Может дело в настройках веб-сервера? @pyrkin_vanya, удалось чтото накопать?
---
Кстати, @pyrkin_vanya, у вас там случайно не IIS выступал вебсервером?
---
сейчас уже не вспомню. Но вроде как о вопрос решил тогда. Да, iis был. Попробую поискать код
---
ахахах. Я даже комментарий оставил со ссылкой на инфостарт)))

```1c
    Функция КлиентДоступенПользователюЛичногоКабинета(ПользовательЛичногоКабинета, мКлиент)

    // этот код, почемуто иногда не срабатвыает. Какой то глюк.
    // https://forum.infostart.ru/forum9/topic278663/#message2800678
    // ссылка иногла не равна ссылке. Приходится перезапускать службу веб сервера.
    // решим переделать по сравнению уидов строк.

    // Старый код.
    //ПараметрыОтбора = Новый Структура;
    //ПараметрыОтбора.Вставить("Клиент", Клиент);
    //НайденныеСтроки = ПользовательЛичногоКабинета.Клиенты.НайтиСтроки(ПараметрыОтбора);
    //
    //Возврат НайденныеСтроки.Количество() > 0;

    Доступен = Ложь;

    УИДКлиентаСтрока = Строка(мКлиент.УникальныйИдентификатор());

    Для каждого ТекущаяСтрока Из ПользовательЛичногоКабинета.Клиенты Цикл

    УИДКлиентаБазыСтрока = Строка(ТекущаяСтрока.Клиент.УникальныйИдентификатор());

    Если ВРег(УИДКлиентаБазыСтрока) = ВРег(УИДКлиентаСтрока) Тогда

    Доступен = Истина;
    Прервать;

    КонецЕсли;

    КонецЦикла;

    Возврат Доступен;

    КонецФункции
```
---
Помню только что этот вопрос закрылся и больше не всплывал.
---
благодарю за ответы! @pyrkin_vanya