helpf.pro
Регистрация
 0 
Распечатать

Поклеточный обход, перебор Таблицы Значений

Возможные варианты обхода:

Код 1C v 8.х
 //Во всех примерах ТЗПример - обрабатываемая Таблица значений

//Пример 1
Для каждого СтрТЗ из ТЗПример Цикл
Для каждого КолТЗ из ТЗПример.Колонки Цикл
//...
КонецЦикла;
КонецЦикла;

// Пример 2
Для стр = 0 По ТЗПример.Количество() Цикл
Для кол = 0 По ТЗПример.Колонки.Количество() Цикл
//...
КонецЦикла;
КонецЦикла;

//Пример 3
Для каждого СтрТЗ из ТЗПример Цикл
Для кол = 0 По ТЗПример.Колонки.Количество() Цикл
Сообщить(СтрТЗ[кол]);
КонецЦикла;
КонецЦикла;


При обработке Таблицы значений в 16 колонок и 500 строк - Разница в скорости выполнения между методами составила 3 секунды в пользу Примера № 3 (тестировал IKSparrow )

Тема обсуждения в Вопросах Поклеточный обход таблицы значений - что быстрее работает?
Разместил:   Версии: | 8.x |  Дата:   Прочитано: 18188
 0 
Распечатать
Возможно, вас также заинтересует
1C и Google Maps 12
была поставлена задача отображения на географической карте медицинских учреждений. После обзора предлагаемых решений был выбран сервис google. Но так же подобного рода подход будет работать и с картами сервиса yandex. Во...
1Cv8.1CD - Файл данных достиг максимального размера! 3
1С выдает предупреждение " Файл данных достиг максимального размера" . Подскажите из - за чего это и как можно решить ? Превышен размер файла, обычно это сообщение возникает, когда размер файла 1Cv8.1CD приближается к 10...
1С 7.x : Как получить курсы валют с сайта НБУ http://www.bank.gov.ua/ за любую дату ? 2
Функция ПолучитьТаблицуКурсовНБУ(ДатаКурса, Ежедневно = 1) // если в качестве второго параметра указать число отличное от 1 - получем валюты, которые котируются на ежемесячной основе Перем Reader, Url, Точки, HtmlTab, Строк, Р,...
COM-подключение к базе 7.7 из 8.2 1С 4
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе="...
Cодержимое указанного ниже веб-сайта в этом приложении блокируется... Aboutsecurity_1cv8c.exe 0
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже...
Посмотреть все результаты поиска похожих
Комментарии
E_Migachev
10.06.2010 11:02Комментарий: 6
E_Migachev
хм... а не должно! В строке точно пробел?
СтрВывода = СтрВывода+ " " + Строка(СтрТЗ[кол]);

Ну тогда перед выводом добавь:
Код 1C v 8.х
 СтрВывода = СтрЗаменить(СтрВывода, Симвалы.ПС, " ");
Сообщить(СтрВывода); // Выводим целиком строку
ShamanNet
10.06.2010 10:51Комментарий: 5
ShamanNet
Печально. Теперь у меня вместо ожидаемого результата ->
Наименование Количество Комментарий
получается ->
Наименование
Количество
Комментарий
E_Migachev
10.06.2010 10:14Комментарий: 4
E_Migachev
ShamanNet, да, мой косяк *08 нужно так:
Код 1C v 8.х
  Для каждого СтрТЗ из ТЗПример Цикл // Перебираем Строки ТЗ
СтрВывода=""; // Очищаем строку вывода
Для кол = 0 По ТЗПример.Колонки.Количество()-1 Цикл // Перебираем Колонки ТЗ
СтрВывода = СтрВывода+ " " + Строка(СтрТЗ[кол]); //Прибавляем значение текущей строки/колонки
КонецЦикла;
Сообщить( СтрВывода); // Выводим целиком строку
КонецЦикла;
ShamanNet
10.06.2010 10:07Комментарий: 3
ShamanNet
Попробовал и получил сообщение об ошибке: Индекс находится за границами массива
СтрВывода = СтрВывода+ " " + Строка(СтрТЗ[кол]); //Прибавляем значение текущей строки/колонки
E_Migachev
10.06.2010 09:32Комментарий: 2
E_Migachev
Можно конечно ), примерный код такой:
Код 1C v 8.х
 Для каждого СтрТЗ из ТЗПример Цикл // Перебираем Строки ТЗ
СтрВывода=""; // Очищаем строку вывода
Для кол = 0 По ТЗПример.Колонки.Количество() Цикл // Перебираем Колонки ТЗ
СтрВывода = СтрВывода+ " " + Строка(СтрТЗ[кол]); //Прибавляем значение текущей строки/колонки
КонецЦикла;
Сообщить( СтрВывода); // Выводим целиком строку
КонецЦикла;
ShamanNet
10.06.2010 08:32Комментарий: 1
ShamanNet
А можно ли при обходе таблицы значений выводить все строки таблицы (по всем колонкам), не зная точного количества и заголовков колонок?
Мне нужно, чтобы на выходе было что-то вроде:
Сообщить(" "+Строка[0]+" "+Строка[1]+" "+Строка[2]+" "+Строка[3]+.....);
Причём количество индексов может быть разным.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.