Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Обход ячеек табличного поля

Обход ячеек табличного поля
Я
   RizONE
 
10.08.20 - 21:19
Доброго!
Вообщем нужно обойти ТП размером 6х10. Если в колонке встречается текст, начинающийся на "*", то этот текст нужно разбить на подстроки и разместить в ту же колонку, но в следующие строки.
Как такое решается?
Для Колонка = 1 по 6 Цикл
        Для Каждого Стр из тпТаблица Цикл
            Если Найти(Стр[Колонка], "*") > 0 Тогда
                РазложитьНа = Стр.Длительность / 15;
                Индекс = тпТаблица.Индекс(Стр);
                Массив = РазложитьСтрокуВМассивПодстрок(Стр[Колонка], Символы.ПС);
                
                Если РазложитьНа = 1 Тогда
                    Стр[Колонка] = Массив[0];
                    тпТаблица[Индекс].Колонка12 = Массив[1];
                ИначеЕсли РазложитьНа = 2 Тогда
                    Стр[Колонка] = Массив[0];
                    тпТаблица[Индекс+1].[Колонка] = Массив[1];
                    тпТаблица[Индекс+2].[Колонка] = Массив[2];
                ИначеЕсли РазложитьНа >= 3 Тогда
                    Стр[Колонка] = Массив[0];
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
   RizONE
 
1 - 10.08.20 - 21:19
часть после ИначеЕсли РазложитьНа = 2 Тогда естественно не работает, а как это сделать?
   RizONE
 
2 - 10.08.20 - 21:21
да, боюсь со всложенностью циклов тоже попутал, сначала цикл по Стр, потом по Колонка
   RizONE
 
3 - 10.08.20 - 21:25
так работает, но прописывать названия Колонок в явном виде не хотелось бы
Для Каждого Стр из тпТаблица Цикл
        Для Колонка = 1 по 6 Цикл
            Если Найти(Стр[Колонка], "*") > 0 Тогда
                РазложитьНа = Стр.Длительность / 15;
                Индекс = тпТаблица.Индекс(Стр);
                Массив = РазложитьСтрокуВМассивПодстрок(Стр[Колонка], Символы.ПС);
                
                Если РазложитьНа = 1 Тогда
                    Стр[Колонка] = Массив[0];
                    тпТаблица[Индекс].Колонка12 = Массив[1];
                ИначеЕсли РазложитьНа = 2 Тогда
                    Стр[Колонка] = Массив[0];
                    тпТаблица[Индекс+1].Колонка5 = Массив[1];
                    тпТаблица[Индекс+2].Колонка5 = Массив[2];
                ИначеЕсли РазложитьНа >= 3 Тогда
                    Стр[Колонка] = Массив[0];
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;
   Ёпрст
 
4 - 10.08.20 - 22:28
(3)
тпТаблица[0][1]
   RizONE
 
5 - 10.08.20 - 23:08
(4) Чудно!
Спасибо!

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.