﻿<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/style.css'?>
<?xml-stylesheet type='text/css' href='https://stocksharp.ru/css/bbeditor.css'?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="html">Экспорт произвольных таблиц. Вопрос касательно примера</title>
  <id>~/topic/1547/ehksport-proizvolnyh-tablits_-vopros-kasatelno-primera/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-27T16:14:45Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=1547" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/22468/</id>
    <title type="text">Можно: 1. В таблицы добавить столбец с названием инструмента 2. Сделать разные классы для разных таб...</title>
    <published>2012-11-13T12:26:08Z</published>
    <updated>2012-11-13T12:26:08Z</updated>
    <author>
      <name>Lunokhod</name>
      <uri>https://stocksharp.ru/users/27806/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;esper &lt;a href="https://stocksharp.ru/posts/m/22467/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Можно:&lt;br /&gt;1. В таблицы добавить столбец с названием инструмента&lt;br /&gt;2. Сделать разные классы для разных таблиц&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Собственно, в результате я и сделал по первому пункту : добавил два столбца, секьюрити код и код класса инструмента.&lt;br /&gt;Второй пункт, полагаю, реализовать будет весьма проблематично в моем случае, поскольку в QPL-файлы для каждой таблицы отличаются только таймфреймом и инструментом.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22467/</id>
    <title type="text">Можно: 1. В таблицы добавить столбец с названием инструмента 2. Сделать разные классы для разных таб...</title>
    <published>2012-11-13T11:15:23Z</published>
    <updated>2012-11-13T11:15:23Z</updated>
    <author>
      <name>esper</name>
      <uri>https://stocksharp.ru/users/5990/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Можно:&lt;br /&gt;1. В таблицы добавить столбец с названием инструмента&lt;br /&gt;2. Сделать разные классы для разных таблиц</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22466/</id>
    <title type="text">А как понять к какой таблице они относятся, если тип строк(QuikCandle) во всех случаях одинаков ? А ...</title>
    <published>2012-11-13T10:01:06Z</published>
    <updated>2012-11-13T10:03:46Z</updated>
    <author>
      <name>Lunokhod</name>
      <uri>https://stocksharp.ru/users/27806/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;esper &lt;a href="https://stocksharp.ru/posts/m/22460/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Lunokhod &lt;a href="https://stocksharp.ru/posts/m/22431/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;А как понять к какой таблице они относятся, если тип строк(QuikCandle) во всех случаях одинаков ?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;А каким образом вы экспортируете разные таблицы с использованием одного типа? В примере, у QuikCandle есть атрибут [DdeCustomTable(&amp;quot;Исторические свечки&amp;quot;)], который явно задает название таблицы.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Обратите внимание на строку &lt;b&gt;ct.TableName = caption;&lt;/b&gt;&lt;br /&gt;Таким образом мы можем указать любое имя таблицы через параметр TableName. А имя &amp;quot;Исторические свечки&amp;quot; назначается по умолчанию при создании экземпляра класса DdeCustomTable, если мы указываем в качестве аргумента в конструкторе тип QuikCandle.&lt;br /&gt;Функцию, которая приведена в коде выше, можно выполнять многократно с разными именами таблиц. И все прекрасно экспортируется.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22460/</id>
    <title type="text">А как понять к какой таблице они относятся, если тип строк(QuikCandle) во всех случаях одинаков ? А ...</title>
    <published>2012-11-13T05:26:35Z</published>
    <updated>2012-11-13T05:26:35Z</updated>
    <author>
      <name>esper</name>
      <uri>https://stocksharp.ru/users/5990/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Lunokhod &lt;a href="https://stocksharp.ru/posts/m/22431/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;А как понять к какой таблице они относятся, если тип строк(QuikCandle) во всех случаях одинаков ?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;А каким образом вы экспортируете разные таблицы с использованием одного типа? В примере, у QuikCandle есть атрибут [DdeCustomTable(&amp;quot;Исторические свечки&amp;quot;)], который явно задает название таблицы.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/22431/</id>
    <title type="text">Коллеги! Подскажите, а есть ли возможность в S# идентифицировать таблицу, строки которой передаются ...</title>
    <published>2012-11-12T12:45:27Z</published>
    <updated>2012-11-12T12:45:27Z</updated>
    <author>
      <name>Lunokhod</name>
      <uri>https://stocksharp.ru/users/27806/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Коллеги!&lt;br /&gt;&lt;br /&gt;Подскажите, а есть ли возможность в S# идентифицировать таблицу, строки которой передаются в событиях NewCustomTables и CustomTablesChanged ?&lt;br /&gt;Дело в том, что у меня возникла необходимость передать роботу таблицы часовых свечек по нескольким инструментам одновременно.&lt;br /&gt;В Квике открыто несколько таблиц со свечками, сделанными при помощи модификации файла CHARTS.QPL из примера к библиотеке S#.&lt;br /&gt;Все таблицы имеют разные заголовки. Загрузка производится примерно таким кодом :&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;&lt;pre class="brush:csharp"&gt;

public void AddCandleTable(String caption)
{
    DdeCustomTable ct = new DdeCustomTable(typeof(QuikCandle)); ;

    try
    {
        ct.TableName = caption;
        trader.CustomTables.Add(ct);
        trader.StartExport(ct);
    }
    catch (Exception ex)
    {
        PrintDebugMessage(ex.Message, Cl.T_DEBUG, true);
    }
}
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Где caption - заголовок таблицы в Квике&lt;br /&gt;&lt;br /&gt;Но когда приходят события NewCustomTables или CustomTablesChanged, то в качестве аргумента передаются только тип строк и массив собственно строк.&lt;br /&gt;А как понять к какой таблице они относятся, если тип строк(QuikCandle) во всех случаях одинаков ?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/9321/</id>
    <title type="text">Так, похоже что-то получилось... Прописал атрибут IdentityAttribute у своей таблицы так public strin...</title>
    <published>2011-07-06T06:38:45Z</published>
    <updated>2011-07-06T06:38:45Z</updated>
    <author>
      <name>kas</name>
      <uri>https://stocksharp.ru/users/28238/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Так, похоже что-то получилось...&lt;br /&gt;Прописал атрибут IdentityAttribute у своей таблицы так&lt;br /&gt;&lt;br /&gt;   [DdeCustomColumn(&amp;quot;Базовый актив&amp;quot;, Order = 0)]&lt;br /&gt;   [Identity()]&lt;br /&gt;   public string BazAct { get; set; }&lt;br /&gt;&lt;br /&gt;Событие CustomTablesChanged вызывается. Правда пока не понял как заменить изменившиеся строки, и не могу понять чем вообще это событие отличается от NewCustomTables, вроде бы в него также приходит обновившаяся строка?&lt;br /&gt;И еще кто-нибудь знает как обновлять свою коллекцию раз в заданный промежуток времени. Я ради обучения экспортирую таблицу с параметрами опционов, и мне достаточно обновляться раз в секунду, а там событие обновления происходит десятки раз за секунду.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/9319/</id>
    <title type="text">Тоже интересен данный вопрос. Хочу не добавлять строчки а заменять их. Я так понимаю нужно вызывать ...</title>
    <published>2011-07-06T05:27:38Z</published>
    <updated>2011-07-06T05:27:38Z</updated>
    <author>
      <name>kas</name>
      <uri>https://stocksharp.ru/users/28238/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Тоже интересен данный вопрос. Хочу не добавлять строчки а заменять их. Я так понимаю нужно вызывать событие QuikTrader.CustomTablesChanged. В документации написано что одно из полей должно быть помечено аттрибутом IdentityAttribute, но как это все сделать я сам разобраться не смог. Вы не могли бы пояснить как это сделать? Примерчик небольшой дать? &lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/7766/</id>
    <title type="text">Расскажите почему, если делать подряд Clear, а потом AddRange без проверки Count, то выскакивает иск...</title>
    <published>2011-04-29T08:26:55Z</published>
    <updated>2011-04-29T08:26:55Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;RyleT &lt;a href="https://stocksharp.ru/posts/m/7764/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Расскажите почему, если делать подряд Clear, а потом AddRange без проверки Count, то выскакивает исключение TargetIvokationException. Может вы предложите вариант решения?&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stocksharp.com/doc/help/html/a0a4c8df-2bba-4e1e-8ba9-e1fa98728f92.htm
" title="http://stocksharp.com/doc/help/html/a0a4c8df-2bba-4e1e-8ba9-e1fa98728f92.htm
"&gt;http://stocksharp.com/do...e-8ba9-e1fa98728f92.htm
&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;RyleT &lt;a href="https://stocksharp.ru/posts/m/7764/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Идентификация по времени мне не подходит, я планирую экспортировать не свечи, а свою таблицу написанную на QPILE, которая обновляется каждую секунду. На текущем этапе я бы хотел, чтобы точно такая же таблица точно также отображалась в окне моей программы написанной на C# с применением S#.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;У таблица без уникального поля?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/7764/</id>
    <title type="text">Расскажите почему, если делать подряд Clear, а потом AddRange без проверки Count, то выскакивает иск...</title>
    <published>2011-04-29T06:38:00Z</published>
    <updated>2011-04-29T06:38:00Z</updated>
    <author>
      <name>RyleT</name>
      <uri>https://stocksharp.ru/users/27693/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Расскажите почему, если делать подряд Clear, а потом AddRange без проверки Count, то выскакивает исключение TargetIvokationException. Может вы предложите вариант решения?&lt;br /&gt;&lt;br /&gt;Идентификация по времени мне не подходит, я планирую экспортировать не свечи, а свою таблицу написанную на QPILE, которая обновляется каждую секунду. На текущем этапе я бы хотел, чтобы точно такая же таблица точно также отображалась в окне моей программы написанной на C# с применением S#.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/7755/</id>
    <title type="text">Идентифицируйте свечки по времени.</title>
    <published>2011-04-28T17:37:14Z</published>
    <updated>2011-04-28T17:37:14Z</updated>
    <author>
      <name>Mikhail Sukhov</name>
      <uri>https://stocksharp.ru/users/201/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Идентифицируйте свечки по времени.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/7731/</id>
    <title type="text">Здравствуйте. В примере &amp;quot;Экспорт произвольных таблиц&amp;quot; SampleDdeCustomTable идет заполнение экземпляр...</title>
    <published>2011-04-27T19:22:23Z</published>
    <updated>2011-04-27T19:22:23Z</updated>
    <author>
      <name>RyleT</name>
      <uri>https://stocksharp.ru/users/27693/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">Здравствуйте. В примере &amp;quot;Экспорт произвольных таблиц&amp;quot; SampleDdeCustomTable идет заполнение экземпляра класса ThreadSafeObservableCollection значениями из произвольной таблицы реализованной на QPILE, который автоматически попадает в свойство ItemSource компонента ListView. Но сделано это так, что с каждым пересчетом таблицы в Quik&amp;#39;e в экземпляр класса ThreadSafeObservableCollection добавляется новая порция строк устремляя их количество к бесконечности:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;this.Trader.NewCustomTables += (type, objects) =&amp;gt;&lt;br /&gt;{&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;// нас интересует только QuikCandle&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;if (type == typeof(QuikCandle))&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;_candlesWindow.Candles.AddRange(objects.Cast&amp;lt;QuikCandle&amp;gt;());&lt;br /&gt;};&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Подскажите пожалуйста как изменить код так, чтобы новые строки не добавлялись, а заменяли существующие. &lt;br /&gt;Мой вариант решения меня не совсем устраивает, так как после каждой второй операции экспорта ListView остается пустым:&lt;br /&gt;&lt;br /&gt;&lt;div class="code"&gt;&lt;strong&gt;Код&lt;/strong&gt;&lt;div class="innercode"&gt;this.Trader.NewCustomTables += (type, objects) =&amp;gt;&lt;br /&gt;{&lt;br /&gt;  if (type == typeof(QuikCandle))&lt;br /&gt;  {&lt;br /&gt;    if (this.Candles.Count &amp;gt; 0)&lt;br /&gt;      this.Candles.Clear();&lt;br /&gt;    if (this.Candles.Count == 0) &lt;br /&gt;      this.Candles.AddRange(objects.Cast&amp;lt;QuikCandle&amp;gt;());&lt;br /&gt;  }&lt;br /&gt;};&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
</feed>