Имя: Пароль:
1C
1С v8
Вопрос про ТЗ
0 егаис
 
25.08.20
11:48
Кроме перебора колонок в ТЗ можно узнать номер (индекс) колонки?
Есть найденнаястрока, но в каких колонках находится то и иное значение неизвестно, есть продвинутый способ?
1 Ёпрст
 
25.08.20
11:50
[] ?
2 Ёпрст
 
25.08.20
11:51
и..у колонки так то .Имя есть
3 Волшебник
 
25.08.20
11:53
Индекс = ТЗ.Колонки.Индекс(Колонка);
4 ДенисЧ
 
25.08.20
12:02
(1) (2) (3) Смешные вы....
Человек не знает, в какой именно колонке находится значение... А вы предлагаете обращаться к конкретной...

(0) Придётся тебе разочароваться в 1с. И сделать перебор колонок. У тебя что, их там 100500?
5 Garykom
 
гуру
25.08.20
12:13
Теоретически разрабам платформы 1С надо бы допилить:

Вместо просто
НайденнаяСтрока = ТаблицаЦен.Найти(ВыбТовар, "Товар");

Чтобы можно было делать
Колонки = "";
НайденнаяСтрока = ТаблицаЦен.Найти(ВыбТовар, Колонки);

И в переменную "Колонки" возвращаются имена колонок в которых нашли
6 Ёпрст
 
25.08.20
12:15
(5) Вот никогда в своём коде не использовал поиск во всех колонках. Всегда только в конкретной.
7 Ёпрст
 
25.08.20
12:15
Даже не могу придумать задачу, где это надо вообще
8 Garykom
 
гуру
25.08.20
12:16
(6) (7) Когда ТЗ используется как массив, где пофиг на имена колонок
9 2S
 
25.08.20
12:26
(7) легко, загрузка какая-нибудь
10 Ёпрст
 
25.08.20
12:26
(9) например ?
11 Ёпрст
 
25.08.20
12:28
Покажите, где вы в своём коде используете поиск по ТЗ без учета колонки
12 Bigbro
 
25.08.20
12:33
у меня бывает динамическая ширина ТЗ в зависимости от выбранного периода - с колонками по дням.
но к счастью в тех данных искать ничего не надо))
13 2S
 
25.08.20
12:34
Загрузка регламентирована по именам колонок, расположение колонок на усмотрение юзеров
14 Ёпрст
 
25.08.20
12:36
(13) см(11)
15 егаис
 
25.08.20
13:39
(14) сделано так
НайденнаяСтрока = ТаблицаФайла.Найти("УИН"); //позиционирование на строке
КоличествоКолонок = ТаблицаФайла.Колонки.Количество();
НомерКолонкиПлан = ОпределитьИндексКолонки(НайденнаяСтрока, "ПлановыйПоказатель", КоличествоКолонок);  
///////////
функция определения
Функция ОпределитьИндексКолонки(СлужебнаяСтрокаТаблицыФайла, Поле, КоличествоКолонок)
    
    ИмяКолонки = "";
    Для НомерКолонки = 0 По КоличествоКолонок - 1 Цикл
        ЗначениеПоля = СлужебнаяСтрокаТаблицыФайла[НомерКолонки];
        Если ЗначениеПоля = Поле Тогда
            Возврат НомерКолонки
        КонецЕсли;    
    КонецЦикла;    
    
    Возврат ИмяКолонки;
    
КонецФункции
16 Classic
 
25.08.20
13:48
(15)
А не проще сразу (по первой строке) преобразовать ТЗ в нормальный вид, чтоб потом не искать?

ТаблицаИменованная = ТаблицаФайла.Скопировать();

Для Каждого Колонка ИЗ ТаблицаФайла.Колонки Цикл
    ТаблицаИменованная.Колонки[Колонка.Имя].Имя = НайденнаяСтрока[Колонка.Имя];
КонецЦикла;

И дальше работать без извратов?
17 егаис
 
25.08.20
13:53
(16) тоже вариант
18 Classic
 
25.08.20
14:00
(16)
Либо если там названия кривые сделать через соответствие.

СоответствиеКолонок = Новый Соответствие;

Для Каждого Колонка Из ТаблицаТоваров Цикл
    СоответствиеКолонок.Вставить(НайденнаяСтрока[Колонка.Имя], Колонка.Имя);
КонецЦикла;

И дальше получаем значение таким образом:

НужноеЗначение = СтрокаТЗ[СоответствиеКолонок.Получить(ИмяНужнойКолонки)]