Вывод по DDE из окна Состояние счета

Страницы: 1
RSS
Вывод по DDE из окна Состояние счета, Вывод по DDE в Excel из окна Состояние счета - ошибки
 
Есть 2 окна "Состояние счета": одно - ФОРТС, другое - акции. Вывожу по DDE в Excel из них данные. Выдается ошибка (https://yadi.sk/i/dNb14e8MQZ6j5w).
Предполагаю, что это из-за одинакового названия таблиц "Позиции", т.к. если выводить только из одного окна - все в норме.
Подскажите, может можно переименовать таблицу, или по другому справить данную ситуацию.
 
Модераторам: подскажите, может вопрос не туда написал, или в личку надо, или не понятно что-то? Как на форуме получить ответ?
 
Цитата
Игорь написал:
Есть 2 окна "Состояние счета": одно - ФОРТС, другое - акции. Вывожу по DDE в Excel из них данные. Выдается ошибка ( https://yadi.sk/i/dNb14e8MQZ6j5w ).
Предполагаю, что это из-за одинакового названия таблиц "Позиции", т.к. если выводить только из одного окна - все в норме.
Подскажите, может можно переименовать таблицу, или по другому справить данную ситуацию.
Добрый день.
Нужно больше информации.
Версия Excel, версия QUIK, выводите в разные книги excel или в одну, попробуйте переименовать таблицу, например Позиции 2 и проверьте результат.
 
Цитата
Egor Zaytsev написал:

Добрый день.
Нужно больше информации.
Версия Excel, версия QUIK, выводите в разные книги excel или в одну, попробуйте переименовать таблицу, например Позиции 2 и проверьте результат.
Ясно. Предоставляю:
Версия Excel - 2016, версия QUIK - 8.3.1.38.
Вывожу в одну книгу, на разные листы (на один было раньше).
Таблицу Позиции я бы переименовал, но не найду где. В самой таблице она не редактируется (https://yadi.sk/i/obxmNpDVKM_PZA).
И сейчас даже одна таблица выдает ошибку при запуске Quik'а. Ту же, что выше на скрине давал.
По логике - ошибка в настройках таблицы. Хотя что там можно такого изменить было?
 
Цитата
Игорь написал:
Таблицу Позиции я бы переименовал, но не найду где.
Это бессмысленно, через дде имя таблицы вообще не передается. Передается то, что книга и лист написано.
 
Цитата
Anton написал:

Это бессмысленно, через дде имя таблицы вообще не передается. Передается то, что книга и лист написано.
Логично. Но законы Мура обычно работают против логики, т.ч. всякое может быть.
Попробовал обе таблицы "Состояние счета" удалить и создать вручную по новой. Не помогло. Без них вообще вывод по DDE идет, как их включаешь на вывод (хоть одну, хоть обе) - ошибки и вывод останавливается.
 
Цитата
Игорь написал:
законы Мура
Думал-думал, при чем тут автомат Мура или рост размера памяти. Потом, кажется, понял, что речь о Мерфи. Это лирика, впрочем. Насколько понимаю, другие таблицы, с которыми все хорошо, в ту же рабочую книгу идут? Я б с пристрастием поглядел, что там в таблице имеется, должно быть что-то такое, что эксель в ступор вгоняет. В других нет, а вот в этих есть. Что бы это могло быть. А если ей формальные заголовки поставить, то же ли самое будет?
 
Цитата
Anton написал:

Думал-думал, при чем тут автомат Мура или рост размера памяти. Потом, кажется, понял, что речь о Мерфи. Это лирика, впрочем. Насколько понимаю, другие таблицы, с которыми все хорошо, в ту же рабочую книгу идут? Я б с пристрастием поглядел, что там в таблице имеется, должно быть что-то такое, что эксель в ступор вгоняет. В других нет, а вот в этих есть. Что бы это могло быть. А если ей формальные заголовки поставить, то же ли самое будет?
Конечно же Мерфи, извиняюсь, клинануло что-то. :oops:
Да, все идет в одну книгу. За идею спасибо, проанализирую. Хотя итак видно, что таблица "Состояние счета" не такая, как другие, двумерная, что ли. Попробую настройками упростить ее.
 
Цитата
Игорь написал:
Цитата
Anton написал:

Думал-думал, при чем тут автомат Мура или рост размера памяти. Потом, кажется, понял, что речь о Мерфи. Это лирика, впрочем. Насколько понимаю, другие таблицы, с которыми все хорошо, в ту же рабочую книгу идут? Я б с пристрастием поглядел, что там в таблице имеется, должно быть что-то такое, что эксель в ступор вгоняет. В других нет, а вот в этих есть. Что бы это могло быть. А если ей формальные заголовки поставить, то же ли самое будет?
Конечно же Мерфи, извиняюсь, клинануло что-то.  
Да, все идет в одну книгу. За идею спасибо, проанализирую. Хотя итак видно, что таблица "Состояние счета" не такая, как другие, двумерная, что ли. Попробую настройками упростить ее.
Добрый день.

Проверили. У нас работает корректно. Сообщите рекомендации от пользователей Вам помогли?  
 
Цитата
Egor Zaytsev написал:

Проверили. У нас работает корректно. Сообщите рекомендации от пользователей Вам помогли?  
Рекомендации не помогли. Ставил заголовки формальные - то же самое.
От одной таблицы (ФОРТС) отказался совсем - заменил данные из других. Осталась таблица "Состояние счета" со счетом фонды. Ошибка остается.
Отключил вывод по DDE из таблицы "Состояние счета", создал новое окно, в нем создал новую таблицу "Состояние счета", в которой ничего не меняя установил только нужный счет и поставил значение "На дату" в Т2. Из нее сделал вывод в ту же книгу Excel, в тот же лист, что и раньше. Перезапустил Quik - при запуске сразу появляется ошибка: "DDE сервер 'excel'. Документ 'F:\Cloud@Mail.Ru\Файлы\Финансы\Отчеты\____.xlsm[Quik-old]'. Таблица 'Позиции'. Произошла ошибка: Ошибка при передаче таблицы, вывод приостановлен. Сервер отказался выполнять обмен данными: Размер либо формат данных неверен".
Осталось отдельный Excel-файл создать новый, чтобы проверить до конца. Больше нет мыслей. Но другие таблицы же выводятся. Да и эта выводится, когда вручную ее запустишь.
 
Цитата
Игорь написал:
Перезапустил Quik - при запуске сразу появляется ошибка
Цитата
Игорь написал:
Да и эта выводится, когда вручную ее запустишь.
Вот это очень важный, по-моему, довесочек. Выходит, квик стартует дде перед тем, как таблицу заполнил. Крайне было б любопытно взглянуть, что ж все-таки приезжает в эксель в первом случае, только софтину надо писать для этого.
 
Цитата
Anton написал:

Вот это очень важный, по-моему, довесочек. Выходит, квик стартует дде перед тем, как таблицу заполнил. Крайне было б любопытно взглянуть, что ж все-таки приезжает в эксель в первом случае, только софтину надо писать для этого.
Интересное предположение. Софтину написать я, конечно же, не смогу, но попробовал очистить лист, перед закрытием Excel, затем при запуске, после очередной ошибки посмотрел этот лист - естественно там ничего не было :what: .
 
Цитата
Игорь написал:
попробовал очистить лист, перед закрытием Excel, затем при запуске, после очередной ошибки посмотрел этот лист - естественно там ничего не было
Неудивительно, эксель сразу же отклонил приехавшие данные, вставлять было нечего.

Цитата
Игорь написал:
Софтину написать я, конечно же, не смогу
А я смогу, и тут как раз тот случай, когда любопытство перевесило лень. В общем, вот софтинка примитивнейшая, что с ней делать:
1. Убедиться, что эксель НЕ ЗАПУЩЕН.
2. Запустить софтинку, появится черное консольное окошко с надписью сервер работает.
3. Запустить экспорт из квика в эксель (софтинка притворяется экселем).
4. Смотреть в консольном окошке, что приехало из квика, делать скриншоты по желанию.
5. Остановить экспорт из квика.
6. Закрыть консоль.

Для начала я не парсил сами данные, проверяем только тип данных и диапазон приехавших ячеек, если тут все ок будет, допишем еще проверок. Интересно именно сравнить, что приезжает в нормальном случае и в случае ошибки.

Дисклеймер: софтинка ПРИМИТИВНАЯ, может вызывать в некоторых случаях побочные эффекты, включая зависание квика. Так что с осторожностью.
 
Правильная ссылка вот, в первом случае я что-то нажал и все исчезло )
 
Добрый день.

Игорь, если не удастся разобраться, то создайте в папке с программой Quik файл с именем quik_dde.log
После перезапуска Quik, туда начнется записываться логи  экспорта.
Воспроизведите проблему, после чего пришлите полученный лога нам на ящик quiksupport@arqatech.com с указанием ссылки на эту ветку форума. А также архив рабочего места QUIK.
 
Цитата
Anton написал:
В общем,  вот софтинка примитивнейшая , что с ней делать:1. Убедиться, что эксель НЕ ЗАПУЩЕН.2. Запустить софтинку, появится черное консольное окошко с надписью сервер работает.3. Запустить экспорт из квика в эксель (софтинка притворяется экселем).4. Смотреть в консольном окошке, что приехало из квика, делать скриншоты по желанию.5. Остановить экспорт из квика.6. Закрыть консоль.
Скачал, сделал как написано.
1. Excel закрыт, экспорт по DDE из всех таблиц остановлен.
2. Запустил - появилось окошко с надписью.
3. Запускаю экспорт - и вот тут какая-то недоработка, видимо. Похоже, что притворяется она не очень. Запускается Excel (пробовал убрать название рабочей книги, запускается пустая новая).
4. Соответственно в окошке - пусто.
 
Цитата
Игорь написал:
Запускается Excel
Может галку "запускать приложение DDE сервера автоматически" снять?
 
Цитата
Anton написал:
Может галку "запускать приложение DDE сервера автоматически" снять?
Точно. Снял.
Вот результат: https://yadi.sk/i/IyR4ZMzjwwNf2A
 
Цитата
Игорь написал:
Вот результат
И ошибки экспорта нет, верно я понял? Квик несколько раз присылает одно и то же, он подключен к серверу в этот момент? В остальном на этом уровне все ок, надо дописывать парсинг данных и смотреть, что там внутри ячеек.
 
Цитата
надо дописывать парсинг данных и смотреть
Вариант с парсингом. Просто показывает все полученные ячейки и их типы в том виде, в каком они приехали.
 
Цитата
Игорь написал:
3. Запускаю экспорт - и вот тут какая-то недоработка, видимо. Похоже, что притворяется она не очень. Запускается Excel (пробовал убрать название рабочей книги, запускается пустая новая).
По некотором размышлении это действительно недоработка, но не моя, а арки. Как видим, квик безусловно стартует заданное приложение перед началом дде-обмена, а это неправильно, правильно будет сначала попробовать подключиться как есть, и только если ответа нет и установлена галка автозапуска, тогда запустить сервер и пробовать подключиться еще раз.
 
Игорь, и еще одно предположение созрело, где может быть косяк. Попробуйте снять галку "новый поток на отдельный DDE-сервер" в основные настройки - экспорт данных, будет ли ошибка повторяться?
 
Цитата
Anton написал:
Попробуйте снять галку "новый поток на отдельный DDE-сервер" в основные настройки - экспорт данных, будет ли ошибка повторяться?
Тут, как раз, галка не стоит.
 
Цитата
Anton написал:
По некотором размышлении это действительно недоработка, но не моя, а арки. Как видим, квик безусловно стартует заданное приложение перед началом дде-обмена, а это неправильно, правильно будет сначала попробовать подключиться как есть, и только если ответа нет и установлена галка автозапуска, тогда запустить сервер и пробовать подключиться еще раз.
Кажется стало проясняться. Запустил Quik со снятыми галками "Запускать ... автоматически", в сообщениях вышли в ошибку (как указано выше) все мои 5 таблиц. Файл Excel не запустился, соответственно. Поставил во всех таблицах галку "Запускать ... автоматически", но снял "Вывод после создания", запуск прошел без ошибок, Excel не запустился. Я нажал Ctrl+Shift+L, запустился Excel без ошибок, вывод из всех таблиц идет.
Впечатление, что вывод из таблиц начинает идти раньше, чем загрузится Excel.
В принципе, меня устраивает и такой вариант, но к QUIK clients support просьба проверить. Файл Excel у меня около 1 Мб, в нем работают свои макросы в 5 модулях. Может файл тяжелый слишком?
 
Цитата
Игорь написал:
Впечатление, что вывод из таблиц начинает идти раньше, чем загрузится Excel.
Тогда была бы ошибка "не запущен эксель или и т.д.". Именно что инициация соединения проходит успешно, окно экселя уже существует и документ в него загружен, иначе он бы не ответил на запрос. Вот эта новая информация

Цитата
Файл Excel у меня около 1 Мб, в нем работают свои макросы в 5 модулях. Может файл тяжелый слишком?
еще укрепила мое подозрение, которое я теперь озвучу. Итак, вопрос арке, при отправке poke что делает квик, если получено негативное DDEACK? По идее, квик должен сначала проверить флаг fBusy, и если он установлен, повторить попытку экспорта того же самого блока данных, а если не установлен - тогда уже выпадать в ошибку "сервер отказался и т.д.". Вот у меня подозрение, что флаг не проверяется, соответственно эксель отвечает "занят" и квик сразу фейлит.

Все ж попробуйте в мой сервер вывести с парсером. Скрин уже, видимо, не стоит шарить, бо информация по счету вся будет видна, но там можно и так посмотреть, что все блоки данных идут последовательно, а не вперемешку. Если все же выводятся кашеобразно, это еще плюс один довод в пользу косяка с busy. Только имейте в виду, что сервер простенький и busy не отвечает, что может при неудачном раскладе подвесить квик.
 
Цитата
Anton написал:
при отправке poke что делает квик, если получено негативное DDEACK?
Вопрос снимается, сам проверил. При получении busy квик немедленно рвет соединение и вываливается в ошибку "сервер занят". Что не очень здорово, конечно, но, с другой стороны, полностью отвергает мое предположение, т.к. в рассматриваемом случае ошибка другая.

Игорь, у меня идеи на данный момент иссякли, остался один неясный вопрос. Вчерашний скрин был сделан при подключенном квике или при отключенном? Если при подключенном (и состояние счета менялось), то многократный вывод одних и тех же строк объясняется их изменением в квике, это нормально. Если же при отключенном, то дергать данные могли только ваши макросы, и тогда можно попробовать создать книгу без макросов и поэкспортировать в нее, будет ли ошибка тогда появляться.
 
Цитата
Anton написал:
Вчерашний скрин был сделан при подключенном квике или при отключенном?
Quik был подключен, Excel выгружен. Но таблица была по фонде, которая после 19 мск не работает уже, соответственно данные в ней не менялись.
И да, ошибка появляется при загрузке Quik, еще до соединения с сервером. Она самая первая в сообщениях идет.
 
Цитата
Игорь написал:
соответственно данные в ней не менялись
Вот это странно, в таком раскладе квик должен был выплюнуть имеющиеся строки и на этом успокоиться. Выше я малость бред написал, прошу прощения, думал об одном, писал о другом, касаемо вот этих повторов строк надо думать, как и почему квик их обновлял, раз таблица не менялась. Но и вторая "полумысль" насчет макросов тоже стоит проверки (книгой без них). Возможно, они как-то мешают выводу на начальном этапе.
 
Цитата
Anton написал:
касаемо вот этих повторов строк надо думать
Можно не думать, обновляет периодически, проверил. Остается вариант без макросов затестить, больше пока ничего нового в голову не лезет.
 
Цитата
Anton написал:
Остается вариант без макросов затестить, больше пока ничего нового в голову не лезет.
Спасибо, Антон за заботу :wink:  Позже проверю обязательно и отпишусь.
 
Цитата
Anton написал:
Остается вариант без макросов затестить
Убрал название из "Рабочей книги" совсем. При запуске открывается новый Excel файл, но перед ним - ошибка и вывод останавливается. Все таки рано передаются данные в файл, он не открылся еще. Еще раз: при автозапуске выходит ошибка, потом файл открывается уже. Если запускать вывод вручную - ошибки нет.
 
Цитата
Игорь написал:
при автозапуске выходит ошибка, потом файл открывается уже
Тогда похоже на то, что квик рановано начинает выводить. По итогу резюмируем, что мы тут разрыли:
1. Квик стартует сервер безусловно при установленной галке автозапуска. Обычно программы это умеют обрабатывать и действуют так: нас запустили с файлом, мы ищем, нет ли другого экземпляра с тем же файлом, если он есть - активируем этот другой экземпляр и сами тихонько завершаемся. По идее, конкретно эту ошибку оно вызывать не должно, хотя поведение несколько нестандартное, стандартно сначала пытаться начать экспорт, потом уже при неудаче запускать сервер.
2. Есть ли после запуска сервера вызов WaitForInputIdle? Это только в арке могут посмотреть.
3. Некоторые программы (включая эксель) регистрируют в реестре пожелание передавать им аргументы через DDE (а не через командную строку, как обычно), поэтому когда винда стартует эксель, она сама к нему коннектится и передает имя файла для открытия. Не возникает ли здесь гонка с квиком?
 
Egor Zaytsev,  Игорь, смотрите, что приезжает из квика



Где заголовки таблицы (а они настроены выводить)? Что за диапазоны негативные? В общем, косяк очевидный.

К автозапуску это отношения не имеет (вопреки всем предположениям выше), это исключительно действие галки "вывод после создания". Как воспроизвести: создать таблицу состояние счета, настроить вывод в эксель с любыми книгой/листом, поставить галку "вывод после создания", закрыть квик. Запустить сервер из поста выше, запустить квик. После старта дде вот это и приедет. Ну или можете своими средствами как-то отмониторить, что едет, если есть такие средства. Кстати, в quik_dde.log все хорошо-распрекрасно, туда даже факт ошибки не попадает, так что я б на него не надеялся.
 
Цитата
Anton написал:
создать таблицу состояние счета, настроить вывод в эксель с любыми книгой/листом, поставить галку "вывод после создания", закрыть квик. Запустить  сервер из поста выше , запустить квик.
Создал отдельную вкладку, в ней таблицу "Состояние счета", настроил вывод в новую книгу, поставил галку "Вывод после создания", закрыл квик.
1. Запустил сервер.
2. Запустил квик: https://yadi.sk/i/tVxAK4OWad_ayA2
3. Прошло соединение: https://yadi.sk/i/lq9CxCQdwYkFWA
4. В Excel вывод есть, в сервере - тишина: https://yadi.sk/i/zZMPVXcv7Wq_gQ
Где-то накосячил?
 
Цитата
Игорь написал:
В Excel вывод есть
Не надо эксель запускать, только фейкосервер.
 
Давайте пошагово распишу, а то как-то процедура совсем не та. Во-первых, подключаться к серверу не нужно, все есть в файлах, если квик уже был подключен до этого хоть раз. Далее
1. Запустили квик.
2. Создали таблицу "состояние счета". В нее загрузится из файлов что есть, нам не надо тут точности, лишь бы было что-то.
3. Открыли настройку экспорта дде. Поставили сервер excel, книга test, лист test, запускать автоматически сняли, вывод после создания поставили.
4. Вот в таком виде закрыли квик.
5. Запустили фейкосервер.
6. Запустили квик, он загрузился и стартанул дде из нашей таблицы согласно галке.
7. Смотрим в сервере, что приехало.
8. Возвращаем квик в рабочий вид, закрываем.
9. Закрываем сервер.
 
Цитата
Anton написал:
3. Открыли настройку экспорта дде. Поставили сервер excel, книга test, лист test, запускать автоматически сняли, вывод после создания поставили.4. Вот в таком виде закрыли квик.
Между 3 и 4 закрыли окно настроек дде, а то ж не сохранится.
 
Цитата
Anton написал:
Не надо эксель запускать, только фейкосервер.
Понял. Я поставил галку "Запускать ... автоматически". Думал по другому не стартует передача.
1. Убрал галку.
2. Запустил сервер.
3. Запустил квик: https://yadi.sk/i/HZqE02HUIMgeLQ
4. Прошло соединение. Передача идет циклически: https://yadi.sk/i/d2HXKCFH1CoBmg
Ошибок не было совсем.
 
Цитата
Игорь написал:
Ошибок не было совсем.
А их и не будет, сервер примет любую чепуху, в отличие от настоящего экселя, ему главное показать ее. Второй скрин - это как оно должно быть, это когда уже таблица создалась и заполнилась, едут ячейки со значениями. А вот первый - это как раз на чем настоящий эксель отказывается продолжать, вот этот диапазон R2C1-R2C0 "задом наперед". И должна была приехать первая строка с заголовками столбцов, а ее тоже нет. Очевидно, таблица еще не создана, а квик уже стартанул экспорт. Дело раскрыто, осталось арке поправить.
 
Поставил галку "Запускать ... автоматически", вышел из квика.
Запускаю квик, загружается Excel (по ощущению, даже раньше квика на мгновение).
Появляется окно квика (без ввода пароля), а ошибка уже в окне сообщений - самое ПЕРВОЕ сообщение.
 
Цитата
Игорь написал:
Запускаю квик, загружается Excel
Да, квик его стартует каждый раз, когда галка установлена, причем запуск экселя захардкодили, попробуйте другое имя сервера ввести - галка станет неактивной, не умеет квик другие приложения запускать. Но это уже не столь критично, хотя я б по-другому сделал. Можете еще без автозапуска в мой сервер вручную запустить (без галки "при создании") - увидите, как должен был выглядеть первый скрин без ошибки, с заголовками столбцов и нормальным диапазоном. Ну и так, если интересно, можете галками поиграть и посмотреть, как это на поток данных влияет.
 
Спасибо еще раз, Антон. Подождем пояснений от Egor Zaytsev,
 
Цитата
Игорь написал:
Спасибо еще раз, Антон. Подождем пояснений от Egor Zaytsev,
Здравствуйте!

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