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