<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=3658473</guid>
        <pubDate>Thu, 10 Mar 2016 04:40:32 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=3658473</link>
        <description><![CDATA[Rust: Пример <strong class='tag-b'> &quot;Как нельзя писать код&quot;</strong><br>
Система самописная, писалась местными &quot;умельцами&quot; с нуля и лет 7 назад, если не больше. В принципе достаточно неплохая, но местами встречаются такие косяки, что плакать хочется.<br>
<br>
Вчера позвонили пользователи и пожаловались на ошибку при проведении одного из документов. Это было странно, т.к. позавчера все работало, а обновлений никаких я не делал. Попросил скинуть скриншот ошибки с описанием действий - что именно вызвало ошибку. Короче, посмотрев в конфигураторе, обнаружил следующий фрагмент кода, на котором собственно все и сыпалось, причем только на двух документах:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">КонПериода = КонецДня(Дата(Год(НачПериода)+1, Месяц(НачПериода), День(НачПериода)));</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
Повтыкал в код, понял что таким образом прибавляют год к дате первичного документа для последующей проверки. Немного выпал в осадок, т.к. все можно было написать гораздо проще, а именно:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">КонПериода = КонецДня(ДобавитьМесяц(НачПериода, 12));</div></ol></div></div></div></div><br>
<br>
Пока поставил себе зарубку переписать этот кусок кода и начал разбираться дальше - что же именно вызвало ошибку всего в двух документах. Посмотрев в отладчике значение НачПериода, увидел что там 29-02-2016, високосный год, Карл, а прибавив год к дате как описано выше, получаем 29 февраля 2017, а такой даты не существует. Сразу же переписал с использованием функции ДобавитьМесяц, и все заработало. Руки бы оторвал за такую работу с датой  &gt;:(<br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>Сообщения были разделены в тему &quot;<a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=420997' target='_blank'>Flood</a>&quot;</span></span>]]></description>
        <author>Rust</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=3008964</guid>
        <pubDate>Tue, 18 Oct 2011 02:01:24 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=3008964</link>
        <description><![CDATA[dimetra2008: <a class='tag-url' href='http://1cexpo.ru/metodiki/20-tipichnye-prichiny-neoptimalnoj-raboty-zaprosov-i-metody-optimizaczii.html' target='_blank'>Оптимизация запросов в 1С</a>]]></description>
        <author>dimetra2008</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=2202591</guid>
        <pubDate>Mon, 23 Feb 2009 15:37:05 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=2202591</link>
        <description><![CDATA[evGenius: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=58372&view=findpost&p=2202535'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Pavlovsky &#064; <time class="tag-quote__quoted-time" datetime="2009-02-23T14:22:57+00:00">23.02.09, 14:22</time></span><div class='quote '>2) В подобных случаях необходимо использовать механизм тразакций.</div></div><br>
Причём если справочники в базе объёмные, то транзакцию нужно делать не одну, а порциями по некоторому количеству данных. Иначе удаление будет дико тормозить и отожрёт очень много памяти.]]></description>
        <author>evGenius</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=2202535</guid>
        <pubDate>Mon, 23 Feb 2009 14:22:57 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=2202535</link>
        <description><![CDATA[Pavlovsky: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=58372&view=findpost&p=1762436'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>logarifm &#064; <time class="tag-quote__quoted-time" datetime="2007-11-13T09:52:01+00:00">13.11.07, 09:52</time></span><div class='quote '><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Для Н = 1 По Метаданные.Справочник() Цикл</div><div class="code_line">&nbsp;&nbsp; &nbsp;Спр = СоздатьОбъект(&quot;Справочник.&quot;+Метаданные.Справочник(Н).Идентификатор);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Спр.ВыбратьЭлементы(0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Пока Спр.ПолучитьЭлемент() = 1 Цикл</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//где РежимУдаления - это зависит от того где вы реализируете код, если обработка можно поместить флаг</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//можно спросить в пользователя</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;~Удалить:Попытка</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Спр.Удалить(РежимУдаления);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Исключение</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//можно обрабатаывать разными методами, я испльзую переход</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ответ = Вопрос(&quot;Элемент: &quot;+Спр.Код+&quot; &quot;+Спр+&quot; заблокирован, повторить&quot;,&quot;Да+Нет+Отмена&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Если Ответ = &quot;Да&quot; Тогда</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Перейти ~Удалить;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ИначеЕсли Ответ = &quot;Нет&quot; Тогда</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Сообщить(&quot;Элемент был заблокирован и не удален/помечен&quot;+Спр.Код+ &quot;&quot; +Спр,&quot;!!!&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Продолжить;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Иначе</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //тут можна сделать обрів и общего цикла</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Прервать; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;КонецЕсли;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;КонецПопытки;</div><div class="code_line">&nbsp;&nbsp; &nbsp;КонецЦикла; &nbsp; &nbsp; </div><div class="code_line">КонецЦикла;</div></ol></div></div></div></div></div></div><br>
<br>
Имхо тоже плохой стиль.<br>
1) Использовать конструкцию Перейти нужно только в крайнем случае.<br>
2) В подобных случаях <strong class='tag-b'>необходимо</strong> использовать механизм тразакций.]]></description>
        <author>Pavlovsky</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1762436</guid>
        <pubDate>Tue, 13 Nov 2007 09:52:01 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1762436</link>
        <description><![CDATA[logarifm: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=58372&view=findpost&p=409394'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Allaire &#064; <time class="tag-quote__quoted-time" datetime="2004-07-23T13:33:34+00:00">23.07.04, 13:33</time></span><div class='quote '>В итоге время построения отчета с условиями больше чем без оных&#33;</div></div><br>
Это неверно... С условиями запрос отрабатываютса на много быстрее, тем более если это запрос на ToySQL или на 1С++ <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='7' style='font-size:7pt;'>-Added <time class="tag-mergetime" datetime="2007-11-13T10:04:21+00:00">13.11.07, 10:04</time></span></span><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>, &#064; <time class="tag-quote__quoted-time" datetime="1970-01-18T02:46:23+00:00">18.01.70, 02:46</time></span><div class='quote '>Плохой стиль  :<br>
Для Н = 1 По Метаданные.Справочник() Цикл<br>
    С = СоздатьОбъект(&quot;Справочник.&quot;+Метаданные.Справочник(Н).Идентификатор);<br>
    С.ВыбратьЭлементы(0);<br>
    Пока С.ПолучитьЭлемент() = 1 Цикл<br>
        С.Удалить(1);<br>
    КонецЦикла;     <br>
КонецЦикла;<br>
<br>
<br>
Хороший стиль  :<br>
Для Н = 1 По Метаданные.Справочник() Цикл<br>
    С = СоздатьОбъект(&quot;Справочник.&quot;+Метаданные.Справочник(Н).Идентификатор);<br>
    С.ВыбратьЭлементы(0);<br>
    Пока С.ПолучитьЭлемент() = 1 Цикл<br>
        С.Удалить(0);<br>
    КонецЦикла;     <br>
КонецЦикла;<br>
<br>
<br>
П.С.:<br>
На рабочей базе пробовать настоятельно не советую.</div></div><br>
В двох случаях стиль плохой, хотя и в обох верный.<br>
<br>
Хороший Стиль:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">&nbsp;</div><div class="code_line">Для Н = 1 По Метаданные.Справочник() Цикл</div><div class="code_line">&nbsp;&nbsp; &nbsp;Спр = СоздатьОбъект(&quot;Справочник.&quot;+Метаданные.Справочник(Н).Идентификатор);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Спр.ВыбратьЭлементы(0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Пока Спр.ПолучитьЭлемент() = 1 Цикл</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//где РежимУдаления - это зависит от того где вы реализируете код, если обработка можно поместить флаг</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;//можно спросить в пользователя</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;~Удалить:Попытка</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Спр.Удалить(РежимУдаления);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Исключение</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;//можно обрабатаывать разными методами, я испльзую переход</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Ответ = Вопрос(&quot;Элемент: &quot;+Спр.Код+&quot; &quot;+Спр+&quot; заблокирован, повторить&quot;,&quot;Да+Нет+Отмена&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Если Ответ = &quot;Да&quot; Тогда</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Перейти ~Удалить;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;ИначеЕсли Ответ = &quot;Нет&quot; Тогда</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Сообщить(&quot;Элемент был заблокирован и не удален/помечен&quot;+Спр.Код+ &quot;&quot; +Спр,&quot;!!!&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Продолжить;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Иначе</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //тут можна сделать обрів и общего цикла</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Прервать; &nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;КонецЕсли;</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;КонецПопытки;</div><div class="code_line">&nbsp;&nbsp; &nbsp;КонецЦикла; &nbsp; &nbsp; </div><div class="code_line">КонецЦикла;</div></ol></div></div></div></div>]]></description>
        <author>logarifm</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1481194</guid>
        <pubDate>Mon, 12 Mar 2007 07:26:34 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1481194</link>
        <description><![CDATA[RusUdin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=58372&view=findpost&p=1481160'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>evGenius &#064; <time class="tag-quote__quoted-time" datetime="2007-03-12T06:57:05+00:00">12.03.07, 06:57</time></span><div class='quote '>А если удалять не все, а по какому-нибудь условию? </div></div><br>
Не могу сказать, таких задач перед собой не ставил. Но знаю, что с таблицами значений такое не проходит.]]></description>
        <author>RusUdin</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1481160</guid>
        <pubDate>Mon, 12 Mar 2007 06:57:05 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1481160</link>
        <description><![CDATA[evGenius: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=58372&view=findpost&p=1481145'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>RusUdin &#064; <time class="tag-quote__quoted-time" datetime="2007-03-12T06:44:50+00:00">12.03.07, 06:44</time></span><div class='quote '>Проверял. Самое интересное, что не сбивается (релиз 25 по крайней мере).</div></div><br>
А если удалять не все, а по какому-нибудь условию?]]></description>
        <author>evGenius</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1481145</guid>
        <pubDate>Mon, 12 Mar 2007 06:44:50 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1481145</link>
        <description><![CDATA[RusUdin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=58372&view=findpost&p=1481078'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>evGenius &#064; <time class="tag-quote__quoted-time" datetime="2007-03-12T05:00:13+00:00">12.03.07, 05:00</time></span><div class='quote '>RusUdin, а ты в курсе, что выборка сбивается при удалении элемента?</div></div><br>
Проверял. Самое интересное, что не сбивается (релиз 25 по крайней мере).]]></description>
        <author>RusUdin</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1481078</guid>
        <pubDate>Mon, 12 Mar 2007 05:00:13 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1481078</link>
        <description><![CDATA[evGenius: <strong class='tag-b'>RusUdin</strong>, а ты в курсе, что выборка сбивается при удалении элемента?]]></description>
        <author>evGenius</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1478783</guid>
        <pubDate>Fri, 09 Mar 2007 10:08:34 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1478783</link>
        <description><![CDATA[RusUdin: Плохой стиль :no: :<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Для Н = 1 По Метаданные.Справочник() Цикл</div><div class="code_line">&nbsp;&nbsp; &nbsp;С = СоздатьОбъект(&quot;Справочник.&quot;+Метаданные.Справочник(Н).Идентификатор);</div><div class="code_line">&nbsp;&nbsp; &nbsp;С.ВыбратьЭлементы(0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Пока С.ПолучитьЭлемент() = 1 Цикл</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;С.Удалить(1);</div><div class="code_line">&nbsp;&nbsp; &nbsp;КонецЦикла;</div><div class="code_line">КонецЦикла;</div></ol></div></div></div></div><br>
<br>
Хороший стиль :yes: :<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Для Н = 1 По Метаданные.Справочник() Цикл</div><div class="code_line">&nbsp;&nbsp; &nbsp;С = СоздатьОбъект(&quot;Справочник.&quot;+Метаданные.Справочник(Н).Идентификатор);</div><div class="code_line">&nbsp;&nbsp; &nbsp;С.ВыбратьЭлементы(0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;Пока С.ПолучитьЭлемент() = 1 Цикл</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;С.Удалить(0);</div><div class="code_line">&nbsp;&nbsp; &nbsp;КонецЦикла;</div><div class="code_line">КонецЦикла;</div></ol></div></div></div></div><br>
<br>
П.С.:<br>
На рабочей базе пробовать настоятельно не советую.]]></description>
        <author>RusUdin</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1286626</guid>
        <pubDate>Mon, 02 Oct 2006 04:11:34 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1286626</link>
        <description><![CDATA[Rust: Всё отлично скачивается  :yes:]]></description>
        <author>Rust</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1284463</guid>
        <pubDate>Fri, 29 Sep 2006 16:50:46 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1284463</link>
        <description><![CDATA[NovProf: Mechanic, почему то  speed_1C.zip  не скачивается - ошибка в архиве.]]></description>
        <author>NovProf</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1047697</guid>
        <pubDate>Sat, 18 Mar 2006 03:22:03 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=1047697</link>
        <description><![CDATA[Necro666: Совершенно не согласен с тем, что нужно использовать регистры.<br>Регистры СОВСЕМ нельзя использовать (в запросах 1С я имею ввиду, не в SQL) если в запросе присутствует конструкция Регистр.ХХХ.ТекущийДокумент.УУУУ<br>Встретился мне раз такой маразм. Был какой-то отчет по экспедиторам, выполнялся по ОДНОМУ около 20мин; хотел переписать под SQL, но проблема решилась на замену выборки из регистра на выборку по документам отгрузки. Стал делаться за 30сек :-)<br><br>Вообще, нужно хорошо подумать, перед тем как писать, например, обороты часто можно получить как по регистру, так и по документам, соответственно,  если используются поля, которых в регистре нет а в документе есть - использовать документ или переделывать регистр.<br><br>На регистре, который часто приходится рассчитывать, полезно ставить галочку быстрый отбор, отбор движений по имзмерениям и т.д. Наприме, регистры учета остатков, которые рассчитываются в момент проведения документов. Установка всех этих галочек замедляет запись в регистр, но ускоряет чтение из него. А чтение занимает 80-95% времени.<br><br>Нужно избегать проведения документов задним или будущим числом - мало того, что это замедляет работу, так еще и в данных после этого бывает разобраться очень и очень трудно. Но, к сожалению, тут от программиста мало что зависит...<br><br>бухгалтерский учет (до какого-то предела, наверное) гораздо быстрее работает на ДБФ, чем на SQL. Разница в скорости - в десятки раз. Дело в том, что объект &quot;БухгалтерскиеИтоги&quot; возможности SQL не использует совсем. Написание прямых запросов для SQL в этом случае затруднено, в индекс попасть очень трудно.<br><br>Да&#33; Об этом уже много раз сказано, но я повторюсь:<br>для регистра 1С создает кластерный индекс по всем его измерениям, поэтому наивысшая скорость получается при указании в запросе значений для всех измерений (операция INDEX SEEK), приемлемая - при указании нескольких первых измерений (INDEX SCAN), а при указании не первых измерений поиск сводится к просмотру таблицы (TABLE SCAN) - то есть тормоза. Измерения в индексе расположены в том порядке, в котором они объявлены в 1С.]]></description>
        <author>Necro666</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=431690</guid>
        <pubDate>Mon, 16 Aug 2004 14:29:50 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=431690</link>
        <description><![CDATA[iskander: Тему закрепляю повыше, думаю, оно многим интересно будет.]]></description>
        <author>iskander</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=430561</guid>
        <pubDate>Sun, 15 Aug 2004 09:15:26 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=430561</link>
        <description><![CDATA[Mechanic: Думаю, тут есть кое что интересное (в аттаче). Кстати, всё, что там сказано про SQL-версии, это правда.<br>Да, и ежели внимательно отнестись к отборам в регистрах и БИ - тоже можно оочень всё ускорить.]]></description>
        <author>Mechanic</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=409394</guid>
        <pubDate>Fri, 23 Jul 2004 13:33:34 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=409394</link>
        <description><![CDATA[Allaire: Это парень не ООП, чтоб обсуждать подобные &quot;параметры&quot;  :( , хотя есть определенные правила  т.н.<br>
&quot;хорошего стиля&quot; - такая постановка вопроса более уместна, (в 1С не существует такого понятия как &quot;рефакторинг&quot; в прямом смысле) - поэтому чтобы писать хороший/эффективный &quot;код&quot; в 1С надо знать всего несколько правил: <br>
- особенность: если отчет (та же материальная ведомость в торговле) выполняется с условием отбора по группам товаров (особенно самого верхнего уровня), то для для каждой ниже лежащей (подчиненной) группы выполняется отдельный запрос. В итоге время построения отчета с условиями больше чем без оных&#33;<br>
- Для уменьшения трафика сети и для разгруски сервера нужно использовать транзакции, в большенстве случаев очень сильно помогает, по крайней мере сеть сильно разгружается, и увеличивается общая производительность......<br>
- используй регистры&#33; Пример: Если есть жесткая привязка документов оплаты и отгрузки к документу &quot;Заявка&quot; то проще сделать дополнительный регистр, в котором учитывать сумму заявки и суммы оплаты и отгрузки. Тогда тебе нужно будет просто получить итог данного регистра по конкретному документу на точку актуальности. Это будет быстрее. Но еще нужно будет создать примитивный документ корректировки данного регистра, поскольку если используются различные валюты оплаты то регистр может автоматически не закрываться<br>
- Обращаться к итогам в формах с табличной частью дольше, чем к реквизиту<br>
- получение остатков/оборотов по регистру на позицию проводимого документа - это существенно. И здесь, помимо _технически быстрого извлечения данных_ из таблиц, неважно в какой СУБД хранящихся, очень существенна _логическая_ организация данных. А, если я правильно понял, то разработчики БР именно этим и хлещутся - оптимизацией _хранения_ данных об остатках/оборотах.<br>
Т.е., я не хочу подменять 1С в умении вытаскивать данные из ею же организованных таблиц. Я хочу иметь лучщим образом организованные данные, чтобы результат получался быстрее по определению. На мой взгляд, только так и можно добиться увеличения производительности на порядки, а не в разы.<br>
- При выполнении запроса выполняется разделение его текста на две части: на серверную и на клиентскую. В серверную часть входят только краткие пути объявления внутренних переменных, в которых обращение идет только к полям регистров. Если в объявление переменной встречается длинный путь через точку, то он усекается до краткого, а остальная часть в дальнейшем обрабатывается на стороне клиента&quot; И производительность запросов падает ниже, чем у штатного объекта &quot;Запрос&quot; в SQL версии :-)<br>
- используй прямые запросы (СКЛ)...<br>
- и последнее: На всех клиентах одна и та же ОС (один и тот же релиз), сет.катрочки одинаковые, драйвера одного релиза, плюс качественный монтаж кабеля и правильные сетевые настройки.<br>
Развлекайся&#33; :) <br>
<br>
<span class="tag-color tag-color-named" data-value="gray" style="color: gray"><span class='tag-size' data-value='8' style='font-size:8pt;'><strong class='tag-b'>Добавлено в <time class="tag-mergetime" datetime="2004-07-23T13:39:02+00:00">23.07.04, 13:39</time></strong>:</span></span><br>
Кстати для проверки всего вышесказанного и вообще на будущее рекомендую пользоваться утилиткой &quot;замер производительности&quot; из конфигуратора  &lt;_&lt;]]></description>
        <author>Allaire</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=391812</guid>
        <pubDate>Wed, 30 Jun 2004 06:26:49 +0000</pubDate>
        <title>Оптимизация. &amp;quot;Хороший стиль&amp;quot; написания под 1С</title>
        <link>https://forum.sources.ru/index.php?showtopic=58372&amp;view=findpost&amp;p=391812</link>
        <description><![CDATA[DrMort: У меня как всегда вопросы к народу хитрые  ;)  Вот хочу узнать, может кто обладает информацией по поводу того какие методы быстрее и насколько выполняются? :) <br>Наподобие того как в ассемблере например команда MOV это 4 такта...]]></description>
        <author>DrMort</author>
        <category>1С: Проблемы и решения</category>
      </item>
	
      </channel>
      </rss>
	