1с как строку преобразовать в структуру

Обновлено: 06.07.2024

Объект Структура создается с помощью конструктора Новый.

Структура1 = Новый Структура;

Со структурами можно работать и в серверном и клиентском контексте, причем в клиентском контексте с ними можно работать как под толстым клиентом, так и под тонким клиентом.
В значения структуры можно записать переменные любого типа, но использование типов в этом случае очень сильно зависит от контекста и от вида клиента: мы не можем в клиентском контексте задать значение, тип которого работает только в серверном контексте (например, ДокументОбъект.<>).

Как создать новую структуру, Вы знаете, теперь выясним, как создаются новые элементы данного объекта. Делается это с помощь метода Вставить.

Вот его синтаксис:

Вставить(<Ключ>,<Значение>);

Параметр Ключ имеет тип значения Строка. Он может иметь любое название, какое захочет разработчик (но помним про ограничения в названиях переменных). Параметр Значение может иметь любой тип.

Обращаю Ваше внимание, что связка «Ключ и значение» уникальна, поэтому если Вы напишете для одной структуры два метода Вставить с одинаковыми ключами и разными значениями, то все равно в структуре будет одна связка «Ключ и значение», причем значение возьмется с последнего метода.

Не всегда обязательно использовать метод Вставить, чтобы добавить пару КлючИЗначение в структуру, иногда это можно сделать в конструкторе. Тогда конструктор будет иметь следующий вид:

Структура1 = Новый Структура(Ключ, Значение);

Переделаем предыдущий пример:

В случаях выше мы не стали думать над названиями ключей, Вы же в процессе работы можете давать ключам любые названия, какие захотите. Главное, чтобы тип ключа был Строка.

В структуру можно записывать не только примитивные типы, но также любые другие объекты «1С:Предприятия», вплоть до других структур. Причем значения типов разных ключей структуры могут быть разными.

Структура 1С в отладке

Если мы посмотрим в отладке конфигуратора на нашу структуру, то увидим, что она представляет собой некоторый список, где напротив каждого ключа есть то значение, которое мы привязали к данному ключу с помощью метода Вставить. Этот ключ является свойством структуры как объекта, и мы можем обращаться к нему.

Изменить значение ключа структуры 1С

Если нам необходимо изменить значение какого-нибудь ключа, то мы, используя метод Вставить, указываем в качестве первого параметра ключ, значение которого хотим поменять, а в качестве второго параметра новое значение для данного ключа.

Или напрямую обращаемся к ключу

Обход коллекции структуры 1С

Обход структуры осуществляется с помощью оператора цикла Для каждого…Цикл.

Обойдем уже созданную структуру.

Обход коллекции структуры

Безошибочное получение значения элемента

Если при обращении к ключу структуры Вы укажете название несуществующего в данной структуре ключа, то программа выдаст ошибку. Но есть метод объекта Структура, с помощью которого можно обратиться к значению ключа, не боясь вызвать ошибку в случае промаха.

Этот метод – Свойство.

Данный метод является функцией и возвращает Истину, если указанный ключ есть, и Ложь, если указанного ключа нет.

Рассмотрим синтаксис метода:

Свойство(<ИмяКлюча>,<ЗаписываемоеЗначение>);

В параметр «ЗаписываемоеЗначение» будет возвращено найденное значение. В том случае, если ключа нет в структуре, то данному параметру присвоится значение Неопределено. Обращаю Ваше внимание, что параметр «ЗаписываемоеЗначение» где-то должен быть определен.

В переменную А запишется значение, которое связанно с Ключ1.

Но если мы напишем так.

То ни какой ошибки не возникнет, и в переменной А присвоится значение Неопределено.

Статьи о других универсальных коллекциях значений в 1С


Отличное пособие по разработке в управляемом приложении 1С, как для начинающих разработчиков, так и для опытных программистов.

  1. Очень доступный и понятный язык изложения
  2. Книга посылается на электронную почту в формате PDF. Можно открыть на любом устройстве!
  3. Поймете идеологию управляемого приложения 1С
  4. Узнаете, как разрабатывать управляемое приложение;
  5. Научитесь разрабатывать управляемые формы 1С;
  6. Сможете работать с основными и нужными элементами управляемых форм
  7. Программирование под управляемым приложением станет понятным


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Посмотрите в сторону процедуры РазложитьСтрокуВМассивПодстрок() как писал mymyka, есть в каждой типовой конфигурации или в БСП. Применив к Вашей строке указанную функцию с разделителем " " получите массив слов с индексами соответствующими порядку этих слов в переданной строке. А дальше хоть в свою структуру вставляйте хоть что делайте.

PS Пока 1=1 Цикл, лучше уж заменить на Пока Истина Цикл.

(8) SPID, да можно наверное через стурктуры сразу сделать?
все равно нужно как то суметь сопоставить индексы массива и ключики структуры, тоесть если значение пусто, то в массиве уже 9 значение а не 10 как нудо и как тут сопоставить? В строке как то можно понять что пропущено какое-то слово, например будет три пробела подряд или что то еще?

(10) SPID, строка такая

думаю файлик надо через excel читать, а так как срока через текстовый не получится(((,
поскольку если номер пустой = то сдвигает все поля, а хотя может посчитать количесово пробелов и задать условие?

Пробел то тут судя по всему один, как узнать что пропущено было значение хз. не понятно чем Excel поможет тут (12) SPID, смотрите ссылку на фото - так яснее гораздо. Фишка в том, что если поле номер пусто, то количество пробелов там=
= 22 символа (пробела). Так может задать условие что если количество в строке более или равно 22 пробела то это тоже как поле.
Но как такое реализовать? (13) реализовать такое не проблема. пишите условие, что если не 22, ну и т.п. Дело не в этом, а в том, чтобы сделать это все нормально работающим. Но если у вас файл не имеет строгой разметки, то как-то сомнительно, что все будет нормально работать. Где гарантия, что будет всегда 22 пробела? Мой совет: данные получайте другим путем(другого формата) . Ну и также можно попробовать считать это файл как текстовый с разделителями через ODBC, но думаю это не вариант. Можно резать от строки уже записанные реквизиты и проверять разницу между СокрЛ(СтрДлина(ОстатокСтроки)) и СтрДлина(ОстатокСтроки). Если вариант с СокрЛ сильно короче, значит был пропущен реквизит, причем пофиг сколько там было пробелов. Пишем в структуру значение текущего реквизита = "", режем ОстатокСтроки до СокрЛ(ОстатокСтроки) и переходим к следующему ключу структуры. Manticor, можете сюда скопировать разбираемую строку? Есть подозрение, что они у вас одной длины все, просто каждое поле начинается со своей стьрого фиксированной позиции. Если это так, можно изобразить нечто вроде:
Стр=НашаСтрока;
Стр1=Сред(НашаСтрока,1,4);
Стр2=Сред(НашаСтрока,8,10);
и т.д.
.
НашаСтруктура.F=Стр1;
НашаСтруктура.Ква=Стр2;
.
Возврат НашаСтруктура; (16) Шапокляк, + 000A0002 3 NET 16.10.2012 09:09:38 00:00:44 88412558752 Внут 12
вот взял из отладчика, как видно после времени 22 пробела
(15) mymyka, можете в коде указать?

так же можно посмотреть все туже функцию РазложитьСтрокуВМассивПодстрок, там есть параметр ПропускатьПустыеСтроки и если его передать в Ложь то строка типа
"поле1 поле2 поле3 поле4"
При вызове РазложитьСтрокуВМассивПодстрок(МояСтрока," ",Ложь) вернет массив где
"поле1"
"поле2"
" "
" "
" "
"поле3"
" "
"поле4"

Ну а дальше массив в цикле обходим, и если встретили не заполнено значение, значит что то пропущено. ищем следующее заполненое.

(17) SPID, а это в какой конфе смотрите. Я вот смотрю из БП 2.0 и там не 3 параметра((
эх пробелы убрало в тестовой строке, вообщем там между поле2 и поле3 4 пробела, а между поле3 и поле4 2 пробела Набросал примерно код, сам не проверял работоспособность

Функцию можно посмотреть, например, в конфигурации Документооборот

(21)К сожалению, при 22 пробелах она создаст 22 элемента, а нужен только один.
Для примера,
МассивСтрок = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("123 234пять_пробелов567", " ",Ложь); возвращает массив из 8 элементов.

(23) mymyka, Поле объекта недоступно для записи (Значение)
КлючИЗначение.Значение = Сред(Стр,1,Поз) (23) mymyka,
Верно, и эти пробелы пропускаем при обходе массива в цикле.
Кстати если будет пропущено подряд два показателя, то работать не будет. Надежнее вариант это конечно изменение формата файла на более удобочитаемый для программ. (25) SPID, Ошибка при вызове метода контекста (Вставить)
МассивСтрок.Вставить(СоответствиеКлючаПоказателю.Получить(Показатель),Подстрока);
сначало все хорошо вставляет в структуру, потом сыпится с таокй ошибкой добавил в (23) рабочий пример. Правда к двум подряд пропущенным параметрам оно тоже не устойчиво, что несомненно минус, хотя можно сравнить длину "пробельной" части с максимальной длиной параметра и сделать вывод, если она больше, значит пропущено 2 параметра подряд(что делать с трем и больше я хз). А вообще идеально было бы вывести другой разделитель и не парить мозг.
З.Ы. (21) поизящнее, конечно, выглядит :Р (23) mymyka, да с такой строкой все хорошо проходит))
а если вот как из файла тянет попробовать ))

может формулу расчте поменять?
В моем случае двух пустых подряд параметров быть не может)), только номер.
(21) так не прокатывате, поскольку при разных строках разное количество параметров получается для сопоставления

юзайте СтрЗаменить(строка, разделитель, Символы.ПС)

получите многострочную строку, сокрЛП на неё и проверку на пробелы.. дальше обычный цикл с переброской в массив или структуру

Да, мой код будет некорректно работать(( так как между значениями идущими подряд так же несколько пробелов.
Формат файла видимо фиксированный по количеству символов, выложи файл (или его часть с несколькими строками. Все же придется считать пробелы. (30) SPID, по идее ваиант предложенный (23) mymyka - работает, но что то с подсчетом пробелов - косячит(также смещает, если брать строку из файла) Из файла видно, что каждый показатель начинается с определенного символа в строке, кроме трех последних показателей, поэтому можно попробовать сделать так:
(32) SPID, как оказалось все гениальное - просто)), тоесть лучше всего было задат каждому параметру свою длинну = так проще разбить не заморачиваясь с лишними пробелами и их вычислениями)) (32) SPID, а можете еще с нюаном подмоч) нужно еще номер разложить, тоесть если у нас номер вида 1111[2222], то их на 2 параметра делим номер1 =1111, номер 2= 2222

(34) Manticor,
Для подстроки с номером вызвать опять РазложитьСтрокуВМассивПодстрок(ПодстрокаСНомером,"[")
Проанализировать сколько элементов массива получили, если один то его и берем, второй части нет, если более одного, то первый это Номер1 , второй это Номер2, в Номер2 делаем СтрЗаменить(Строка, "]", "") и все

PS а если в массиве 0, то нет номеров.

(37) Manticor, вот как то такое условие добавил по пказателю(дабы все жестко задано)


если номер пуст - то сдвигает все((, а так при заполненном номере работает.
то что неопределенное значение в структуру вставляю - потом на создании документа с таким значением как
может отразиться? Или тут как то по другому можно было?

(38) Manticor,
Про Неопределенно нечего страшного, при присваивании в какой-либо типизированный атрибут документа неопределенно автоматически преобразуется в пустое значение указанного типа, с атрибутами составного типа тоже все нормально - там неопределенно так и будет.

По поводу алгоритма не совсем ясно, если CallerID будет отсутствовать в строке " 88412558752[] Внут 0", то получается неверно отработает алгоритм:
Итерация цикла 1 заполнит значения Номер1 = "88412558752"; Номер2 = "". Итерация цикла 2 заполнит CallerID1 = "Внут "; CallerID1 = неопределенно. Итерация цикла 3 заполнит Dir = "0"; DirEx = неопределено.

Протестируйте, может я где то ошибся.

Отсутствовать может только CallerID? Не самый хороший вариант, но. так как CallerID числовой, а за ним идет текстовый показатель, то может попробовать преобразовать к числу. преобразовалось - это CallerID.

Всем привет. Может быть для большинства это покажется банально, но я для себя недавно открыл новую функцию преобразования таблицы значений в массив структур без перебора коллекции колонок для каждой строки строки таблицы. Вот как выглядит стандартное решение, которое в большинстве случаев есть в интернете и на самом Инфостарте:

А вот более аккуратное и красивое решение этой задачи:

Преимущество очевидно. И хотя это решение присутствует в типовых конфигурациях, я мало где видел что бы его использовали вне разработки типовых решений.

Всем удачи. Может, кому пригодится.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Определённые преимущества и даже быстродействие таки есть. (1)откуда быстродействие? 1С сама себя подхлестывать стала? На доли секунды увеличите производительность если уберете условие НужнаЗапятая:
(2)это если только "секунды" измеряются во вращениях электрона вокруг протона )) getnight; maksa2005; BigB; Evg-Lylyk; PowerBoy; oleganatolievich; GG_Dots; + 7 – Ответить Да, как вариант собрать колонки таблицы значений в массив и через "СтрСоединить" закинуть их в строку. + Открытие века. Просто прям без комментариев. интересно, теперь каждый новичок, открывший для себя нечто офигительное, что на самом деле сто лет как общеизвестно и относится к базовым навыкам, будет теперь радостно постить на ИС? Типа личный дневничок? Так, что ли? Вообще не понимаю, куда смотрят модераторы и какова ценность подобных, кхм, "публикаций". ktb; ojiojiowka; AlexO; SerVer1C; BigB; ershuevD; wowik; oleganatolievich; + 8 – 4 Ответить

(5)Скажи спасибо что я не сделал обработку за 1 стартмани, которую ты бы купил. На инфостарте сидят не только такие гуру 1с - как ты. Иначе бы от силы здесь было бы только 100 человек, среди которых ты бы и писал такие обработки.

Эта информация не несет никакой коммерческой цели - и если это пропустили модераторы, значит все соответствует правилам. А ты просто очередной нытик, который всем не доволен.

Давай на инфостарте оставим только супер разработки, и я уверен что посещаемость его в разу понизится, что не выгодно владельцам сайта. Как раз такие посты и несут большую часть трафика на сайт.

likov2001; lsnr; user717534; user785225; Santa1; KoC_one; Flok; ДимокШ; jaroslav.h; Anchoret; Ivanov_OM; pavlov_dv; 1serger; json; + 14 – 1 Ответить (7) Давай тогда так. Инфостарт, по крайней мере когда я сюда пришёл, позиционировался как сообщество профессионалов. Которые делают серьёзные вещи и публикуют их. А не как песочница для начинающих ламеров и нубов, уронивших планку настолько ниже плинтуса, что 1С-ников за программистов не считают. Ты - именно такой "пионэр". Это не публикация, а детский восторг, что баночка с пюре открывается, если крышечку покрутить. И если ты не заметил, то моя претензия касалась позиционирования ИС в наше время, когда в погоне за "трафиком на сайт" сюда пришли те, для кого "Сообщить("Привет, мир");" уже открытие. А ты перешёл на личности. Следовательно, ты не просто начинающий ламер, а ещё и хамло. Klainor; FatPanzer; ktb; ojiojiowka; AlexO; maksa2005; Anchoret; SerVer1C; BigB; ershuevD; wowik; oleganatolievich; + 12 – 4 Ответить

(8)Согласен - я нахамил тебе лично, сказав что ты "нытик"! Может быть я не прав. Именно так и делают, те, кто ноет что инфстарт уже не тот, а раньше было и лучше и т.д. Может это и так - но ныть об этом не стоит. Ничего от этого не изменится.

Но ты не далеко от меня ушел - если судишь о моих достижениях в 1с, только по одному посту. Это тоже говорит о недалеком твоем разуме.

Ну ладно, в любом случае не хотел тебя задеть. Хорошего дня!

(10) Принято. А насчёт "судишь" - каков наезд, такова ответка.

Достижения? Ну давай тогда, расскажи мне об особенностях работы "ЗаполнитьЗначенияСвойств", т.к. их дофига.

(12) Ну ты просто по одному моему посту решил, что я "ламер". Ладно то что я хам - это ты сделал правильный вывод. Теперь пытаешься мериться знаниями по особенностями процедур и функций? Я думал мы закрыли эту тему.

Это ни к чему не приведет, как минимум к хорошему.

(20) ну я сам тот ещё хам, не спорю, но. Я не "меряюсь", я предлагаю привнести полезность в эту, мягко говоря, не очень содержательную публикацию.

(21) Если честно я думал о том, что бы не включать комментарии при оформлении этой статьи - ну отхватила бы статья пару сотен минусов и все. Но комментарии оказывается крутая штука).

"Особенности - ЗаполнитьЗначенияСвойств" - уверен если сделать такую публикацию, то найдется так же пул людей, которые напишут что это очередной бред из БСП и будут предлогать внести полезность в неё).

(25) ну вот не надо про "бред из БСП", там в комментарии, процитированном коллегой из БСП, даже оговорено, чего НЕ стоит пихать в ЗаполнитьЗначенияСвойств. А вообще штука это неоднозначная, и многие юзают её, не вполне понимая подводные камни. Если бы у меня было время, написал бы. Как я тогда проспорил и вынужден был написать про баян-баянистый, про таблицу значений))) (28) перестань комментарии свои "содержительные" писать и сможешь собрать время на статью по ЗаполнитьЗначенияСвойств. Как ты задолбал своим поносом. Вот же наглая самоуверенная сущность.

ахахаха!
модуль ОбщегоНазначения в ERP:

даже названия переменных те же.

e-9; fixin; ktb; Xershi; ojiojiowka; Albert_2008; BigB; ershuevD; wowik; 1serger; Yashazz; + 11 – Ответить (9) Что не так? я же написал, что функция из типовых конфигураций? Код 1с вызывает у тебя смех? (11) тебе (. ) больше постить нечего, кроме как куска типовых? это и вызывает смех. (11) плюс еще посмотри как красиво код написан?
Зачем было уродовать его заменой названий переменных?

Код 1С-центральной. а равно и Раруса, уже давно вызывает истерический смех. Они собственные стандарты даже близко не соблюдают.

А что касается публикации, то - не сочтите за наезд, но ещё в 20-лохматом году это было методической рекомендацией разработчикам, лежавшей на сайте ИТС. Так что как бы не припахали плагиат, часом)

(14) С чего все решили, что я выложил это как свою разработку).
Нигде об этом не сказано. В интернете везде лежит типовое решение через перебор колонок для каждой строки. Я решил выложить решение немного оптимальнее, которое нашел у себя в типовой конфигурации. Я уверен что наличие этого решения на этом сайта - увеличит грамотность интернет-населения по 1с.

Давайте, я изменю название функции и переменные, плюс поменяю местами их. Так всем будет лучше?:)

(16) Да с того, что это принцип публикации на ИС)))

не, ну если с позавчера разрешено постить куски кода типовых конфиг, или материалы ИТС, наплевав на авторские права 1С, то чур я первый, мне есть что выложить)

(17)Материалы с ИТС давно постят. Особенно по внедрению БСП. (18) ничего плохого в этом не вижу. За счет этого инфостарт и набирает популярность! И в выдаче в поисковиках их вес увеличивается. Для сайта одни плюсы!

(17) Да я тебе даже плюсану - если смогу это использовать в своих решениях.

Когда программисту нужно что-то сделать, то 90 процентов никогда не полезут смотреть ни типовые решения в конфигурациях, ни в БСП, ни в справку. Они идут в яндекс - и там первая ссылка это никогда не сайт итс с идеальным решением, а куча сайтов и форумов, в том числе которых инфостарт. И даже на нем, не всегда эстетичные решения предоставлены.

Кстати, все другие способы преобразовать таблицу в массив, не связанные с тупым циклом, оказались более времязатратными. В своё время делал xml-сериализацию с обработкой текста (и регулярками, и просто "СтрЗаменить", и через xslt), и увы, всё это думает дольше, иногда в разы дольше, нежели простой перебор по строкам. Печаль) (15) xslt преобразования используются в типовых. прикольная тема.
кстати, как-то замерял скорость сериализации через значениевстрокувнутр, json, xml.
по скорости получилось
значениевстрокувнутр < json (несильный отрыв) < xml (отрыв почти в 1,5 раза) (19) Да, да. Тоже играл с этим. Ничего хорошего не вышло. Обратная десериализация жрёт очень много времени. В своё время делал xml-сериализацию с обработкой текста обработка текста в 1С вообще ниже 0. Т.е. ты еще и должен остаешься. (15) Если гнаться за быстродействием, то выгрузка ТЗ в Структуру массивов будет явно быстрее и меньше по объему. Автор зарабатывает на комментариях ;) плюс ему в копилку)
(91) наиболее близкое к идеалу решение
П.С. вроде как кто-то из местных выяснил, что цикл, расположенный в одну строку, на больших объёмах даёт некоторое преимущество
(22) Это из тех дремучих времён, когда СтрСоединить ещё не было. БСП не всю актуализируют. А некоторые из неё выдирают, даже не подумав, и копипастят) (24) Зря ты ввязался в эту тему с нравоучениями.
Каждый должен открыть свою Америку сам.
Все-таки ИС для тех, кого больше.

(37) да тоскливо стало просто.
Понимаешь, мы открывали свою америку сами, и не постили каждую открытую ерундовину на публичные ресурсы. Да и ресурсов таких было в разы меньше - Т1С, ИтЛанд, Миста, Кубань. Хотя на Мисте можно было задать совершенно ламерский вопрос и среди 10 наездов был один конструктивный ответ. А теперь всё превратилось в песочницу. Где можно вот так взять и запостить на уровне, далеком даже от девтрейна. И все будут радоваться.

(47) Это называется время. Мой дед говорил - вот раньше все познавали без ваших интернетов. Теперь вы говорите - вот раньше все познавали без всяких ерундовых постов и т.д. Через время я скажу - эх, грустно стало - вот раньше не было такого, что вставил флэшку в голову и все закачалось, все познавалось на форумах и т.д.

Эх, было же время. просто не надо об этом говорить везде, где тебе не нравится что-то, особенно если ничего не можешь изменить.

Кстати странно - я тут нашел очень много постов похожего содержания. Почему-то там не твоих недовольных комментов. Упустил что ли?

Эх, а еще молодежь пошла дерзкая, эх вот бы назад в "Т1С, ИтЛанд, Миста, Кубань. ". Эх, эх, эх.

Кстати странно - я тут нашел очень много постов похожего содержания. Почему-то там не твоих недовольных комментов. Упустил что ли?

Недовольные были всегда. Но не я.
Я -то считаю, что ИС на 95% - народный сайт , т.е непрофессиональный. Это его предназначение и стесняться тут нечего. Я недавно выступал на Митапе. И до меня дошло , что Доржи Цыденов , организуя региональные конференции ( митапы) , "идёт к нам , в народ". Превосходное стратегическое решение .
Конференции ИС относятся к конференциям 1С также , как народные , самодеятельные театры относятся к профессиональным.

(57) Это было адресовано "моему другу" в посте повыше, ошибся веткой) (57) Я где-то что-то упустил. В своё время в декларации ИС было написано русским по белому: "сайт профессиональных разработчиков". И когда я в лохматом году пытался опубликовать нечто, содержавшее цитаты из СП и методичек, модераторы просто это не пропустили. Вообще. И фрагменты кода из типовой порезали.
Видимо, такая избирательная "народность", ага. (77)
:) Конечно, упустил.
:) Там русским по-белому , а я тебе черным по -русскому пишу. (22) Согласен, СтрСоединить в на порядок быстрее работает (26)не "на порядок", а в силу того, что СтрСоединить - сразу типизированные аргументы, а в обычной строке - 1С сначала их "разбирает" по типам.
Но в итоге все жутко тормозное хоть так хоть эдак.
Обработайте строчку в миллион символов, или около того (если 1С позволит запихать - в чем я сильно сомневаюсь).
Я вот наелся обработки текста в 1С достаточно, она с обычными то нетекстовыми данными работает через пень вокруг земного шара. (70) Я тебе больше скажу, 1С и с двоичными до странного медленно работает. Казалось бы - два буфера слить, ан думает прям как над "Войной и миром". (22)
Прошу прощения, а как получить массив Колонок из Таблица значений? Циклическое добавление название колонки в массив, а мотом передать его в функцию? Чем цикл создание строки сразу будет медленней создания нового массива?

А теперь по-серьёзке давайте. 1С, между прочим, имеет к ресурсу ИС некоторое отношение, поэтому беспредельничать не стоит. И модераторам тоже хорошо бы это помнить.

Есть такая вещь в модулях 1С, процитирую:

И там есть моменты, касающиеся указания авторства, каковых я тут в явном виде не наблюдаю.

Не говоря уже о том, что публикация на ИС может приносить прибыль, и юридически всё это может трактоваться как попытка извлечения прибыли засчёт чужой интеллектуальной собственности.

(27) Тоже не прочь услышать мнение модераторов по данному вопросу.

(27) Правильно тебе написал автор, что ты нытик.
Ты можешь спорить или возмущаться, но это только только доказывает данный факт, нравится тебе это или нет.

Если сомневаешься, то можешь перечитать свои комментарии и посчитать процент нытья в них.
А потом сделать вывод.

Даже докопаться не можешь нормально.

Почитай что ты написал.
Attribution 4.0 International (CC BY 4.0)

Прочитай внимательно лицензию, прежде чем предъявлять претензии модераторам или кому-либо еще.

(34)Вы по вашей ссылке всю страницу то прочитайте, а не только первый абзац.

При обязательном соблюдении следующих условий:

«Attribution» («Атрибуция») — Вы должны обеспечить соответствующее указание авторства, предоставить ссылку на лицензию, и обозначить изменения, если таковые были сделаны. Вы можете это делать любым разумным способом, но не таким, который подразумевал бы, что лицензиар одобряет вас или ваш способ использования произведения.

(35) Ссылка на авторство предоставлена, ссылка на лицензию - нет.
Но ты для начала поди докажи, что данный код имеет отношение к той лицензии, которую предоставил этот "умник".

Просто попытка докопаться на ровном месте.

Там кстати есть еще замечание, дочитай до конца лицензию.

(36) Замечание читал, но что считать общественным достоянием я хз)) или если такое использование вами материала разрешено согласно применимому исключению или ограничению авторских прав Корпорация Creative Commons ("Creative Commons") не является юридической фирмой, не оказывает юридических услуг или консультаций. Распространение публичных лицензий Creative Commons не порождает отношений, аналогичных отношениям между юристом и клиентом, или каких-либо иных отношений. Creative Commons предоставляет доступ к своим лицензиям и всей сопутствующей информации на основе принципа "как есть". Creative Commons не предоставляет каких-либо гарантий в отношении лицензий, любого материала, предоставляемого на условиях таких лицензий, или любой сопутствующей информации.

То есть получается, что в данном случае

Вы не обязаны действовать согласно условиям лицензии (34) Думаешь, не читал?)) Я не зря про упоминание авторства сказал. Вы должны обеспечить соответствующее указание авторства, предоставить ссылку на лицензию, и обозначить изменения, если таковые были сделаны. Вы можете это делать любым разумным способом, но не таким, который подразумевал бы, что лицензиар одобряет вас или ваш способ использования произведения

Теперь внимательно читай в публикации

Это ссылка на авторство и лицензию.
Да она не прямая, косвенная.
Но в лицензии сказано, что можно ссылаться любым разумным образом.

То есть упомянутая тобой лицензия не нарушается.
Лицензиар может потребовать явного указания, но ты не лицензиар, а просто нытик, который ищет до чего докопаться.

Так что лучшим для тебя решением было не пытаться раздуть из мухи слона.
Тем более, что в вопросе ты не разбираешься.

Я не докапываюсь. Я просто не хочу, чтобы с ИС произошло то, что давеча имело место с nginx. Там тоже долгое время всем было благодушно пофигу.

(42) Инфостарт - это не то место, где сидит душевная компания разработчиков и за чашкой чая обсуждает свои супер разработки, до которым начинающим программистам расти и расти. В первую очередь - это серьезный проект, на котором люди зарабатывают деньги. Посещаемость данного ресурса и его стоимость (лично мое мнение) сильно зависит от таких вот простых публикаций, которым по твоему мнению здесь не место. Но владельцы сайта, в том числе и модераторы, считают иначе.

И Если ты видишь вектор развития этого ресурса в другом направлении - то самое время связаться с владельцами сайта и рассказать им свои идеи. Может после этого они заблокируют сотни "бесполезных" публикаций и гуру 1с достанут свои чашечки для чая, и все будет как в старые добрые времена.

Чем тебе ОбщегоНазначения.ТаблицаЗначенийВМассив(ТаблицаЗначений) не угодила? (44) Название не понравилось. Решил с вот таким вот название здесь выложить.
Спасибо за конструктив. Хорошего дня.

Достаточно часто приходилось с сервера на клиент передавать данные из таблицы значений, но в голову не приходило гуглить, как это делать: однозначно в виде массива структур. Сначала писал сам, потом перешел на БСПшную функцию. Но чтобы в цикле по строкам каждый раз обходить циклом список колонок ТЗ. я хз, кому это могло в голову прийти.

З.Ы. ждем следующих статей)))
1) Как получить значения нескольких реквизитов объекта
2) Как сравнить Структуры с учетом вложенности

(50) ну у нас же импортозамещение идет, 1С становится все популярнее и растет число жаждущих получить вакансию 1Сника. И в этом направлении, и в традиционных языках программирования есть общая тенденция: народ жаждет уже готовое решение. И зачастую игнорируют готовые библиотеки. В данном конкретном случае вероятно кто-то где-то этот алгоритм нашел или на коленке написал, а радостный народ тут же растиражировал, не задумываясь: ну работает и ладно) (53) Да кто ж енту справку читает-то, по нонешним временам) Всем разжуй да в рот положи)

(53) Многое что есть на этом прекрасном сайте. Но это не говорит о том, что это нельзя выкладывать здесь. Или это какое-то негласное правило, о котором я не знаю?

Ну ладно согласен - твое мнение - это здесь не нужно , мое мнение - это здесь нужно . Каждый останется при своем мнении. Но итог один - эта публикация будет здесь, и возможно будет в выдаче поисковиков в топе. :) И на данной момент - плюсов больше, чем минусов)

(55) К вопросу о количестве плюсов, минусов, поощрении тупизма и прочая.

Одна гетера сказала Аристотелю: "вот ты годами учишь мальчишек, но стоит мне поманить их пальцем, и они побегут за мной, забыв тебя". Он ответил: "так ведь тебе проще - я веду их вверх, а ты вниз".

Тип «Строка» встречается во всех языках программирования. Он является примитивным, и в 1С существует много функций для работы с ним. В данной статье мы подробно рассмотрим различные способы работы со строковыми типами в 1С 8.3 и 8.2 на примерах.

регистр строки

Строковые функции в 1С

Строка

Преобразовывать к строке возможно не только примитивные типы, но и остальные, например элементы справочников, документов.

СокрЛП, СокрЛ, СокрП

В качестве входных параметров данных функций выступает переменная строкового типа. Функции удаляют незначащие символы (пробелы, переносы каретки и прочие): с левой и правой стороны, только с левой стороны, и только с правой соответственно.

Лев, Прав, Сред

Данные функции позволяют обрезать часть строки. Функция «Лев()» вернет часть строки с ее левой стороны указанной длины. Функция «Прав()» аналогично, но обрезка производится справа. Функция «Сред()» позволяет указать номер символа, с которого будет выделена строка и ее длину.

СтрДлина

Функция определяет количество символов, которые содержатся в строковой переменной.

Найти

Функция дает возможность искать в какой-либо строковой переменной часть строки. В качестве возвращаемого значения будет выступать число, которое показывает позицию начала найденной строки. Если совпадений не обнаружено, возвращается ноль.

Обратите внимание, что поиск производится с учетом регистра. Если в изначальной строке будет больше одного вхождения подстроки поиска, функция вернет начало первого вхождения.

ПустаяСтрока

Использование данной функции позволяет определить, является ли строка пустой. Незначимые символы, например, пробел, перенос каретки и другие не учитываются.

ВРег, НРег, ТРег

Получите понятные самоучители по 1С бесплатно:

Данные функции очень полезны при сравнении и преобразовании строковых переменных. «Врег()» вернет исходную строку в верхнем регистре, «НРег()» в нижнем, а «ТРег()» отформатирует ее так, что первый символ каждого отдельного слова будет с большой буквы, а все последующие с маленькой.

СтрЗаменить

Данная функция является аналогом замены в текстовых редакторах. Она позволяет подменять один символ или набор символов другим в строковых переменных.

СтрЧислоСтрок

Функция позволяет определить количество строк, разделенных переносом каретке в текстовой переменной.

Цикл, в приведенном ниже примере, пройдет три круга, так как функция СтрЧислоСтрок вернет значение 3:

СтрПолучитьСтроку

Данная функция работает с многострочным текстом так же, как и предыдущая. Она позволяет получить определенную строку из текстовой переменной.

СтрЧислоВхождений

Функция подсчитывает количество вхождений символа или подстроки в искомой строке.

Символ и КодСимвола

Эти функции позволяют получать символ по его коду в кодировке Unicode, а так же определять этот код по самому символу.

Частые задачи при работе со строками

Объединение строк

Чтобы объединить несколько строк (произвести конкатенацию) достаточно использовать оператор сложения.

Преобразование типов

Для того, чтобы преобразовать тип в строку, например, ссылку на элемент справочника, число и прочее, достаточно использовать функцию «Строка()». Функции, подобные «СокрЛП()» так же будут преобразовывать переменные в строку, но уже сразу с отсечением незначащих символов.

Обратите внимание, что при преобразовании числа в строку, программа автоматически добавила пробел, отделяющий тысячу. Для того чтобы этого избежать можно воспользоваться следующими конструкциями:

Кавычки в строке

Довольно часто вам придется сталкиваться с необходимостью указать в строковой переменной кавычки. Это может быть как текст запроса, написанный в конфигураторе, так и просто переменная. Для решения данной задачи вам достаточно установить два символа кавычек.

Многострочность, перенос строки

Для того, чтобы создать многострочный текст достаточно добавить в него символы переноса строки (Символы.ПС).

Как убрать пробелы

Для того, чтобы убрать пробелы справа или слева можно воспользоваться функцией «СокрЛП()» (а так же «СокрЛ()» и «СокрП()»):

Если после преобразования числа в строку вам потребовалось убрать неразрывные пробелы, воспользуйтесь следующей конструкцией:

Так же программисты часто пользуются ниже приведенной конструкцией, которая позволяет удалить, либо заменить на другой символ все пробелы текстовой переменной:

Сравнение строк между собой

Сравнить сроки можно обычным знаком равенства. При сравнении учитывается регистр.

Читайте также: