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

Вопрос про ТЗ

Вопрос про ТЗ
Я
   егаис
 
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?
   Garykom
 
5 - 25.08.20 - 12:13
Теоретически разрабам платформы 1С надо бы допилить:

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

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

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

КоличествоКолонок = ТаблицаФайла.Колонки.Количество();
НомерКолонкиПлан = ОпределитьИндексКолонки(НайденнаяСтрока, "ПлановыйПоказатель", КоличествоКолонок);  
///////////

функция определения
Функция ОпределитьИндексКолонки(СлужебнаяСтрокаТаблицыФайла, Поле, КоличествоКолонок)
    
    ИмяКолонки = ""; 
    Для НомерКолонки = 0 По КоличествоКолонок - 1 Цикл
        ЗначениеПоля = СлужебнаяСтрокаТаблицыФайла[НомерКолонки];
        Если ЗначениеПоля = Поле Тогда
            Возврат НомерКолонки
        КонецЕсли;    
    КонецЦикла;    
    
    Возврат ИмяКолонки;
    
КонецФункции
   Classic
 
16 - 25.08.20 - 13:48
(15)
А не проще сразу (по первой строке) преобразовать ТЗ в нормальный вид, чтоб потом не искать?

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

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

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

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

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

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

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

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