Странная проблема, http-сеанс с запозданием видит изменения в базе данных

1. robix 27.09.24 10:58 Сейчас в теме
Приветствую.

Столкнулся с такой проблемой.

Есть справочник с реквизитом булево. Допустим, записываю его - Истина в пользовательском режиме.

Затем отправляю из одной базы в другую запрос по http-сервису, где в функции обращаюсь к реквизиту этого справочника. Ставлю отладку http-соединения, вижу, что норм - реквизит справочника = Истина. Потом в пользовательском режиме ставлю реквизит = Ложь. И еще раз отправляю http-запрос.

Также ставлю отладку http-соединения, вижу, что реквизит все равно = Истина. Потом спустя некоторое количество секунд (пока стоит точка останова), реквизит становится - Ложь.

Заметил, что если не сразу после смены реквизита отправлять http-запрос, а подождать несколько секунд, то все нормально.

Пробовал имитировать запрос по http просто вызовом той же функции локально - проблемы нет. Именно http сеанс как-бы с запозданием видит изменения в базе данных.

Кто сталкивался, в чем может быть проблема ?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user1936660 27.09.24 12:06 Сейчас в теме
(1)
в чем
В отладчике, которым ты смотришь данные.
Используй запись в журнал регистрации и убедись, что все работает.
3. robix 27.09.24 12:56 Сейчас в теме
(2) Меняю реквизит элемента справочника, запоминаю его версию данных.
Запускаю после этого запрос по http, который получает версию данных этого же элемента справочника, и пишет в журнал регистрации. Так вот, версия данных в журнале остается ровно той, которая была до записи элемента справочника.

А если сделать запрос по http спустя несколько секунд, то он уже видит реальную версию. + в отладке http, если подождать на точке останова, то видно как сначала версия данных одна, а потом она сама меняется, если вычислять ее спустя несколько секунд.
6. user1936660 27.09.24 13:38 Сейчас в теме
(3)
Меняю реквизит элемента справочника
Кодом?
И база не файловая ли по сети у тебя часом?
7. robix 27.09.24 14:02 Сейчас в теме
(6) Не. Серверная. Просто открываю элемент справочника и записываю его. По журналу регистрации видно, что я записал, и в форме в "ПриЗаписиНаСервере" пишу в журнал версию данных справочника, и состояние реквизита. После этого сразу отправляю из другой базы повторно http-запрос. И он получает запросом этот элемент справочника, получаю объект и его версия остается предыдущая. Я как понял, если через 20 секунд ( время жизни сеанса в настройках http) еще раз отправить запрос http, то он уже видит новую версию элемента справочника . Как-то так.
Видимо в 1С http-сеанс как-то кэширует результат функции, и на время жизни сеанса его сохраняет. Хотя в свойствах модуля, из которого вызывается функцию нет опции повторного использования возвращаемых значений...
8. scarl1n 9 27.09.24 14:05 Сейчас в теме
(5) Ну, я как моделировал:
1. Подключил HTTP отладку
2. Зашел в предприятие
3. Поменял реквизит
4. Выполнил запрос в браузере
Прикрепленные файлы:
4. scarl1n 9 27.09.24 13:29 Сейчас в теме
Попробуй убрать повторное использование сеансов в свойствах HTTP-Сервиса, затем переопубликуй базу (отключи существующую, опубликуй и рестарти вебсервер).
5. user1936660 27.09.24 13:37 Сейчас в теме
(4) Мимо. У него сеанс не меняется, он в одном и том же на точке останова висит. А меняет данные вообще из клиенсткого приложения.
9. scarl1n 9 27.09.24 14:15 Сейчас в теме
А куда именно эта проблема вытекает? Может есть другие пути обхода или это вовсе не существенная проблема.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот