Перестал подтягиваться Клиентский портфель с обновлением 7.9

Страницы: 1
RSS
Перестал подтягиваться Клиентский портфель с обновлением 7.9
 
Добрый день!

После обновления терминала перестал работать кусок кода, в котором тянется "Стоимость портфеля" из Клиентского портфеля (all_limit = 0 всегда).
Перепробовал разные вариант - результата ноль. В предыдущих версия работает корректно.

FUNC get_tx_new_client(all_client)

client_pre = GET_VALUE(all_client, "CLIENT_CODE")
client_port = GET_CLIENT_MARGINAL_PORTFOLIO_INFO("**********", client_pre)
all_limit = APPLY_SCALE(GET_VALUE(client_port, "ASSETS"),4)
.....
 
А сама таблица открыта?
 
Илья Белый,

Версия терминала тут не причем.
Указанный функции прекрасно работают.
Проверьте в отладчике какие значения попадают в функцию и есть ли записи по данной фирме и коду клиента в терминале.
Скорее всего Вы неверно указали фирму, в Вашем примере это "**********".
раз Вы ее скрыли за звездочками, то думаете что ее открывать опасно, но ведь это фирма брокера а не торговый счет, в связи с чем опасения не имеют смысла.
Возможно Вы указали торговый счет вместо фирмы?
 
Sergey Gorokhov,

Может быть я непонятно описал... Скрипт работал себе какое-то длительное время, вышло обновление, я обновил один терминал до версии 7.9.1.1 и в этом терминале перестали работать все скрипты, в которых тянется Стоимость портфеля.
В терминале 7.4.0.79 этот же код, с этими же настройками wnd работает. А в 7.9 - нет.

Таблицы открыты. Данные по кодам клиентов есть. Вместо звездочек Фирма т.е. все правильно (повторюсь - до обновления все работало (и так на нескольких машинах))
 
Илья Белый,

Может быть я непонятно написал...
Указанные функции прекрасно работают. Проблема не воспроизводится.
Значит ошибка в Вашем коде.
Приведите полный код.
 
Sergey Gorokhov,

Например, такой код работает по-разному... на 7.4 я вижу код клиента и сдс, а на 7.9 я вижу код клиента и НОЛЬ.
Скажите, пожалуйста, в чем причина? Пробовал удалять скрип и заново загружать.
Код
PORTFOLIO_EX тест;
DESCRIPTION тест;
CLIENTS_LIST ALL_CLIENTS;
FIRMS_LIST ALL_FIRMS;

USE_CASE_SENSITIVE_CONSTANTS

PROGRAM

client_pre = " "

DELETE_ALL_ITEMS()

n = GET_NUMBER_OF("MONEY_LIMITS")
  
FOR i FROM 1 to n 

all_client = GET_ITEM ("MONEY_LIMITS", i)

   client_pre = GET_VALUE(all_client, "CLIENT_CODE")
   client_port = GET_CLIENT_MARGINAL_PORTFOLIO_INFO("ФИРМА", client_pre) 
   all_limit = APPLY_SCALE(GET_VALUE(client_port, "ASSETS"),4)

show_data()

end for

FUNC show_data()
   
      OUTPUT=CREATE_MAP()
      OUTPUT=SET_VALUE(OUTPUT,"client_pre" , SUBSTR(client_pre,0,5))
      OUTPUT=SET_VALUE(OUTPUT,"all_limit" , all_limit)

      ADD_ITEM(1,OUTPUT)
end func

END_PROGRAM
 
PARAMETER client_pre;
PARAMETER_TITLE Клиент;
PARAMETER_DESCRIPTION Клиент;
PARAMETER_TYPE STRING(20);
END

PARAMETER all_limit;
PARAMETER_TITLE СДС;
PARAMETER_DESCRIPTION Стоимость портфеля;
PARAMETER_TYPE NUMERIC(10,2);
END
 
Параметр "фирма" замените только на нужный.
 
Илья Белый,
Для начала, замените функцию GET_CLIENT_MARGINAL_PORTFOLIO_INFO на GET_CLIENT_MARGINAL_PORTFOLIO_INFO_EX
т.к. функция GET_CLIENT_MARGINAL_PORTFOLIO_INFO выводит данные только для лимита Т0, а в портфеле, могут быть данные и по другим видам, например Т2.
Скорее всего проблема именно в этом, и Вам нужно смотреть лимит Т2, а не Т0. Это следует отдельно проверить, просто посмотрев визуально, какой вид лимита указан в таблице Клиентский портфель.
К слову, вид лимита можно брать из той же таблицы лимитов по деньгам:
LIMIT_KIND = GET_VALUE(all_client, "LIMIT_KIND")

Далее, фирму берите автоматом из лимитов по деньгам. Простите конечно, но у нас вызывает сомнение то что фирма в коде соответствует фирме в таблице.
Для этого добавьте строку:
FIRMID = GET_VALUE(all_client, "FIRMID")

В итоге строка должна иметь вид:
client_port = GET_CLIENT_MARGINAL_PORTFOLIO_INFO_EX(FIRMID, client_pre, LIMIT_KIND)
 
Sergey Gorokhov,

В моем случае необходимо брать именно Т0 из Клиентского портфеля. На счет ошибок по фирме - не сомневайтесь, все правильно, ведь на прошлой версии квика код работает корректно. Но я сделал как Вы написали...
В итоге стали тянуться данные по Т2 (это с Фондового рынка), а данные по Т0 (это валютный рынок в моем случае) так все и равны нулю. Мне нужны именно Т0.

В клиентском портфеле вид лимита точно Т0 (тип клиента МП). Нужные таблицы открыты (хотя это и не обязательно насколько я знаю).

Мой код у вас работает с Т0?
Код
        client_pre = GET_VALUE(all_client, "CLIENT_CODE")
   FIRMID = GET_VALUE(all_client, "FIRMID") 
   LIMIT_KIND = GET_VALUE(all_client, "LIMIT_KIND") 
   client_port = GET_CLIENT_MARGINAL_PORTFOLIO_INFO_EX(FIRMID, client_pre, LIMIT_KIND)
   all_limit = APPLY_SCALE(GET_VALUE(client_port, "ASSETS"),4)
 
Цитата
Илья Белый написал:
Мой код у вас работает с Т0?
Да, присланный код у нас прекрасно работает. Без единого нарекания. Он выводит вообще все что есть.
И у Вас должен выводить вообще все что есть.
А раз не выводит делаем вывод что выводить нечего, т.е. в таблице Клиентский портфель, в колонке Стоимость портфеля у Вас цифра ноль.
Если не так, присылайте на quiksupport@arqatech.com архив всей папки с терминалом QUIK без ключей доступа.
В письме укажите ссылку на эту ветку форума.
 
Sergey Gorokhov,

подскажите, что можно удалить из папки? т.к. сейчас она весит 500+ мб.
 
Илья Белый,
Нам нужны все файлы, кроме папок и файлов справок (*.chm) и ключей доступа.
Файлы можно запаковать архиватором, тогда они будут меньше весить.
Паковать следует при закрытом терминале.
Страницы: 1
Читают тему
Наверх