Как перевернуть строку 1с
Мы расширили набор функций, предназначенных для работы со строками. Мы это сделали для того, чтобы дать вам более развитые инструменты для разбора строковых данных. Новые функции будут удобны и полезны в технологических задачах анализа текста. В задачах, связанных с разбором текста, который содержит данные в форматированном виде. Это может быть анализ каких-то файлов, полученных от оборудования, или, например, анализ технологического журнала.
Все действия, которые выполняют новые функции, вы могли выполнять и раньше. С помощью более или менее сложных алгоритмов, написанных на встроенном языке. Поэтому новые функции не дают вам каких-то принципиально новых возможностей. Однако они позволяют сократить количество кода, сделать код более простым и понятным. А кроме этого они позволяют ускорить выполнение действий. Потому что функции, реализованные в платформе, работают, конечно же, быстрее, чем аналогичный алгоритм, написанный на встроенном языке.
Функция форматирования СтрШаблон()
<Шаблон> - это строка, в которую нужно подставить представления параметров.
<Значение1> , . <Значение10> - это параметры (максимально - десять), представления которых нужно подставить в строку.
Чтобы указать конкретное место в шаблоне, в которое нужно выполнить подстановку, нужно использовать маркеры вида %1, . %10. Количество маркеров, задействованных в шаблоне, и количество параметров, содержащих значения, должны совпадать.
Например, результатом выполнения такого оператора:
Ошибка в данных в строке 2 (требуется тип Дата)
Функция работы со строками СтрСравнить()
Эта функция сравнивает две строки без учёта регистра. Например, так:
Это же действие вы могли выполнить и раньше с помощью объекта СравнениеЗначений:
Однако использование новой функции выглядит более простым. А кроме этого функция, в отличие от объекта СравнениеЗначений, работает и в тонком клиенте, и в веб-клиенте.
Функции работы со строками СтрНачинаетсяС(), СтрЗаканчиваетсяНа()
Эти функции определяют, начинается ли строка с указанной подстроки, заканчивается ли строка указанной подстрокой. Алгоритм этих функций несложно реализовать на встроенном языке, но их наличие позволяет писать более чистый и понимаемый код. И работают они быстрее.
Например, их удобно использовать в операторе Если:
Функции работы со строками СтрРазделить(), СтрСоединить()
Эти функции разделяют строку на части по указанному разделителю. Или наоборот, соединяют несколько строк в одну, вставляя между ними выбранный разделитель. Они удобны для создания или анализа логов, технологического журнала. Например, запись технологического журнала вы можете легко разобрать на части, пригодные для дальнейшего анализа:
Функция работы со строками СтрНайти()
Вместо старой функции Найти() мы реализовали новую функцию, которая имеет дополнительные возможности:
- Поиск в разных направлениях (с начала, с конца);
- Поиск с указанной позиции;
- Поиск вхождения с указанным номером (второе, третье и т.д.).
Фактически она дублирует возможности старой функции. Так сделано для того, чтобы сохранить совместимость с модулями, скомпилированными в старых версиях. Старую функцию Найти() рекомендуется больше не использовать.
Ниже приведён пример, использующий новые возможности поиска. Поиск в обратном направлении удобен тогда, когда вам нужен последний фрагмент формализованной строки, например, полное имя файла в URL. А поиск с указанной позиции помогает в тех случаях, когда нужно искать в известном фрагменте, а не во всей строке.
Задача такова что необходимо поменять местами Колонки со Строками. Условие Первая колонка значений это название колонок будущей таблицы значений.
Минус ы :
1.того что имя колонок первоначальных не видно.
2. Значение исходной таблицы первой колонки должны быть типизированны для название колонок.
P.S. Может поможет кому ;-)
Специальные предложения
Чего-то циклов много. код не очень . можно при обходе колонок сразу значения добавлять (имхо). навскидку
Для Каждого Колонка Из Тз.Колонки Цикл
СтрокаРезультат = ТаблицаРезультат.Добавить();
Строка = Тз.ВыгрузитьКолонку(Колонка);
i = 0;
Для Каждого Эл Из Строка Цикл
СтрокаРезультат[i] = Эл;
i=i+1;
КонецЦикла;
КонецЦикла;
Примерно. естественно count i надо убрать и можно придумать получше.
. похоже все это на транспонирование матрицы.
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 таблицы значения // тзОсновная - таблица к которой будут изменяться данные // тзПрисоединяемая - таблица из которой будут браться данные // стОтборОдинаковых - стурктура со списком полей по которым определяеться одинаковость запис Посмотреть все в категории Работа с Таблицей Значений
Читайте также: