Как перевернуть строку 1с

Обновлено: 03.07.2024

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

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

Функция форматирования СтрШаблон()

<Шаблон> - это строка, в которую нужно подставить представления параметров.

<Значение1> , . <Значение10> - это параметры (максимально - десять), представления которых нужно подставить в строку.

Чтобы указать конкретное место в шаблоне, в которое нужно выполнить подстановку, нужно использовать маркеры вида %1, . %10. Количество маркеров, задействованных в шаблоне, и количество параметров, содержащих значения, должны совпадать.

Например, результатом выполнения такого оператора:


Ошибка в данных в строке 2 (требуется тип Дата)

Функция работы со строками СтрСравнить()

Эта функция сравнивает две строки без учёта регистра. Например, так:


Это же действие вы могли выполнить и раньше с помощью объекта СравнениеЗначений:


Однако использование новой функции выглядит более простым. А кроме этого функция, в отличие от объекта СравнениеЗначений, работает и в тонком клиенте, и в веб-клиенте.

Функции работы со строками СтрНачинаетсяС(), СтрЗаканчиваетсяНа()

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

Например, их удобно использовать в операторе Если:


Функции работы со строками СтрРазделить(), СтрСоединить()

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


Функция работы со строками СтрНайти()

Вместо старой функции Найти() мы реализовали новую функцию, которая имеет дополнительные возможности:

  • Поиск в разных направлениях (с начала, с конца);
  • Поиск с указанной позиции;
  • Поиск вхождения с указанным номером (второе, третье и т.д.).

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

Ниже приведён пример, использующий новые возможности поиска. Поиск в обратном направлении удобен тогда, когда вам нужен последний фрагмент формализованной строки, например, полное имя файла в URL. А поиск с указанной позиции помогает в тех случаях, когда нужно искать в известном фрагменте, а не во всей строке.

Задача такова что необходимо поменять местами Колонки со Строками. Условие Первая колонка значений это название колонок будущей таблицы значений.

Минус ы :
1.того что имя колонок первоначальных не видно.
2. Значение исходной таблицы первой колонки должны быть типизированны для название колонок.

P.S. Может поможет кому ;-)

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

Electronic Software Distribution

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

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

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

54-ФЗ

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

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

Молодец. Давненько сталкивался с подобным, просто повернуть таблицу на 90 градусов, некий аналог.

Чего-то циклов много. код не очень . можно при обходе колонок сразу значения добавлять (имхо). навскидку

Для Каждого Колонка Из Тз.Колонки Цикл
СтрокаРезультат = ТаблицаРезультат.Добавить();
Строка = Тз.ВыгрузитьКолонку(Колонка);
i = 0;
Для Каждого Эл Из Строка Цикл

СтрокаРезультат[i] = Эл;
i=i+1;
КонецЦикла;
КонецЦикла;

Примерно. естественно count i надо убрать и можно придумать получше.
. похоже все это на транспонирование матрицы.

(2) поворот таблицы на 90 градусов и есть транспонирование. Транспонирование матрицы - частный случай. (3) да, я знаю, просто намекнул, что переворот как-то не звучит, а транспонирование сразу ясно.

cool.vlad4 пишет:
Чего-то циклов много. код не очень . можно при обходе колонок сразу значения добавлять (имхо). навскидку

Для Каждого Колонка Из Тз.Колонки Цикл
СтрокаРезультат = ТаблицаРезультат.Добавить();
Строка = Тз.ВыгрузитьКолонку(Колонка);
i = 0;
Для Каждого Эл Из Строка Цикл

СтрокаРезультат[i] = Эл;
i=i+1;
КонецЦикла;
КонецЦикла;

Примерно. естественно count i надо убрать и можно придумать получше.
. похоже все это на транспонирование матрицы.


Нельзя сначало строки надо подготоваить, пробывал сам посмотри отладчиком. (5) В смысле строки надо сначала готовить?
Зы Ну и посмотрел отладчиком и что? cool.vlad4 пишет:
(5) В смысле строки надо сначала готовить?
Зы Ну и посмотрел отладчиком и что?
Если в ТЗ строк нету , то у меня почему то не может загрузить данные в колонку в новой ТЗ2 Тоесть если стереть
Для каждого стр из Тз.Колонки Цикл
ТЗ2.Добавить();
КонецЦикла;
Тогда ничего не получиться

Транспортировка таблицы значений это круто :D . (8) Да, нет же стирать не надо просто код в этот же цикл и писать, и можно от лишнего цикла избавится. например так

Функция ПеревернутьТЗ(ТЗ)
ТЗ2 = Новый ТаблицаЗначений;
Массив=Тз.ВыгрузитьКолонку(Тз.Колонки[0]);
//Имена колонок, не советую так делать кстати
Для Каждого Значения ИЗ Массив ЦИКЛ
ЗН=ВРег(СокрЛП(Значения));
ТЗ2.Колонки.Добавить(Значения);
Конеццикла;
count = ТЗ2.Колонки.Количество();
Для каждого стр из Тз.Колонки Цикл
Строка = ТЗ2.Добавить();
СтрокаИсточник = Тз.ВыгрузитьКолонку(стр);
Для m=0 По count-1 Цикл
Строка[m]=СтрокаИсточник[m];
КонецЦикла;
КонецЦикла;
Возврат ТЗ2;
КонецФункции

Задача такова что необходимо поменять местами Колонки со Строками. Условие Первая колонка значений это название колонок будущей таблицы значений.
Исходная таблица:
Индекс Колонка1 Колонка2 Колонка3 Колонка4
0 "Тип11" "Тип21" "Тип31" "Тип41"
1 "Тип12" "Тип22" "Тип32" "Тип42"
2 "Тип13" "Тип23" "Тип33" "Тип43"
3 "Тип14" "Тип24" "Тип34" "Тип44"
4 "Тип15" "Тип25" "Тип35" "Тип45"

Полученная таблица:
Индекс Тип11 Тип12 Тип13 Тип14 Тип15
0 "Тип11" "Тип12" "Тип13" "Тип14" "Тип15"
1 "Тип21" "Тип22" "Тип23" "Тип24" "Тип25"
2 "Тип31" "Тип32" "Тип33" "Тип34" "Тип35"
3 "Тип41" "Тип42" "Тип43" "Тип44" "Тип45"
Минусы :
1.того что имя колонок первоначальных не видно.
2. Значение исходной таблицы первой колонки должны быть типизированны для название колонок.
Код 1C v 8.х

Разместил: E_Migachev  Версии: | 8.x |  Дата: 20.05.2011   Прочитано: 19318

Распечатать

Похожие FAQ

Еще в этой же категории

Как быстро вывести таблицу значений в табличный документ?  88
ТекстЗапроса = " ВЫБРАТЬ * ИЗ Справочник.Пользователи" ; ЗапросаДанных = Новый Запрос(ТекстЗапроса); РезЗапроса = ЗапросаДанных.Выполнить().Выгрузить(); ТабДокумент = Новый ТабличныйДокумент; Построитель = Новый Построит Создание Таблицы значений и описание типов значений ее колонок  28
ТаблицаПериодов = Новый ТаблицаЗначений; ТаблицаПериодов.Колонки.Добавить("НомерСтроки", Новый ОписаниеТипов("Число")); ТаблицаПериодов.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.СотрудникиОрганизаций")); ТаблицаП Удаление строк Таблицы Значений  27
// 1. Удаление строк согласно условию НулевыеСтроки = ТаблицаПослеПодмен.НайтиСтроки(Новый Структура(" Сумма" ,0)); Для каждого СтрокаТаблицы Из НулевыеСтроки Цикл ТаблицаПослеПодмен.Удалить(СтрокаТаблицы) КонецЦикла; // Нужно оставить стр Как скопировать, выгрузить данные из одной таблицы значений в другую?  11
Как скопировать или выгрузить данные из одной таблицы значений в другую таблицу значений? 1. Добавление, копирование строк из одной таблицы значений в другую таблицу значений: Для каждого СтрокаТЗ Из Таблица1 Цикл ЗаполнитьЗначенияСвойств(Таблица Объединение 2 таблиц значений  10
// Объединить 2 таблицы значения // тзОсновная - таблица к которой будут изменяться данные // тзПрисоединяемая - таблица из которой будут браться данные // стОтборОдинаковых - стурктура со списком полей по которым определяеться одинаковость запис Посмотреть все в категории Работа с Таблицей Значений

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