<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Желтый чайник 1С</title><subtitle>https://t.me/JuniorOneS

Ты на светлой стороне. 
Только настоящий джедай сможет сдержать гнев и познать Силу жёлтого программирования.</subtitle><author><name>Желтый чайник 1С</name></author><id>https://teletype.in/atom/juniorones</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/juniorones?offset=0"></link><link rel="alternate" type="text/html" href="https://teletype.in/@juniorones?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=juniorones"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/juniorones?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-05-13T23:24:48.367Z</updated><entry><id>juniorones:B1xRiVr0V</id><link rel="alternate" type="text/html" href="https://teletype.in/@juniorones/B1xRiVr0V?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=juniorones"></link><title>СтрРазделить() VS РазложитьСтрокуВМассивПодстрок()</title><published>2019-06-05T14:35:24.978Z</published><updated>2019-06-05T14:40:52.893Z</updated><category term="topic5622" label="Код"></category><summary type="html">&lt;img src=&quot;https://teletype.in/files/dd/dd7aa6ee-9d7c-4829-9fa7-9fad90ceb294.png&quot;&gt;#Сравнение #Код #РедакторКода
https://t.me/JuniorOneS</summary><content type="html">
  &lt;hr /&gt;
  &lt;p&gt;#Сравнение #Код #РедакторКода&lt;br /&gt;&lt;a href=&quot;https://t.me/JuniorOneS&quot; target=&quot;_blank&quot;&gt;https://t.me/JuniorOneS&lt;/a&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;В случаях, когда нужно разбить строку на части, чаще всего используется один из методов:&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;code&gt;&lt;u&gt;СтрРазделить()&lt;/u&gt; &lt;/code&gt;- платформенный метод&lt;/li&gt;
    &lt;li&gt;&lt;code&gt;&lt;u&gt;РазложитьСтрокуВМассивПодстрок()&lt;/u&gt; &lt;/code&gt;- функция общего модуля БСП&lt;/li&gt;
  &lt;/ol&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;Всеми рекомендуется использовать СтрРазделить(), так как это платформенный и более оптимизированный метод. Однако, при этом часто забывают, что он не полностью идентичен второму. И в некоторых случаях применить его не получится. &lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;hr /&gt;
  &lt;p&gt;&lt;strong&gt;Разберём нагляднее параметры по-порядку:&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;&lt;code&gt;СтрРазделить(&amp;lt;Строка&amp;gt;, &amp;lt;Разделитель&amp;gt;, &amp;lt;ВключатьПустые&amp;gt;) &lt;/code&gt;&lt;/p&gt;
  &lt;p&gt;&lt;code&gt;&lt;u&gt;РазложитьСтрокуВМассивПодстрок(&lt;/u&gt;&amp;lt;Строка&amp;gt;, &amp;lt;Разделитель&amp;gt;, &amp;lt;ПропускатьПустыеСтроки&amp;gt;, &amp;lt;СокращатьНепечатаемыеСимволы&amp;gt;)&lt;/code&gt;&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;ol&gt;
    &lt;li&gt;&lt;strong&gt;&amp;lt;Строка&amp;gt;&lt;/strong&gt;&lt;br /&gt;Тут всё понятно. Строка, которую нужно разделить.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;&amp;lt;Разделитель&amp;gt;&lt;/strong&gt;&lt;br /&gt;Вроде тоже ясно. Строка, которая является разделителем. &lt;br /&gt;Однако. Этот параметр оба метода используют по-разному, когда его значение больше, чем один символ.&lt;br /&gt;&lt;br /&gt;У СтрРазделить() каждый символ в параметре является отдельным разделителем. В то время как в РазложитьСтрокуВМассивПодстрок() он цельный.&lt;br /&gt;&lt;br /&gt;Разницу понять легче нагляднее на примере (для удобства исключим пустые элементы в результате)&lt;br /&gt;&lt;/li&gt;
  &lt;/ol&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/dd/dd7aa6ee-9d7c-4829-9fa7-9fad90ceb294.png&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;&amp;quot;б1&amp;quot; - цельный разделитель&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/d32e1d558b7d10886776a.png&quot; width=&quot;522&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;&amp;quot;б1&amp;quot; - набор из двух несвязанных разделителей. &amp;quot;б&amp;quot; и &amp;quot;1&amp;quot;. &lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;Выходит, что когда нам необходимо в качестве разделителя использовать некую строку, то используем метод РазложитьСтрокуВМассивПодстрок(). Ведь платформенный СтрРазделить() сработает иначе.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
  &lt;p&gt;Так же интересная особенность. Если в этот параметр передать пустую строку, то СтрРазделить() вернёт массив с одним элементов (всей строкой). А РазложитьСтрокуВМассивПодстрок() уйдёт в небытие...&lt;/p&gt;
  &lt;p&gt;&lt;br /&gt;3 . &lt;strong&gt;&amp;lt;ВключатьПустые&amp;gt; и &amp;lt;ПропускатьПустыеСтроки&amp;gt; &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Параметр хоть и схож, но, снова, не полностью идентичен. &lt;/p&gt;
  &lt;p&gt;Платформенный метод имеет два положения: Ложь или Истина. Либо результат метода будет содержать пустые строки, либо нет. &lt;/p&gt;
  &lt;p&gt;В то время, как метод БСП имеет чуть более расширенный функционал, а именно:&lt;/p&gt;
  &lt;blockquote&gt;&lt;code&gt;Если параметр не задан, то функция работает в режиме совместимости со своей предыдущей версией:&lt;br /&gt;   - для разделителя-пробела пустые строки не включаются в результат, для остальных разделителей пустые строки включаются в результат.&lt;br /&gt;   - если параметр Строка не содержит значащих символов или не содержит ни одного символа (пустая строка), то в случае разделителя-пробела результатом функции будет массив, содержащий одно значение &amp;quot;&amp;quot; (пустая строка), а при других разделителях результатом функции будет пустой массив.&lt;/code&gt;&lt;/blockquote&gt;
  &lt;p&gt;&lt;br /&gt;Получается, если не передать параметр, то БСП сама решит догадаться, нужно ли сохранять пустые элементы или нет. По мне так, если нет необходимости, лучше всегда указывать конкретно логику, чтобы и самому не путаться и не путать других. &lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;4. &amp;lt;СокращатьНепечатаемыеСимволы&amp;gt;&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;Данный параметр есть только в РазложитьСтрокуВМассивПодстрок(). &lt;br /&gt;Всё просто - нужно ли к каждому элементу массива применять СокрЛП (избавлять слева и справа всякие пробелы и переносы строк).&lt;/p&gt;
  &lt;p&gt;СтрРазделить() этого делать не умеет. Однако, замеры скорости показывают, что быстрее будет обойти циклом результат СтрРазделить(), чем использовать РазложитьСтрокуВМассивПодстрок().&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;h2&gt;&lt;strong&gt;Какие выводы?&lt;/strong&gt;&lt;/h2&gt;
  &lt;p&gt;В большинстве случаев при помощи СтрРазделить() можно сделать тоже самое, что и РазложитьСтрокуВМассивПодстрок(). В таких случаях нужно применять платформенный метод. Но:&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;Когда необходимо использовать разделитель, состоящий из строки, а не одного символа, берёмся за РазложитьСтрокуВМассивПодстрок()&lt;/li&gt;
    &lt;li&gt;Когда необходимо, чтобы элементы результата были обработаны СокрЛП(), делаем это сами постобработкой. Так будет быстрее.&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;p&gt;Понять особенности методов будет полезно на практике. Но помнить не обязательно. Можно вместо этого использовать обёртку на подобии:&lt;/p&gt;
  &lt;p&gt;&lt;/p&gt;
  &lt;pre&gt;Функция СтрРазделитьРасширенная(Строка, Разделитель = &amp;quot;,&amp;quot;, ВключатьПустые = Истина,
	СокращатьНепечатаемыеСимволы = Ложь, РазделительЕдинойСтрокой = Истина) Экспорт

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

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

	Иначе

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

	КонецЕсли;        

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

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

</content></entry><entry><id>juniorones:Bk3zCfH0N</id><link rel="alternate" type="text/html" href="https://teletype.in/@juniorones/Bk3zCfH0N?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=juniorones"></link><title>Подсказываем контекстной подсказке 1C</title><published>2019-06-05T10:55:32.457Z</published><updated>2019-06-05T10:55:32.457Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://teletype.in/files/cc/cc994037-9c5e-42cb-8a78-ac0ca870417b.png"></media:thumbnail><category term="topic253" label="Лайфхаки"></category><category term="topic5622" label="Код"></category><summary type="html">&lt;img src=&quot;https://telegra.ph/file/5e6001e4c83cf71599b4c.png&quot;&gt;#Лайфхаки #Код #РедакторКода</summary><content type="html">
  &lt;p&gt;#Лайфхаки #Код #РедакторКода&lt;/p&gt;
  &lt;p&gt;&lt;em&gt;&lt;a href=&quot;https://t.me/JuniorOneS&quot; target=&quot;_blank&quot;&gt;https://t.me/JuniorOneS&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
  &lt;p&gt;Очень удобно пользоваться контекстной подсказкой в редакторе кода. Особенно новичкам, которые ещё не успели нагуглиться настолько, что все названия методов и свойств уже окончательно укрепились в голове.&lt;/p&gt;
  &lt;p&gt;Однако, платформа не всегда знает типы тех или иных переменных, отчего и не может раскрыть нам всю их подноготную. Например, когда это входной параметр текущей процедуры. Или же значение переменной - результат выполнения другого метода. &lt;/p&gt;
  &lt;p&gt;В таких случаях, для удобства разработки, можно сделать &lt;em&gt;фейковое&lt;/em&gt; присвоение. Мы говорим платформе, что в данной переменной будет значение указанного типа. &lt;/p&gt;
  &lt;p&gt;Такой код, естественно, нужно использовать очень осторожно и не оставлять в конечной версии продукта. Но как небольшую хитрость, позволяющую сэкономить время и силы, можно запомнить. &lt;/p&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/5e6001e4c83cf71599b4c.png&quot; width=&quot;702&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Фейковое присвоение параметров процедуры&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;figure class=&quot;m_custom&quot;&gt;
    &lt;img src=&quot;https://telegra.ph/file/bcb7f2f3bc5f8f14fd06b.png&quot; width=&quot;512&quot; /&gt;
    &lt;figcaption&gt;&lt;strong&gt;Фейковое присвоение переменных в процедуре&lt;/strong&gt;&lt;/figcaption&gt;
  &lt;/figure&gt;

</content></entry></feed>