<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
	<channel>
		<title>Форум QUIK [тема: Синхронизация getNumberOf и getItem]</title>
		<link>http://forum.quik.ru</link>
		<description>Новое в теме Синхронизация getNumberOf и getItem форума  на сайте Форум QUIK [forum.quik.ru]</description>
		<language>ru</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Tue, 07 Apr 2026 04:24:25 +0300</pubDate>
		<item>
			<title>Синхронизация getNumberOf и getItem</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message47854/topic5733/">Синхронизация getNumberOf и getItem</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_pL2v3Ojc" href="/user/13989/" bx-tooltip-user-id="13989">Сергей</a> написал:<br />Прежде всего, я нигде, вроде, не просил написать скрипт на Луа, или каком-либо еще языке, достаточно было изложить общий принцип организации выборки. Прямой, обратный, с использованием специальных функций, что-то еще. По существу последнего ответа, спасибо, хоть какая-то конкретика, по крайней мере понятно, как организована сортировка в таблице позиций. Уж, как это обработать в скрипте, дело действительно индивидуальное.<br />=============<br />сталкивался с такой ситуацией. Ее исключить можно если контролировать размер таблицы. <br />--------------<br />Полагаю, что лучшим способом, является не лазить постоянно в хранилище терминала,<br /> так как это очень накладная операция, а создавать свои таблицы<br />и отслеживать в них появление и удаление строк в соответствии с колбеками. <br />
			<i>20.08.2020 06:42:21, nikolz.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message47854/topic5733/</link>
			<guid>http://forum.quik.ru/messages/forum10/message47854/topic5733/</guid>
			<pubDate>Thu, 20 Aug 2020 06:42:21 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Синхронизация getNumberOf и getItem</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message47743/topic5733/">Синхронизация getNumberOf и getItem</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Прежде всего, я нигде, вроде, не просил написать скрипт на Луа, или каком-либо еще языке, достаточно было изложить общий принцип организации выборки. Прямой, обратный, с использованием специальных функций, что-то еще. По существу последнего ответа, спасибо, хоть какая-то конкретика, по крайней мере понятно, как организована сортировка в таблице позиций. Уж, как это обработать в скрипте, дело действительно индивидуальное. <br />
			<i>14.08.2020 12:13:45, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message47743/topic5733/</link>
			<guid>http://forum.quik.ru/messages/forum10/message47743/topic5733/</guid>
			<pubDate>Fri, 14 Aug 2020 12:13:45 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Синхронизация getNumberOf и getItem</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message47734/topic5733/">Синхронизация getNumberOf и getItem</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте, <a class="blog-p-user-name" id="bp_PAYlu8Xe" href="/user/13989/" bx-tooltip-user-id="13989">Сергей</a>.<br /><br />Прежде всего настоятельно рекомендуем ознакомиться с <noindex><a href="https://forum.quik.ru/forum10/topic15/" target="_blank" rel="nofollow">регламентом</a></noindex> обработки клиентских обращений в данной ветке форума.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_5C4yVo9F" href="/user/13989/" bx-tooltip-user-id="13989">Сергей</a> написал:<br />каких случаях описанные проблемы могут возникнуть и как их избежать.<br />=============<br />Проблема с появлениями дубликатов записей по позициям в Вашем логе могут возникнуть в результате того, что скрипт не учитывает или неправильно учитывает смещения строк, возможные в результате появления новой записи. Необходимо пересмотреть используемый Вами алгоритм опроса и скорректировать его. Для решения этой задачи Вы можете использовать, например, функции обратного вызова OnDepoLimit.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_FabDe6uN" href="/user/13989/" bx-tooltip-user-id="13989">Сергей</a> написал:<br />нужны конкретные рекомендации, как должна быть организована выборка из таблиц квика, чтобы не было повторного чтения. Пока, из сказанного Андреем, можно сделать вывод, что таблицы заполняются терминалом не последовательно, а абы как, и порядок строк может в любой момент произвольно меняться.<br />=============<br />Вопрос был такой – может ли появление новой позиции в таблице depo_limits приводить к смещению номер последующих строк позиций и появлению дубликатов в логе, если не учитывать это смещение?<br /><br />Т.е. предлагается конкретная ситуация – появляется новая позиция (например, куплена бумага, которой ранее не было в depo_limits терминала), какая-то из последующих записей дублируется в логе. «Произвольное появление новых записей и смещения номеров» обусловлены «произвольными» торговыми операциями пользователя. В самой таблице позиций выполняется сортировка по фирме, коду клиента, коду инструмента и сроку расчётов. Отсюда становится понятно, что появление новых записей и смещения не «произвольны», а определяются торговыми операциями клиента, независимо от опроса со стороны LUA-скрипта, в результате новые записи могут появится как в конце таблицы, так и в начале или середине, приводя к смещению номеров последующих записей о позициях.<br /><br />В соответствии с этим был дан конкретный ответ – да, появление новых позиций может приводить к смещению номеров последующих строк позиций, и если это смещение не учитывать – то в зависимости от того, как делается опрос – могут появляться дубликаты в логе. <br /><br />Как реализован опрос и как пишется лог – это решает автор скрипта, а не терминал QUIK и не функции QLUA. Соответственно, если проблемный фрагмент скрипта не приводится – то и дать какие-либо конкретные рекомендации для данной задачи весьма затруднительно. Если есть конкретный проблемный фрагмент скрипта, который казалось бы не должен допускать дубликатов - не работает как ожидается - просьба привести его, постараемся помочь. <br />
			<i>14.08.2020 09:51:56, Andrey Bezrukov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message47734/topic5733/</link>
			<guid>http://forum.quik.ru/messages/forum10/message47734/topic5733/</guid>
			<pubDate>Fri, 14 Aug 2020 09:51:56 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Синхронизация getNumberOf и getItem</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message47718/topic5733/">Синхронизация getNumberOf и getItem</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Видимо, я не очень доходчиво изложил свою мысль, раз до сих пор нет никакого ответа от разработчиков. Ответов в стиле &quot;все возможно&quot; недостаточно, нужны конкретные рекомендации, как должна быть организована выборка из таблиц квика, чтобы не было повторного чтения. Пока, из сказанного Андреем, можно сделать вывод, что таблицы заполняются терминалом не последовательно, а абы как, и порядок строк может в любой момент произвольно меняться. Если это так, то желательно иметь возможность синхронизировать чтение и обновление таблиц, либо механизмом транзакций, либо блокировками. И под словом &quot;желательно&quot; я подразумеваю, что необходимо зарегистрировать пожелание на доработку. <br />
			<i>13.08.2020 19:50:52, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message47718/topic5733/</link>
			<guid>http://forum.quik.ru/messages/forum10/message47718/topic5733/</guid>
			<pubDate>Thu, 13 Aug 2020 19:50:52 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Синхронизация getNumberOf и getItem</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message47685/topic5733/">Синхронизация getNumberOf и getItem</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			<br />====quote====<br /><a class="blog-p-user-name" id="bp_OkrXIHqk" href="/user/12999/" bx-tooltip-user-id="12999">Andrey Bezrukov</a> написал:<br />Здравствуйте, <noindex><a href="/user/14170/" target="_blank" rel="nofollow">Алексей</a></noindex>.<br /><br /> <br />====quote====<br /><noindex><a href="/user/14170/" target="_blank" rel="nofollow">Алексей</a></noindex> написал:<br />Моя версия, объясняющая такое поведение: изменение таблицы depo_limits между вызовом getNumberOf и getItem. Например, была исполнена заявка на покупку или продажу. Количество строк в depo_limits изменилось и getItem &quot;съехал&quot; на одну строку.Скажите, возможна ли описанная ситуация?<br />=============<br /> Возможно, зависит от того, как составлен скрипт и как выполняется опрос количества строк, как часто вызываются getNumberOf и getItem.<br /> <br />====quote====<br /><noindex><a href="/user/14170/" target="_blank" rel="nofollow">Алексей</a></noindex> написал:<br />Скажите, возможна ли описанная ситуация? Если да, то как можно обнаружить изменение таблицы depo_limits после вызова getNumberOf, чтобы перечитать ее заново?<br />=============<br /> Можете использовать callback OnDepoLimit, например.<br /> <br />====quote====<br /><noindex><a href="/user/14170/" target="_blank" rel="nofollow">Алексей</a></noindex> написал:<br />Может ли функция SearchItems заменить вызов getItem в цикле и исключить возможность изменения таблицы depo_limits во время обхода?<br />=============<br /> Функция getItem возвращает LUA-таблицу с данными из указанной строки указанной таблицы.<br />Функция SearchItems возвращает LUA-таблицу с номерами строки указанной таблицы, которые отвечают указанным критериям. Возможность заменить одно другим предлагаем Вам определить для себя самостоятельно исходя из Вашего подхода к составлению скрипта и решаемой им задачи.<br />=============<br />Очень содержательные ответы! Почему бы просто не написать, что в нашем мире все возможно? Хочется надеяться, что более детальные комментарии службы поддержки тоже возможны, например, в каких случаях описанные проблемы могут возникнуть и как их избежать. <br />
			<i>13.08.2020 13:12:41, Сергей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message47685/topic5733/</link>
			<guid>http://forum.quik.ru/messages/forum10/message47685/topic5733/</guid>
			<pubDate>Thu, 13 Aug 2020 13:12:41 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Синхронизация getNumberOf и getItem</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message47672/topic5733/">Синхронизация getNumberOf и getItem</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Здравствуйте, <a class="blog-p-user-name" id="bp_mT08Kao4" href="/user/14170/" bx-tooltip-user-id="14170">Алексей</a>.<br /><br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_2qfdIolq" href="/user/14170/" bx-tooltip-user-id="14170">Алексей</a> написал:<br />Моя версия, объясняющая такое поведение: изменение таблицы depo_limits между вызовом getNumberOf и getItem. Например, была исполнена заявка на покупку или продажу. Количество строк в depo_limits изменилось и getItem "съехал" на одну строку.Скажите, возможна ли описанная ситуация?<br />=============<br />Возможно, зависит от того, как составлен скрипт и как выполняется опрос количества строк, как часто вызываются getNumberOf и getItem.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_1Y7WYVIK" href="/user/14170/" bx-tooltip-user-id="14170">Алексей</a> написал:<br />Скажите, возможна ли описанная ситуация? Если да, то как можно обнаружить изменение таблицы depo_limits после вызова getNumberOf, чтобы перечитать ее заново?<br />=============<br />Можете использовать callback OnDepoLimit, например.<br /><br />====quote====<br /><a class="blog-p-user-name" id="bp_nxgKt6mg" href="/user/14170/" bx-tooltip-user-id="14170">Алексей</a> написал:<br />Может ли функция SearchItems заменить вызов getItem в цикле и исключить возможность изменения таблицы depo_limits во время обхода?<br />=============<br />Функция getItem возвращает LUA-таблицу с данными из указанной строки указанной таблицы.<br />Функция SearchItems возвращает LUA-таблицу с номерами строки указанной таблицы, которые отвечают указанным критериям. Возможность заменить одно другим предлагаем Вам определить для себя самостоятельно исходя из Вашего подхода к составлению скрипта и решаемой им задачи. <br />
			<i>13.08.2020 06:39:59, Andrey Bezrukov.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message47672/topic5733/</link>
			<guid>http://forum.quik.ru/messages/forum10/message47672/topic5733/</guid>
			<pubDate>Thu, 13 Aug 2020 06:39:59 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Синхронизация getNumberOf и getItem</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message47666/topic5733/">Синхронизация getNumberOf и getItem</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Может ли функция SearchItems заменить вызов getItem в цикле и исключить возможность изменения таблицы depo_limits во время обхода? <br />
			<i>12.08.2020 21:49:48, Алексей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message47666/topic5733/</link>
			<guid>http://forum.quik.ru/messages/forum10/message47666/topic5733/</guid>
			<pubDate>Wed, 12 Aug 2020 21:49:48 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
		<item>
			<title>Синхронизация getNumberOf и getItem</title>
			<description><![CDATA[<b><a href="http://forum.quik.ru/messages/forum10/message47665/topic5733/">Синхронизация getNumberOf и getItem</a></b> в форуме <a href="http://forum.quik.ru/forum10/">Программирование на языке Lua</a>. <br />
			Добрый день. <br /><br /><br />Мой скрипт обходит таблицу &quot;depo_limits&quot; (&quot;Позиции по инструментам&quot;). Обратил внимание, что иногда getItem возвращает одну и туже строку дважды (абсолютно одинаковую). Пример такой строки:<br />====quote====<br />code=IRAO, depo_limit=awg_position_price=5.714571, client_code=552979/96023, currentbal=7000.0, currentlimit=0.0, firmid=MC0003300000, limit_kind=365, locked_buy=0.0, locked_buy_value=0.0, locked_sell=0.0, locked_sell_value=0.0, openbal=7000.0, openlimit=0.0, sec_code=IRAO, trdaccid=L01-00000F00, wa_position_price=5.714571<br />=============<br />Моя версия, объясняющая такое поведение: изменение таблицы depo_limits между вызовом getNumberOf и getItem. Например, была исполнена заявка на покупку или продажу. Количество строк в depo_limits изменилось и getItem &quot;съехал&quot; на одну строку.<br /><br />Скажите, возможна ли описанная ситуация? Если да, то как можно обнаружить изменение таблицы depo_limits после вызова getNumberOf, чтобы перечитать ее заново?<br /><br />Спасибо. <br />
			<i>12.08.2020 21:40:54, Алексей.</i>]]></description>
			<link>http://forum.quik.ru/messages/forum10/message47665/topic5733/</link>
			<guid>http://forum.quik.ru/messages/forum10/message47665/topic5733/</guid>
			<pubDate>Wed, 12 Aug 2020 21:40:54 +0300</pubDate>
			<category>Программирование на языке Lua</category>
		</item>
	</channel>
</rss>
