﻿<?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/1534/metadannye_-kak-seichas-oni-zapolnyayutsya/</id>
  <rights type="text">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  <updated>2026-04-06T22:38:36Z</updated>
  <logo>https://stocksharp.ru/images/logo.png</logo>
  <link href="https://stocksharp.ru/handlers/atom.ashx?category=topic&amp;id=1534" rel="self" type="application/rss+xml" />
  <entry>
    <id>https://stocksharp.ru/posts/m/7632/</id>
    <title type="text">Колонки у таблицы инструментов заполнены. А как они заполняются? Локально никаких схем нет, значит о...</title>
    <published>2011-04-22T16:18:56Z</published>
    <updated>2016-08-15T23:58:40Z</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;aspirant &lt;a href="https://stocksharp.ru/posts/m/7631/" 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;Mikhail Sukhov &lt;a href="https://stocksharp.ru/posts/m/7630/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Колонки у таблицы инструментов заполнены. А как они заполняются? Локально никаких схем нет, значит откуда то тянется. А откуда? &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;см. конструктор PlazaSystemTableRegistry&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Понял. Но это же не совсем то, о чем в &lt;a href="http://stocksharp.com/posts/m/5675/" title="http://stocksharp.com/posts/m/5675/"&gt;начале планировали&lt;/a&gt;. Сейчас нет ни парсинга схем, ни сохранения, ни минимального набора колонок (как я понял, добавляются вообще все колонки). Это в планах стоит или решил идти по другому? Это первое.&lt;br /&gt;&lt;br /&gt;И второе, а почему ты решил отделить основные таблица от других в PlazaSystemTableRegistry? Из его описания:&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Цитата:&lt;/span&gt;&lt;div class="innerquote"&gt;В этом классе перечислены системные таблицы, которые не видны клиенту, а создаются, чтобы мапить данные из потоков в стандартные объекты фреймворка. Их нужно создавать отдельно от клиентских таблиц, чтобы клиент &lt;b&gt;не мог редактировать состав колоннок&lt;/b&gt; внутри переменных типа PlazaTable.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Выделенное как раз неправильно. А если пользователь захочет дополнительные колонки для инструментов или заявок? Они должны идти в Security.ExtensionInfo (для заявок Order.ExtensionInfo).</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/7702/</id>
    <title type="text">А что дальше? Заявки? Да, было бы неплохо.</title>
    <published>2011-04-26T20:06:50Z</published>
    <updated>2011-04-26T20:06:50Z</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;aspirant &lt;a href="https://stocksharp.ru/posts/m/7699/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;А что дальше?  Заявки?&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/7699/</id>
    <title type="text">После изменений PlazaSystemTableRegistry кажется опять лишним классом. В чем фишка его отдельного су...</title>
    <published>2011-04-26T18:52:34Z</published>
    <updated>2011-04-26T18:52:34Z</updated>
    <author>
      <name>aspirant</name>
      <uri>https://stocksharp.ru/users/6114/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.ru/posts/m/7667/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;После изменений PlazaSystemTableRegistry кажется опять лишним классом. В чем фишка его отдельного существования от PlazaTableRegistry? Логики то он никакой не содержит.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Наконец я узрел истину[smile]  Только что удалил PlazaSystemTableRegistry, потому что он действительно лишний.  Раньше я почему-то думал, что пользователь может удалить нужные нам колонки в какой-нибудь таблице, и мы не сможем мапить объекты.  Теперь понял, что это у него не получится.  &lt;br /&gt;&lt;br /&gt;Сейчас собираюсь поправить поля IsMandatory  в таблицах, из которых мы мапим объекты.  А что дальше?  Заявки?</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/7667/</id>
    <title type="text"> Сделал рефакторинг двух классов PlazaSessionContentsFutureColumns и PlazaSessionContentsOptionColum...</title>
    <published>2011-04-25T20:42:16Z</published>
    <updated>2011-04-25T20:42:16Z</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;aspirant &lt;a href="https://stocksharp.ru/posts/m/7666/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Сделал рефакторинг двух классов PlazaSessionContentsFutureColumns и PlazaSessionContentsOptionColumns (и их родителя, конечно же, PlazaSessionContentsDerivativeColumns) по принципу, что не мапится, то необязательное.  Если правильно, доделаю отстальные системные таблицы.  Что касается остальных таблиц, это уже нужно смотреть тем, кто &amp;quot;работает по профилю&amp;quot;.&lt;br /&gt;&lt;br /&gt;Прописал автоматическое добавление служебных колоннок репликации (replID, replRev и replAct) в статическом конструкторе PlazaTableRegistry.  Более лучшего места не нашел.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Поправил код. AddSystemColumns сам по себе не имеет смысла, потому что это и есть подмножество IsMandatory. Но добавлять нужно абсолютно все колонки IsMandatory = true для всех таблиц.&lt;br /&gt;&lt;br /&gt;И так по мелочи, в виде вынесения кода AddMandatoryColumns в хелпер класс.&lt;br /&gt;&lt;br /&gt;В конструкторе PlazaSystemTableRegistry сделал тоже самое, что и в PlazaTableRegistry. Код вроде как меньше получается. Можно вернуть, если против.&lt;br /&gt;&lt;br /&gt;После изменений PlazaSystemTableRegistry кажется опять лишним классом. В чем фишка его отдельного существования от PlazaTableRegistry? Логики то он никакой не содержит.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/7666/</id>
    <title type="text">Еще лучше сделать проверку на удаление в PlazaColumnList чтобы выдывать сообщение об ошибке при удал...</title>
    <published>2011-04-25T19:07:38Z</published>
    <updated>2011-04-25T19:07:38Z</updated>
    <author>
      <name>aspirant</name>
      <uri>https://stocksharp.ru/users/6114/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.ru/posts/m/7638/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Еще лучше сделать проверку на удаление в PlazaColumnList чтобы выдывать сообщение об ошибке при удалении колонки, которая PlazaColumn.IsMandatory = true.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Ты уже сам это сделал[smile] &lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.ru/posts/m/7638/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Особое внимание, IsMandatory это не только replID, replRev, replAct. Для, допустим, заявок это еще номер, время, объем и т.д. Вообщем то, без чего не может произойти минимальный маппинг.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Сделал рефакторинг двух классов PlazaSessionContentsFutureColumns и PlazaSessionContentsOptionColumns (и их родителя, конечно же, PlazaSessionContentsDerivativeColumns) по принципу, что не мапится, то необязательное.  Если правильно, доделаю отстальные системные таблицы.  Что касается остальных таблиц, это уже нужно смотреть тем, кто &amp;quot;работает по профилю&amp;quot;.&lt;br /&gt;&lt;br /&gt;Прописал автоматическое добавление служебных колоннок репликации (replID, replRev и replAct) в статическом конструкторе PlazaTableRegistry.  Более лучшего места не нашел.&lt;br /&gt;</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/7638/</id>
    <title type="text">а почему ты решил отделить основные таблица от других в PlazaSystemTableRegistry? PlazaTableRegistry...</title>
    <published>2011-04-22T20:00:07Z</published>
    <updated>2011-04-22T20:00:07Z</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;aspirant &lt;a href="https://stocksharp.ru/posts/m/7636/" 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;Mikhail Sukhov &lt;a href="https://stocksharp.ru/posts/m/7632/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;а почему ты решил отделить основные таблица от других в PlazaSystemTableRegistry?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;PlazaTableRegistry - в нем все таблицы Плазы для клиента.  Создаются пустые, без колоннок.  На клиенте лежит обязанность наполнить их перед тем, как передать в StartListeners.  Можно, кстати, по умолчанию добавлять &lt;b&gt;первыми&lt;/b&gt; во все таблицы поля replID, replRev, replAct, потому что они нужны всегда.  Без них Плаза будет сыпать ошибки.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Согласен, это правильно. Еще лучше сделать проверку на удаление в PlazaColumnList чтобы выдывать сообщение об ошибке при удалении колонки, которая PlazaColumn.IsMandatory = true. Особое внимание, IsMandatory это не только replID, replRev, replAct. Для, допустим, заявок это еще номер, время, объем и т.д. Вообщем то, без чего не может произойти минимальный маппинг.&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;aspirant &lt;a href="https://stocksharp.ru/posts/m/7636/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;Я как-то спрашивал (может не совсем дотошно), нужно ли нам сохранять state схем, меняющийся от одного запуска программы к другому.  То есть мы пока не обрабатываем такой сценарий: пользователь запустил PlazaTrader, добавил в коде в таблицу 1 колонки 1, 2, 3, поработал, вышел.  Пользователь снова запустил PlazaTrader, рассчитывая, что мы уже за него заполнили таблицу 1 колонками 1, 2, 3, добавил в таблицу 1 колонку 4, убрал колонку 2, поработал вышел, уверенный, что, когда он в следующий раз заполнит PlazaTrader, мы за него заполним таблицу 1 колонками 1, 3, 4.   Или так должно быть[confused] &lt;br /&gt;Сейчас, как я вижу, сценарий такой: пользователь запустил PlazaTrader, добавил в коде в таблицу 1 колонки 1, 2, 3, поработал, вышел.  Снова запустил, заполнил своим кодом те же метаданные, поработал, вышел, и так до бесконечности.  Если это так, мой алгоритм действий проще: на основе заполненных PlazaTables внутри PlazaTableRegistry создаются временные файлы-схемы, которые передаются роутеру Плазе.&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Понял, тут ты прав абсолютно. Я прогнал.&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;aspirant &lt;a href="https://stocksharp.ru/posts/m/7636/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.ru/posts/m/7632/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;А если пользователь захочет дополнительные колонки для инструментов или заявок? Они должны идти в Security.ExtensionInfo (для заявок Order.ExtensionInfo).&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Не совсем понял, но попытаюсь ответить.  Что это за дополнительные колонки и откуда они будут браться?  Если, например, рассматривать метод OnNewDataFromOptionSessionContents (мапит объекты Security опиционов), в нем есть &lt;b&gt;все колонки, которые есть в потоке\таблице&lt;/b&gt; FORTS_OPTINFO_REPL\opt_sess_contents.  Если клиент хочет добавить что-то дополнительное, ему придется это делать вручную, потому что Плаза не примет схему с чужими колонками.&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Выделенное неправильно. В целях оптимизации трафика нужно создавать только минимальный набор параметров у этих таблиц. Можно решить какой. Для этого и я ввел свойство PlazaColumn.IsMandatory. Это те колонки, без которых нельзя обработать нормально поступившие данные. Сам понимаешь, если по инструменту придут только replID, replRev, replAct, понять что есть что мы не сможем.&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/7636/</id>
    <title type="text">а почему ты решил отделить основные таблица от других в PlazaSystemTableRegistry? PlazaTableRegistry...</title>
    <published>2011-04-22T19:29:53Z</published>
    <updated>2011-04-22T19:29:53Z</updated>
    <author>
      <name>aspirant</name>
      <uri>https://stocksharp.ru/users/6114/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.ru/posts/m/7632/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;а почему ты решил отделить основные таблица от других в PlazaSystemTableRegistry?&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;PlazaTableRegistry - в нем все таблицы Плазы для клиента.  Создаются пустые, без колоннок.  На клиенте лежит обязанность наполнить их перед тем, как передать в StartListeners.  Можно, кстати, по умолчанию добавлять &lt;b&gt;первыми&lt;/b&gt; во все таблицы поля replID, replRev, replAct, потому что они нужны всегда.  Без них Плаза будет сыпать ошибки.&lt;br /&gt;&lt;br /&gt;PlazaSystemTableRegistry - нужен нам, чтобы мапить объекты.  Этот класс, кстати, скрыт от клиентского кода.&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.ru/posts/m/7632/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Сейчас нет ни парсинга схем, ни сохранения&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Я как-то спрашивал (может не совсем дотошно), нужно ли нам сохранять state схем, меняющийся от одного запуска программы к другому.  То есть мы пока не обрабатываем такой сценарий: пользователь запустил PlazaTrader, добавил в коде в таблицу 1 колонки 1, 2, 3, поработал, вышел.  Пользователь снова запустил PlazaTrader, рассчитывая, что мы уже за него заполнили таблицу 1 колонками 1, 2, 3, добавил в таблицу 1 колонку 4, убрал колонку 2, поработал вышел, уверенный, что, когда он в следующий раз заполнит PlazaTrader, мы за него заполним таблицу 1 колонками 1, 3, 4.   Или так должно быть[confused] &lt;br /&gt;Сейчас, как я вижу, сценарий такой: пользователь запустил PlazaTrader, добавил в коде в таблицу 1 колонки 1, 2, 3, поработал, вышел.  Снова запустил, заполнил своим кодом те же метаданные, поработал, вышел, и так до бесконечности.  Если это так, мой алгоритм действий проще: на основе заполненных PlazaTables внутри PlazaTableRegistry создаются временные файлы-схемы, которые передаются роутеру Плазе.&lt;br /&gt;&lt;br /&gt;&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.ru/posts/m/7632/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;А если пользователь захочет дополнительные колонки для инструментов или заявок? Они должны идти в Security.ExtensionInfo (для заявок Order.ExtensionInfo).&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Не совсем понял, но попытаюсь ответить.  Что это за дополнительные колонки и откуда они будут браться?  Если, например, рассматривать метод OnNewDataFromOptionSessionContents (мапит объекты Security опиционов), в нем есть все колонки, которые есть в потоке\таблице FORTS_OPTINFO_REPL\opt_sess_contents.  Если клиент хочет добавить что-то дополнительное, ему придется это делать вручную, потому что Плаза не примет схему с чужими колонками.</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/7631/</id>
    <title type="text">Колонки у таблицы инструментов заполнены. А как они заполняются? Локально никаких схем нет, значит о...</title>
    <published>2011-04-22T15:04:27Z</published>
    <updated>2011-04-22T15:04:27Z</updated>
    <author>
      <name>aspirant</name>
      <uri>https://stocksharp.ru/users/6114/</uri>
      <email>info@stocksharp.ru</email>
    </author>
    <content type="html">&lt;div class="quote"&gt;&lt;span class="quotetitle"&gt;Mikhail Sukhov &lt;a href="https://stocksharp.ru/posts/m/7630/" class="quote_nav"&gt;&lt;/a&gt;&lt;/span&gt;&lt;div class="innerquote"&gt;Колонки у таблицы инструментов заполнены. А как они заполняются? Локально никаких схем нет, значит откуда то тянется. А откуда? &lt;/div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;см. конструктор PlazaSystemTableRegistry</content>
    <rights type="html">Copyright @ StockSharp Platform LLC 2010 - 2025</rights>
  </entry>
  <entry>
    <id>https://stocksharp.ru/posts/m/7630/</id>
    <title type="text">Колонки у таблицы инструментов заполнены. А как они заполняются? Локально никаких схем нет, значит о...</title>
    <published>2011-04-22T14:43:29Z</published>
    <updated>2011-04-22T14:43:29Z</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>
</feed>