Как узнать номер колонки Таблицы Значений?

1. damir-it 30.04.21 11:28 Сейчас в теме
Уважаемые форумчане
есть некая ТЗ1 со строковыми данными выгруженная из файла ексель, имена колонок после обработки функцией назначаются с N1,N2 и т.д до N16, нужно при поиске найденного значения например : "Наименование товаров" в этой ТЗ1, скопировать всю колонку с найденным значением в ТЗ2

Результат = ЗагрузкаИзExcel(ПолноеИмяФайла);
Результат.Удалить(0);
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Наименование",,"Наименование товаров (работ, услуг)");
ТЗ.Колонки.Добавить("ЕдиницаИзмерения",,"Единица измерения");
ТЗ.Колонки.Добавить("Количество",,"Количество");
ТЗ.Колонки.Добавить("Цена",,"Цена");
ТЗ.Колонки.Добавить("СтоимостьПоставки",,"Стоимость поставки");
СтрокаПоиска = Результат.Найти("Наименование товаров (работ, услуг)");
Если СтрокаПоиска <> Неопределено Тогда
ТЗ.ЗагрузитьКолонку(Результат.ВыгрузитьКолонку(СтрокаПоиска),"Наименование");
КонецЕсли;

переменная СтрокаПоиска возвращает строковое значение а нужен номер колонки, как получить имя или номер колонки ума не приложу, проблема еще в том что в зависимости от ексель файла имена колонок будут прежними но найденные данные могут быть уже в другой колонке
По теме из базы знаний
Найденные решения
10. DenisCh 30.04.21 12:11 Сейчас в теме
(9) Он возвращает СТРОКУ ТАБЛИЦЫ ЗНАЧЕНИЙ.
А получиь колонку...

НомерКолонки = -1;
Для сч = 0 по ТЗ.Колонки.Количество() - 1 Цикл
  Если найденнаяСтрока[сч] = нужноеЗначение Тогда
   НомерКолонки = сч + 1;
   Прервать;
  КОнецЕсли;
КонецЦикла;
damir-it; +1 Ответить
11. nomad_irk 76 30.04.21 12:13 Сейчас в теме
(5)Что значит не получится?

НомерКолонки = 1;
Для Каждого Колонка Из Результат.Колонки Цикл

Строка = Результат.Найти("Наименование товаров (работ, услуг)", Колонка.Имя);

Если НЕ Строка = Неопределено Тогда
       
      ИскомыйНомерКолонки = НомерКолонки;

КонецЕсли;

НомерКолонки = НомерКолонки + 1;

КонецЦикла;
Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 30.04.21 11:47 Сейчас в теме
(1)Ищите по конкретным колонкам, а не сразу по всем.
5. damir-it 30.04.21 11:57 Сейчас в теме
(2)по конкретным не получится, я же написал что расположение нужных данных может меняться в зависимости от ексель файла
11. nomad_irk 76 30.04.21 12:13 Сейчас в теме
(5)Что значит не получится?

НомерКолонки = 1;
Для Каждого Колонка Из Результат.Колонки Цикл

Строка = Результат.Найти("Наименование товаров (работ, услуг)", Колонка.Имя);

Если НЕ Строка = Неопределено Тогда
       
      ИскомыйНомерКолонки = НомерКолонки;

КонецЕсли;

НомерКолонки = НомерКолонки + 1;

КонецЦикла;
Показать
3. DenisCh 30.04.21 11:47 Сейчас в теме
(1)
переменная СтрокаПоиска возвращает строковое значение


Она возвращает НЕ строковое значение. А строку таблицы значений, в которой найдено искомое.
А дальше - перебором полей найти нужное.
6. damir-it 30.04.21 12:00 Сейчас в теме
(3)то есть нужно еще организовать еще перебор в СтрокеПоиска? я правильно Вас понял?
7. DenisCh 30.04.21 12:02 Сейчас в теме
(6) Да. А что, у вас 100500 колонок?
8. damir-it 30.04.21 12:04 Сейчас в теме
9. damir-it 30.04.21 12:07 Сейчас в теме
(7)ок, он же возвращает тоже строковые данные, как я оттуда вытащу номер колонки?
10. DenisCh 30.04.21 12:11 Сейчас в теме
(9) Он возвращает СТРОКУ ТАБЛИЦЫ ЗНАЧЕНИЙ.
А получиь колонку...

НомерКолонки = -1;
Для сч = 0 по ТЗ.Колонки.Количество() - 1 Цикл
  Если найденнаяСтрока[сч] = нужноеЗначение Тогда
   НомерКолонки = сч + 1;
   Прервать;
  КОнецЕсли;
КонецЦикла;
damir-it; +1 Ответить
12. damir-it 30.04.21 12:13 Сейчас в теме
4. jmw 60 30.04.21 11:48 Сейчас в теме
Ни чё не понятно!
Типа такого?
тз = Новый ТаблицаЗначений;
тз.Колонки.Добавить("N1");
тз.Колонки.Добавить("N2");
тз.Колонки.Добавить("N3");

стр = тз.Добавить(); стр[0] = "1"; стр[1] = "2"; стр[2] = "3";
стр = тз.Добавить(); стр[0] = "4"; стр[1] = "5"; стр[2] = "6";
стр = тз.Добавить(); стр[0] = "7"; стр[1] = "8"; стр[2] = "9";

Для каждого стр из тз Цикл
	Сообщить(стр[1]);
КонецЦикла;
Показать
13. unknow_user 30.04.21 12:23 Сейчас в теме
(0) А в чём вопрос? если я правильно понял

 
КолонкаТЗ = ТЗ.Колонки.Найти(СтрокаПоиска);
НомерКолонки = ТЗ.Колонки.Индекс(КолонкаТЗ) + 1; 
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот