На демо сервере junior quik не передается таблица firms при смене пользователя

Страницы: 1
RSS
На демо сервере junior quik не передается таблица firms при смене пользователя
 
На демо сервере junior quik не приходят обновления таблицы firms в колбек OnFirm при смене пользователя.
1. Запускаем скрипт.
2. Происходит подключение 1-го пользователя.
3. OnFirm - приходит.
4. Отключение 1-го пользователя.
5. Подключение 1-го пользователя.
6. OnFirm - не приходит.
Это ошибка или особенность работы? Версия квика 8.2.
 
Здравствуйте, Александр.

Функция обратного вызова OnFirm вызывается в том случае, если в рабочее место QUIK поступает запись о новой фирме, информации о которой ранее не было у терминала.
При первом подключении рабочее место получает список фирм впервые и записывает их в файл firms.dat. Список фирм обновляется редко. Соответственно, при очередном подключении рабочее место не получает информации о новых фирмах, ввиду их отсутствия и, соответственно, OnFirm не вызывается. Но если новая фирма появится - то при запущенном скрипте вызов произойдёт.
 
Цитата
Andrey Bezrukov написал:
Здравствуйте, Александр.

Функция обратного вызова OnFirm вызывается в том случае, если в рабочее место QUIK поступает запись о новой фирме, информации о которой ранее не было у терминала.
При первом подключении рабочее место получает список фирм впервые и записывает их в файл firms.dat. Список фирм обновляется редко. Соответственно, при очередном подключении рабочее место не получает информации о новых фирмах, ввиду их отсутствия и, соответственно, OnFirm не вызывается. Но если новая фирма появится - то при запущенном скрипте вызов произойдёт.
Если происходит OnCleanup, то таблицы должны быть обнулены и данные о фирме должны быть снова записаны.
В данном случае происходит событие OnCleanup, т. к. залогинился новый пользователь. Таблица firms должна быть очищена и записи обновлены в  OnFirm.
По-моему у вас должна быть такая логика?
 
Александр,

Действительно, если Вы удалите/очистите файл firms.dat, то при очередном подключении callback-функция OnFirm() будет вызвана, т.к. с сервера QUIK будет загружены фирмы, о которых рабочее место не имело ранее информации (ввиду их удаления из firms.dat).

НО:

Функция OnCleanUp вызывается терминалом QUIK в следующих случаях:
1. смена сервера QUIK внутри торговой сессии;
2. смена пользователя, которым выполняется подключение к серверу QUIK, внутри торговой сессии;
3. смена сессии.

В приведённом Вами порядке эксперимента ни одно из условий не выполнено и OnCleanUp не вызывается.

Далее, OnCleanUp() - это callback-функция, при вызове которой, по умолчанию, рабочее место ничего не удаляет и не очищает. Чтобы при вызове функции были выполнены какие-либо действия - необходимо их описать в скрипте следующим образом:
Код
function OnCleanUp()
... -- Ваш код
end

Соответственно то, будет ли удалятся файл firms.dat при вызове OnCleanUp и будет ли очищаться когда-либо вообще - зависит от того, каким образом составлен Ваш скрипт. Само по себе рабочее место не очищает этот файл, т.к. в абсолютном большинстве случаев в этом нет необходимости потому что список фирм меняется очень редко.
 
Цитата
Andrey Bezrukov написал:
В приведённом Вами порядке эксперимента ни одно из условий не выполнено и OnCleanUp не вызывается.
В моем эксперементе произошло:
2. смена пользователя, которым выполняется подключение к серверу QUIK, внутри торговой сессии;
Условие для OnCleanup выполнено.
Я не правильно написал, в шаге 5 подключение другого пользователя.
OnCleanup приходит, но таблица firms не обновляется через OnFirm.
Цитата
Andrey Bezrukov написал:
Соответственно то, будет ли удалятся файл firms.dat при вызове OnCleanUp и будет ли очищаться когда-либо вообще - зависит от того, каким образом составлен Ваш скрипт.
Причем здесь мой скрипт. Если я запущу скрипт, то обновления в OnFirm придут. Если я переключусь с другим пользователем, то обновления не будут приходить, хотя для других таблиц будут (например, таблица всех сделок будет загружаться заново).
 
Александр,

Таблица сделок - это таблица сделок, а не список фирм, и она очищается при смене пользователя, чтобы другой пользователь не получил информацию о сделках, совершённых предыдущем пользователем. Это правило не распространяется на список фирм, о чём было сказано выше.
Соответственно, ожидать что список фирм будет очищен по аналогии с таблицей сделок, при выполнения условия OnCleanUp - ошибочно.
Единственный вариант, при котором вместе с вызовом OnCleanUp очистится список фирм - это очистка/удаление firms.dat из скрипта в вызове OnCleanUp, или вручную.

Соответственно, подключаетесь одним пользователем - получаете список фирм, отключаетесь, меняете пользователя, подключаетесь, очищаются различные таблички, firms.dat не очищается, фронт получает список фирм, не находит в нём новых и не вызывает OnFirm.
 
Цитата
Andrey Bezrukov написал:
Александр,

Таблица сделок - это таблица сделок, а не список фирм, и она очищается при смене пользователя, чтобы другой пользователь не получил информацию о сделках, совершённых предыдущем пользователем. Это правило не распространяется на список фирм, о чём было сказано выше.
Соответственно, ожидать что список фирм будет очищен по аналогии с таблицей сделок, при выполнения условия OnCleanUp - ошибочно.
Единственный вариант, при котором вместе с вызовом OnCleanUp очистится список фирм - это очистка/удаление firms.dat из скрипта в вызове OnCleanUp, или вручную.

Соответственно, подключаетесь одним пользователем - получаете список фирм, отключаетесь, меняете пользователя, подключаетесь, очищаются различные таблички, firms.dat не очищается, фронт получает список фирм, не находит в нём новых и не вызывает OnFirm.
Как-то не совсем так. На боевом сервере (СБЕР 8.3.2.4) при начале торговой сессии каждый раз приходит 2000+ коллбэков OnFirm, файл firms.dat никак не очищается, ни скриптом, ни вручную. Значит либо терминал этот файл сам чистит (тогда в каких случаях?), либо процедура не совсем такая, как вы описали.
 
Здравствуйте, Сергей.

Выше обсуждается смена пользователя в середине торговой сессии, сопровождаемая вызовом callback-функции OnCleanUp().

Вы даёте новые вводные и рассматриваете случай смены торговой сессии и первого подключения в новый торговый день. При смене торговой сессии список фирм очищается рабочим местом и загружается по новой при первом подключении.
Страницы: 1
Читают тему (гостей: 1)
Наверх