Вывод по DDE из окна Состояние счета, Вывод по DDE в Excel из окна Состояние счета - ошибки
Пользователь
Сообщений: Регистрация: 20.03.2020
30.03.2020 12:01:20
Есть 2 окна "Состояние счета": одно - ФОРТС, другое - акции. Вывожу по DDE в Excel из них данные. Выдается ошибка (). Предполагаю, что это из-за одинакового названия таблиц "Позиции", т.к. если выводить только из одного окна - все в норме. Подскажите, может можно переименовать таблицу, или по другому справить данную ситуацию.
Пользователь
Сообщений: Регистрация: 20.03.2020
31.03.2020 17:40:22
Модераторам: подскажите, может вопрос не туда написал, или в личку надо, или не понятно что-то? Как на форуме получить ответ?
QUIK clients support
Сообщений: Регистрация: 27.01.2015
01.04.2020 08:48:09
Цитата
Игорь написал: Есть 2 окна "Состояние счета": одно - ФОРТС, другое - акции. Вывожу по DDE в Excel из них данные. Выдается ошибка ( ). Предполагаю, что это из-за одинакового названия таблиц "Позиции", т.к. если выводить только из одного окна - все в норме. Подскажите, может можно переименовать таблицу, или по другому справить данную ситуацию.
Добрый день. Нужно больше информации. Версия Excel, версия QUIK, выводите в разные книги excel или в одну, попробуйте переименовать таблицу, например Позиции 2 и проверьте результат.
Добрый день. Нужно больше информации. Версия Excel, версия QUIK, выводите в разные книги excel или в одну, попробуйте переименовать таблицу, например Позиции 2 и проверьте результат.
Ясно. Предоставляю: Версия Excel - 2016, версия QUIK - 8.3.1.38. Вывожу в одну книгу, на разные листы (на один было раньше). Таблицу Позиции я бы переименовал, но не найду где. В самой таблице она не редактируется (). И сейчас даже одна таблица выдает ошибку при запуске Quik'а. Ту же, что выше на скрине давал. По логике - ошибка в настройках таблицы. Хотя что там можно такого изменить было?
Пользователь
Сообщений: Регистрация: 21.08.2015
01.04.2020 18:37:27
Цитата
Игорь написал: Таблицу Позиции я бы переименовал, но не найду где.
Это бессмысленно, через дде имя таблицы вообще не передается. Передается то, что книга и лист написано.
Это бессмысленно, через дде имя таблицы вообще не передается. Передается то, что книга и лист написано.
Логично. Но законы Мура обычно работают против логики, т.ч. всякое может быть. Попробовал обе таблицы "Состояние счета" удалить и создать вручную по новой. Не помогло. Без них вообще вывод по DDE идет, как их включаешь на вывод (хоть одну, хоть обе) - ошибки и вывод останавливается.
Думал-думал, при чем тут автомат Мура или рост размера памяти. Потом, кажется, понял, что речь о Мерфи. Это лирика, впрочем. Насколько понимаю, другие таблицы, с которыми все хорошо, в ту же рабочую книгу идут? Я б с пристрастием поглядел, что там в таблице имеется, должно быть что-то такое, что эксель в ступор вгоняет. В других нет, а вот в этих есть. Что бы это могло быть. А если ей формальные заголовки поставить, то же ли самое будет?
Думал-думал, при чем тут автомат Мура или рост размера памяти. Потом, кажется, понял, что речь о Мерфи. Это лирика, впрочем. Насколько понимаю, другие таблицы, с которыми все хорошо, в ту же рабочую книгу идут? Я б с пристрастием поглядел, что там в таблице имеется, должно быть что-то такое, что эксель в ступор вгоняет. В других нет, а вот в этих есть. Что бы это могло быть. А если ей формальные заголовки поставить, то же ли самое будет?
Конечно же Мерфи, извиняюсь, клинануло что-то. Да, все идет в одну книгу. За идею спасибо, проанализирую. Хотя итак видно, что таблица "Состояние счета" не такая, как другие, двумерная, что ли. Попробую настройками упростить ее.
Думал-думал, при чем тут автомат Мура или рост размера памяти. Потом, кажется, понял, что речь о Мерфи. Это лирика, впрочем. Насколько понимаю, другие таблицы, с которыми все хорошо, в ту же рабочую книгу идут? Я б с пристрастием поглядел, что там в таблице имеется, должно быть что-то такое, что эксель в ступор вгоняет. В других нет, а вот в этих есть. Что бы это могло быть. А если ей формальные заголовки поставить, то же ли самое будет?
Конечно же Мерфи, извиняюсь, клинануло что-то. Да, все идет в одну книгу. За идею спасибо, проанализирую. Хотя итак видно, что таблица "Состояние счета" не такая, как другие, двумерная, что ли. Попробую настройками упростить ее.
Добрый день.
Проверили. У нас работает корректно. Сообщите рекомендации от пользователей Вам помогли?
Проверили. У нас работает корректно. Сообщите рекомендации от пользователей Вам помогли?
Рекомендации не помогли. Ставил заголовки формальные - то же самое. От одной таблицы (ФОРТС) отказался совсем - заменил данные из других. Осталась таблица "Состояние счета" со счетом фонды. Ошибка остается. Отключил вывод по DDE из таблицы "Состояние счета", создал новое окно, в нем создал новую таблицу "Состояние счета", в которой ничего не меняя установил только нужный счет и поставил значение "На дату" в Т2. Из нее сделал вывод в ту же книгу Excel, в тот же лист, что и раньше. Перезапустил Quik - при запуске сразу появляется ошибка: "DDE сервер 'excel'. Документ 'F:\\Файлы\Финансы\Отчеты\____.xlsm[Quik-old]'. Таблица 'Позиции'. Произошла ошибка: Ошибка при передаче таблицы, вывод приостановлен. Сервер отказался выполнять обмен данными: Размер либо формат данных неверен". Осталось отдельный Excel-файл создать новый, чтобы проверить до конца. Больше нет мыслей. Но другие таблицы же выводятся. Да и эта выводится, когда вручную ее запустишь.
Пользователь
Сообщений: Регистрация: 21.08.2015
06.04.2020 19:33:36
Цитата
Игорь написал: Перезапустил Quik - при запуске сразу появляется ошибка
Цитата
Игорь написал: Да и эта выводится, когда вручную ее запустишь.
Вот это очень важный, по-моему, довесочек. Выходит, квик стартует дде перед тем, как таблицу заполнил. Крайне было б любопытно взглянуть, что ж все-таки приезжает в эксель в первом случае, только софтину надо писать для этого.
Вот это очень важный, по-моему, довесочек. Выходит, квик стартует дде перед тем, как таблицу заполнил. Крайне было б любопытно взглянуть, что ж все-таки приезжает в эксель в первом случае, только софтину надо писать для этого.
Интересное предположение. Софтину написать я, конечно же, не смогу, но попробовал очистить лист, перед закрытием Excel, затем при запуске, после очередной ошибки посмотрел этот лист - естественно там ничего не было .
Пользователь
Сообщений: Регистрация: 21.08.2015
09.04.2020 01:44:59
Цитата
Игорь написал: попробовал очистить лист, перед закрытием Excel, затем при запуске, после очередной ошибки посмотрел этот лист - естественно там ничего не было
Неудивительно, эксель сразу же отклонил приехавшие данные, вставлять было нечего.
Цитата
Игорь написал: Софтину написать я, конечно же, не смогу
А я смогу, и тут как раз тот случай, когда любопытство перевесило лень. В общем, , что с ней делать: 1. Убедиться, что эксель НЕ ЗАПУЩЕН. 2. Запустить софтинку, появится черное консольное окошко с надписью сервер работает. 3. Запустить экспорт из квика в эксель (софтинка притворяется экселем). 4. Смотреть в консольном окошке, что приехало из квика, делать скриншоты по желанию. 5. Остановить экспорт из квика. 6. Закрыть консоль.
Для начала я не парсил сами данные, проверяем только тип данных и диапазон приехавших ячеек, если тут все ок будет, допишем еще проверок. Интересно именно сравнить, что приезжает в нормальном случае и в случае ошибки.
Дисклеймер: софтинка ПРИМИТИВНАЯ, может вызывать в некоторых случаях побочные эффекты, включая зависание квика. Так что с осторожностью.
Пользователь
Сообщений: Регистрация: 21.08.2015
09.04.2020 01:51:06
, в первом случае я что-то нажал и все исчезло )
QUIK clients support
Сообщений: Регистрация: 27.01.2015
09.04.2020 06:09:20
Добрый день.
Игорь, если не удастся разобраться, то создайте в папке с программой Quik файл с именем quik_dde.log После перезапуска Quik, туда начнется записываться логи экспорта. Воспроизведите проблему, после чего пришлите полученный лога нам на ящик с указанием ссылки на эту ветку форума. А также архив рабочего места QUIK.
Пользователь
Сообщений: Регистрация: 20.03.2020
09.04.2020 22:23:03
Цитата
Anton написал: В общем, вот софтинка примитивнейшая , что с ней делать:1. Убедиться, что эксель НЕ ЗАПУЩЕН.2. Запустить софтинку, появится черное консольное окошко с надписью сервер работает.3. Запустить экспорт из квика в эксель (софтинка притворяется экселем).4. Смотреть в консольном окошке, что приехало из квика, делать скриншоты по желанию.5. Остановить экспорт из квика.6. Закрыть консоль.
Скачал, сделал как написано. 1. Excel закрыт, экспорт по DDE из всех таблиц остановлен. 2. Запустил - появилось окошко с надписью. 3. Запускаю экспорт - и вот тут какая-то недоработка, видимо. Похоже, что притворяется она не очень. Запускается Excel (пробовал убрать название рабочей книги, запускается пустая новая). 4. Соответственно в окошке - пусто.
И ошибки экспорта нет, верно я понял? Квик несколько раз присылает одно и то же, он подключен к серверу в этот момент? В остальном на этом уровне все ок, надо дописывать парсинг данных и смотреть, что там внутри ячеек.
Пользователь
Сообщений: Регистрация: 21.08.2015
10.04.2020 01:10:23
Цитата
надо дописывать парсинг данных и смотреть
. Просто показывает все полученные ячейки и их типы в том виде, в каком они приехали.
Пользователь
Сообщений: Регистрация: 21.08.2015
10.04.2020 05:32:07
Цитата
Игорь написал: 3. Запускаю экспорт - и вот тут какая-то недоработка, видимо. Похоже, что притворяется она не очень. Запускается Excel (пробовал убрать название рабочей книги, запускается пустая новая).
По некотором размышлении это действительно недоработка, но не моя, а арки. Как видим, квик безусловно стартует заданное приложение перед началом дде-обмена, а это неправильно, правильно будет сначала попробовать подключиться как есть, и только если ответа нет и установлена галка автозапуска, тогда запустить сервер и пробовать подключиться еще раз.
Пользователь
Сообщений: Регистрация: 21.08.2015
10.04.2020 05:43:06
Игорь, и еще одно предположение созрело, где может быть косяк. Попробуйте снять галку "новый поток на отдельный DDE-сервер" в основные настройки - экспорт данных, будет ли ошибка повторяться?
Пользователь
Сообщений: Регистрация: 20.03.2020
10.04.2020 12:10:26
Цитата
Anton написал: Попробуйте снять галку "новый поток на отдельный DDE-сервер" в основные настройки - экспорт данных, будет ли ошибка повторяться?
Тут, как раз, галка не стоит.
Пользователь
Сообщений: Регистрация: 20.03.2020
10.04.2020 12:27:05
Цитата
Anton написал: По некотором размышлении это действительно недоработка, но не моя, а арки. Как видим, квик безусловно стартует заданное приложение перед началом дде-обмена, а это неправильно, правильно будет сначала попробовать подключиться как есть, и только если ответа нет и установлена галка автозапуска, тогда запустить сервер и пробовать подключиться еще раз.
Кажется стало проясняться. Запустил Quik со снятыми галками "Запускать ... автоматически", в сообщениях вышли в ошибку (как указано выше) все мои 5 таблиц. Файл Excel не запустился, соответственно. Поставил во всех таблицах галку "Запускать ... автоматически", но снял "Вывод после создания", запуск прошел без ошибок, Excel не запустился. Я нажал Ctrl+Shift+L, запустился Excel без ошибок, вывод из всех таблиц идет. Впечатление, что вывод из таблиц начинает идти раньше, чем загрузится Excel. В принципе, меня устраивает и такой вариант, но к QUIK clients support просьба проверить. Файл Excel у меня около 1 Мб, в нем работают свои макросы в 5 модулях. Может файл тяжелый слишком?
Пользователь
Сообщений: Регистрация: 21.08.2015
10.04.2020 12:54:51
Цитата
Игорь написал: Впечатление, что вывод из таблиц начинает идти раньше, чем загрузится Excel.
Тогда была бы ошибка "не запущен эксель или и т.д.". Именно что инициация соединения проходит успешно, окно экселя уже существует и документ в него загружен, иначе он бы не ответил на запрос. Вот эта новая информация
Цитата
Файл Excel у меня около 1 Мб, в нем работают свои макросы в 5 модулях. Может файл тяжелый слишком?
еще укрепила мое подозрение, которое я теперь озвучу. Итак, вопрос арке, при отправке poke что делает квик, если получено негативное DDEACK? По идее, квик должен сначала проверить флаг fBusy, и если он установлен, повторить попытку экспорта того же самого блока данных, а если не установлен - тогда уже выпадать в ошибку "сервер отказался и т.д.". Вот у меня подозрение, что флаг не проверяется, соответственно эксель отвечает "занят" и квик сразу фейлит.
Все ж попробуйте в мой сервер вывести с парсером. Скрин уже, видимо, не стоит шарить, бо информация по счету вся будет видна, но там можно и так посмотреть, что все блоки данных идут последовательно, а не вперемешку. Если все же выводятся кашеобразно, это еще плюс один довод в пользу косяка с busy. Только имейте в виду, что сервер простенький и busy не отвечает, что может при неудачном раскладе подвесить квик.
Пользователь
Сообщений: Регистрация: 21.08.2015
10.04.2020 14:01:52
Цитата
Anton написал: при отправке poke что делает квик, если получено негативное DDEACK?
Вопрос снимается, сам проверил. При получении busy квик немедленно рвет соединение и вываливается в ошибку "сервер занят". Что не очень здорово, конечно, но, с другой стороны, полностью отвергает мое предположение, т.к. в рассматриваемом случае ошибка другая.
Игорь, у меня идеи на данный момент иссякли, остался один неясный вопрос. Вчерашний скрин был сделан при подключенном квике или при отключенном? Если при подключенном (и состояние счета менялось), то многократный вывод одних и тех же строк объясняется их изменением в квике, это нормально. Если же при отключенном, то дергать данные могли только ваши макросы, и тогда можно попробовать создать книгу без макросов и поэкспортировать в нее, будет ли ошибка тогда появляться.
Пользователь
Сообщений: Регистрация: 20.03.2020
10.04.2020 14:32:20
Цитата
Anton написал: Вчерашний скрин был сделан при подключенном квике или при отключенном?
Quik был подключен, Excel выгружен. Но таблица была по фонде, которая после 19 мск не работает уже, соответственно данные в ней не менялись. И да, ошибка появляется при загрузке Quik, еще до соединения с сервером. Она самая первая в сообщениях идет.
Пользователь
Сообщений: Регистрация: 21.08.2015
10.04.2020 14:45:58
Цитата
Игорь написал: соответственно данные в ней не менялись
Вот это странно, в таком раскладе квик должен был выплюнуть имеющиеся строки и на этом успокоиться. Выше я малость бред написал, прошу прощения, думал об одном, писал о другом, касаемо вот этих повторов строк надо думать, как и почему квик их обновлял, раз таблица не менялась. Но и вторая "полумысль" насчет макросов тоже стоит проверки (книгой без них). Возможно, они как-то мешают выводу на начальном этапе.
Пользователь
Сообщений: Регистрация: 21.08.2015
10.04.2020 15:15:02
Цитата
Anton написал: касаемо вот этих повторов строк надо думать
Можно не думать, обновляет периодически, проверил. Остается вариант без макросов затестить, больше пока ничего нового в голову не лезет.
Пользователь
Сообщений: Регистрация: 20.03.2020
10.04.2020 16:06:44
Цитата
Anton написал: Остается вариант без макросов затестить, больше пока ничего нового в голову не лезет.
Спасибо, Антон за заботу Позже проверю обязательно и отпишусь.
Пользователь
Сообщений: Регистрация: 20.03.2020
10.04.2020 19:26:21
Цитата
Anton написал: Остается вариант без макросов затестить
Убрал название из "Рабочей книги" совсем. При запуске открывается новый Excel файл, но перед ним - ошибка и вывод останавливается. Все таки рано передаются данные в файл, он не открылся еще. Еще раз: при автозапуске выходит ошибка, потом файл открывается уже. Если запускать вывод вручную - ошибки нет.
Пользователь
Сообщений: Регистрация: 21.08.2015
10.04.2020 23:54:18
Цитата
Игорь написал: при автозапуске выходит ошибка, потом файл открывается уже
Тогда похоже на то, что квик рановано начинает выводить. По итогу резюмируем, что мы тут разрыли: 1. Квик стартует сервер безусловно при установленной галке автозапуска. Обычно программы это умеют обрабатывать и действуют так: нас запустили с файлом, мы ищем, нет ли другого экземпляра с тем же файлом, если он есть - активируем этот другой экземпляр и сами тихонько завершаемся. По идее, конкретно эту ошибку оно вызывать не должно, хотя поведение несколько нестандартное, стандартно сначала пытаться начать экспорт, потом уже при неудаче запускать сервер. 2. Есть ли после запуска сервера вызов WaitForInputIdle? Это только в арке могут посмотреть. 3. Некоторые программы (включая эксель) регистрируют в реестре пожелание передавать им аргументы через DDE (а не через командную строку, как обычно), поэтому когда винда стартует эксель, она сама к нему коннектится и передает имя файла для открытия. Не возникает ли здесь гонка с квиком?
Где заголовки таблицы (а они настроены выводить)? Что за диапазоны негативные? В общем, косяк очевидный.
К автозапуску это отношения не имеет (вопреки всем предположениям выше), это исключительно действие галки "вывод после создания". Как воспроизвести: создать таблицу состояние счета, настроить вывод в эксель с любыми книгой/листом, поставить галку "вывод после создания", закрыть квик. Запустить , запустить квик. После старта дде вот это и приедет. Ну или можете своими средствами как-то отмониторить, что едет, если есть такие средства. Кстати, в quik_dde.log все хорошо-распрекрасно, туда даже факт ошибки не попадает, так что я б на него не надеялся.
Пользователь
Сообщений: Регистрация: 20.03.2020
11.04.2020 14:41:12
Цитата
Anton написал: создать таблицу состояние счета, настроить вывод в эксель с любыми книгой/листом, поставить галку "вывод после создания", закрыть квик. Запустить сервер из поста выше , запустить квик.
Создал отдельную вкладку, в ней таблицу "Состояние счета", настроил вывод в новую книгу, поставил галку "Вывод после создания", закрыл квик. 1. Запустил сервер. 2. Запустил квик: 2 3. Прошло соединение: 4. В Excel вывод есть, в сервере - тишина: Где-то накосячил?
Давайте пошагово распишу, а то как-то процедура совсем не та. Во-первых, подключаться к серверу не нужно, все есть в файлах, если квик уже был подключен до этого хоть раз. Далее 1. Запустили квик. 2. Создали таблицу "состояние счета". В нее загрузится из файлов что есть, нам не надо тут точности, лишь бы было что-то. 3. Открыли настройку экспорта дде. Поставили сервер excel, книга test, лист test, запускать автоматически сняли, вывод после создания поставили. 4. Вот в таком виде закрыли квик. 5. Запустили фейкосервер. 6. Запустили квик, он загрузился и стартанул дде из нашей таблицы согласно галке. 7. Смотрим в сервере, что приехало. 8. Возвращаем квик в рабочий вид, закрываем. 9. Закрываем сервер.
Пользователь
Сообщений: Регистрация: 21.08.2015
11.04.2020 15:14:24
Цитата
Anton написал: 3. Открыли настройку экспорта дде. Поставили сервер excel, книга test, лист test, запускать автоматически сняли, вывод после создания поставили.4. Вот в таком виде закрыли квик.
Между 3 и 4 закрыли окно настроек дде, а то ж не сохранится.
Пользователь
Сообщений: Регистрация: 20.03.2020
11.04.2020 16:56:11
Цитата
Anton написал: Не надо эксель запускать, только фейкосервер.
Понял. Я поставил галку "Запускать ... автоматически". Думал по другому не стартует передача. 1. Убрал галку. 2. Запустил сервер. 3. Запустил квик: 4. Прошло соединение. Передача идет циклически: Ошибок не было совсем.
А их и не будет, сервер примет любую чепуху, в отличие от настоящего экселя, ему главное показать ее. Второй скрин - это как оно должно быть, это когда уже таблица создалась и заполнилась, едут ячейки со значениями. А вот первый - это как раз на чем настоящий эксель отказывается продолжать, вот этот диапазон R2C1-R2C0 "задом наперед". И должна была приехать первая строка с заголовками столбцов, а ее тоже нет. Очевидно, таблица еще не создана, а квик уже стартанул экспорт. Дело раскрыто, осталось арке поправить.
Пользователь
Сообщений: Регистрация: 20.03.2020
11.04.2020 17:32:54
Поставил галку "Запускать ... автоматически", вышел из квика. Запускаю квик, загружается Excel (по ощущению, даже раньше квика на мгновение). Появляется окно квика (без ввода пароля), а ошибка уже в окне сообщений - самое ПЕРВОЕ сообщение.
Да, квик его стартует каждый раз, когда галка установлена, причем запуск экселя захардкодили, попробуйте другое имя сервера ввести - галка станет неактивной, не умеет квик другие приложения запускать. Но это уже не столь критично, хотя я б по-другому сделал. Можете еще без автозапуска в мой сервер вручную запустить (без галки "при создании") - увидите, как должен был выглядеть первый скрин без ошибки, с заголовками столбцов и нормальным диапазоном. Ну и так, если интересно, можете галками поиграть и посмотреть, как это на поток данных влияет.
Пользователь
Сообщений: Регистрация: 20.03.2020
11.04.2020 18:17:35
Спасибо еще раз, Антон. Подождем пояснений от Egor Zaytsev,
QUIK clients support
Сообщений: Регистрация: 27.01.2015
14.04.2020 11:26:21
Цитата
Игорь написал: Спасибо еще раз, Антон. Подождем пояснений от ,
Здравствуйте!
Ваше письмо получено, проблема изучается. Постараемся в ближайшее время дать ответ.
QUIK clients support
Сообщений: Регистрация: 27.01.2015
29.04.2020 18:04:03
Добрый день,
В ходе разбора вашего обращения мы обнаружили ошибку в терминале при экспорте таблицы "Состояние счета" по DDE, которая проявляется при включенной опции "Вывод после создания". Ошибка будет исправлена в одной из очередных версий программы. Приносим извинения за причиненные неудобства.