<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Желтый чайник 1С</title><generator>teletype.in</generator><description><![CDATA[https://t.me/JuniorOneS

Ты на светлой стороне. 
Только настоящий джедай сможет сдержать гнев и познать Силу жёлтого программирования.]]></description><image><url>https://teletype.in/files/de/debcfd1b-b22a-4f84-9ee3-dc11d249a33e.jpeg</url><title>Желтый чайник 1С</title><link>https://teletype.in/@juniorones</link></image><link>https://teletype.in/@juniorones?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=juniorones</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/juniorones?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/juniorones?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Wed, 13 May 2026 23:28:07 GMT</pubDate><lastBuildDate>Wed, 13 May 2026 23:28:07 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@juniorones/B1xRiVr0V</guid><link>https://teletype.in/@juniorones/B1xRiVr0V?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=juniorones</link><comments>https://teletype.in/@juniorones/B1xRiVr0V?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=juniorones#comments</comments><dc:creator>juniorones</dc:creator><title>СтрРазделить() VS РазложитьСтрокуВМассивПодстрок()</title><pubDate>Wed, 05 Jun 2019 14:35:24 GMT</pubDate><category>Код</category><description><![CDATA[<img src="https://teletype.in/files/dd/dd7aa6ee-9d7c-4829-9fa7-9fad90ceb294.png"></img>#Сравнение #Код #РедакторКода
https://t.me/JuniorOneS]]></description><content:encoded><![CDATA[
  <hr />
  <p>#Сравнение #Код #РедакторКода<br /><a href="https://t.me/JuniorOneS" target="_blank">https://t.me/JuniorOneS</a></p>
  <hr />
  <p></p>
  <p>В случаях, когда нужно разбить строку на части, чаще всего используется один из методов:</p>
  <ol>
    <li><code><u>СтрРазделить()</u> </code>- платформенный метод</li>
    <li><code><u>РазложитьСтрокуВМассивПодстрок()</u> </code>- функция общего модуля БСП</li>
  </ol>
  <p></p>
  <p>Всеми рекомендуется использовать СтрРазделить(), так как это платформенный и более оптимизированный метод. Однако, при этом часто забывают, что он не полностью идентичен второму. И в некоторых случаях применить его не получится. </p>
  <p></p>
  <hr />
  <p><strong>Разберём нагляднее параметры по-порядку:</strong></p>
  <p><code>СтрРазделить(&lt;Строка&gt;, &lt;Разделитель&gt;, &lt;ВключатьПустые&gt;) </code></p>
  <p><code><u>РазложитьСтрокуВМассивПодстрок(</u>&lt;Строка&gt;, &lt;Разделитель&gt;, &lt;ПропускатьПустыеСтроки&gt;, &lt;СокращатьНепечатаемыеСимволы&gt;)</code></p>
  <p></p>
  <ol>
    <li><strong>&lt;Строка&gt;</strong><br />Тут всё понятно. Строка, которую нужно разделить.</li>
    <li><strong>&lt;Разделитель&gt;</strong><br />Вроде тоже ясно. Строка, которая является разделителем. <br />Однако. Этот параметр оба метода используют по-разному, когда его значение больше, чем один символ.<br /><br />У СтрРазделить() каждый символ в параметре является отдельным разделителем. В то время как в РазложитьСтрокуВМассивПодстрок() он цельный.<br /><br />Разницу понять легче нагляднее на примере (для удобства исключим пустые элементы в результате)<br /></li>
  </ol>
  <figure class="m_original">
    <img src="https://teletype.in/files/dd/dd7aa6ee-9d7c-4829-9fa7-9fad90ceb294.png" />
    <figcaption><strong>&quot;б1&quot; - цельный разделитель</strong></figcaption>
  </figure>
  <figure class="m_original">
    <img src="https://telegra.ph/file/d32e1d558b7d10886776a.png" width="522" />
    <figcaption><strong>&quot;б1&quot; - набор из двух несвязанных разделителей. &quot;б&quot; и &quot;1&quot;. </strong></figcaption>
  </figure>
  <p></p>
  <p>Выходит, что когда нам необходимо в качестве разделителя использовать некую строку, то используем метод РазложитьСтрокуВМассивПодстрок(). Ведь платформенный СтрРазделить() сработает иначе.<br /><br /></p>
  <p>Так же интересная особенность. Если в этот параметр передать пустую строку, то СтрРазделить() вернёт массив с одним элементов (всей строкой). А РазложитьСтрокуВМассивПодстрок() уйдёт в небытие...</p>
  <p><br />3 . <strong>&lt;ВключатьПустые&gt; и &lt;ПропускатьПустыеСтроки&gt; </strong><br /><br />Параметр хоть и схож, но, снова, не полностью идентичен. </p>
  <p>Платформенный метод имеет два положения: Ложь или Истина. Либо результат метода будет содержать пустые строки, либо нет. </p>
  <p>В то время, как метод БСП имеет чуть более расширенный функционал, а именно:</p>
  <blockquote><code>Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией:<br />   - для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки включаются в результат.<br />   - если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в случае разделителя-пробела результатом функции будет массив, содержащий одно значение &quot;&quot; (пустая строка), а при других разделителях результатом функции будет пустой массив.</code></blockquote>
  <p><br />Получается, если не передать параметр, то БСП сама решит догадаться, нужно ли сохранять пустые элементы или нет. По мне так, если нет необходимости, лучше всегда указывать конкретно логику, чтобы и самому не путаться и не путать других. </p>
  <p></p>
  <p><strong>4. &lt;СокращатьНепечатаемыеСимволы&gt;<br /></strong><br />Данный параметр есть только в РазложитьСтрокуВМассивПодстрок(). <br />Всё просто - нужно ли к каждому элементу массива применять СокрЛП (избавлять слева и справа всякие пробелы и переносы строк).</p>
  <p>СтрРазделить() этого делать не умеет. Однако, замеры скорости показывают, что быстрее будет обойти циклом результат СтрРазделить(), чем использовать РазложитьСтрокуВМассивПодстрок().</p>
  <p></p>
  <h2><strong>Какие выводы?</strong></h2>
  <p>В большинстве случаев при помощи СтрРазделить() можно сделать тоже самое, что и РазложитьСтрокуВМассивПодстрок(). В таких случаях нужно применять платформенный метод. Но:</p>
  <ul>
    <li>Когда необходимо использовать разделитель, состоящий из строки, а не одного символа, берёмся за РазложитьСтрокуВМассивПодстрок()</li>
    <li>Когда необходимо, чтобы элементы результата были обработаны СокрЛП(), делаем это сами постобработкой. Так будет быстрее.</li>
  </ul>
  <p></p>
  <p>Понять особенности методов будет полезно на практике. Но помнить не обязательно. Можно вместо этого использовать обёртку на подобии:</p>
  <p></p>
  <pre>Функция СтрРазделитьРасширенная(Строка, Разделитель = &quot;,&quot;, ВключатьПустые = Истина,
	СокращатьНепечатаемыеСимволы = Ложь, РазделительЕдинойСтрокой = Истина) Экспорт

	Если РазделительЕдинойСтрокой = Ложь ИЛИ СтрДлина(Разделитель) = 1 Тогда

		Результат = СтрРазделить(Строка, Разделитель, ВключатьПустые);
		Если СокращатьНепечатаемыеСимволы Тогда
			Для Индекс = 0 По Результат.Количество()-1 Цикл
				Результат[Индекс] = СокрЛП(Результат[Индекс]);
			КонецЦикла;
		КонецЕсли;

	Иначе

		Результат = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(
		Строка, Разделитель, НЕ ВключатьПустые, СокращатьНепечатаемыеСимволы);

	КонецЕсли;        

	Возврат Результат;

КонецФункции
</pre>
  <p></p>
  <hr />
  <p><a href="https://t.me/JuniorOneS" target="_blank">Больше про 1С...</a></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@juniorones/Bk3zCfH0N</guid><link>https://teletype.in/@juniorones/Bk3zCfH0N?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=juniorones</link><comments>https://teletype.in/@juniorones/Bk3zCfH0N?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=juniorones#comments</comments><dc:creator>juniorones</dc:creator><title>Подсказываем контекстной подсказке 1C</title><pubDate>Wed, 05 Jun 2019 10:55:32 GMT</pubDate><media:content medium="image" url="https://teletype.in/files/cc/cc994037-9c5e-42cb-8a78-ac0ca870417b.png"></media:content><category>Лайфхаки</category><category>Код</category><description><![CDATA[<img src="https://telegra.ph/file/5e6001e4c83cf71599b4c.png"></img>#Лайфхаки #Код #РедакторКода]]></description><content:encoded><![CDATA[
  <p>#Лайфхаки #Код #РедакторКода</p>
  <p><em><a href="https://t.me/JuniorOneS" target="_blank">https://t.me/JuniorOneS</a></em></p>
  <p>Очень удобно пользоваться контекстной подсказкой в редакторе кода. Особенно новичкам, которые ещё не успели нагуглиться настолько, что все названия методов и свойств уже окончательно укрепились в голове.</p>
  <p>Однако, платформа не всегда знает типы тех или иных переменных, отчего и не может раскрыть нам всю их подноготную. Например, когда это входной параметр текущей процедуры. Или же значение переменной - результат выполнения другого метода. </p>
  <p>В таких случаях, для удобства разработки, можно сделать <em>фейковое</em> присвоение. Мы говорим платформе, что в данной переменной будет значение указанного типа. </p>
  <p>Такой код, естественно, нужно использовать очень осторожно и не оставлять в конечной версии продукта. Но как небольшую хитрость, позволяющую сэкономить время и силы, можно запомнить. </p>
  <figure class="m_custom">
    <img src="https://telegra.ph/file/5e6001e4c83cf71599b4c.png" width="702" />
    <figcaption><strong>Фейковое присвоение параметров процедуры</strong></figcaption>
  </figure>
  <figure class="m_custom">
    <img src="https://telegra.ph/file/bcb7f2f3bc5f8f14fd06b.png" width="512" />
    <figcaption><strong>Фейковое присвоение переменных в процедуре</strong></figcaption>
  </figure>

]]></content:encoded></item></channel></rss>