Имя: Пароль:
1C
1С v8
ТЗ или как пробежаться по его данным
,
0 PeaceDeath
 
18.03.13
16:34
Добрый вечер.
Прошу помочь.. немогли бы вы подсказать как работает следующий механизм.

Для Каждого Параметра из Результат Цикл
           НоваяСтрока = ТабЗнач.Добавить();
           Для i=0 по ТабЗнач.Количество() Цикл
               ТабЗнач.Колонки.Добавить();
               Для j=0 по ТабЗнач.Колонки.Количество() Цикл
               
               КонецЦикла;
           КонецЦикла;
       КонецЦикла;

Никак не пойму принцип -
Из общего запроса вытащить в ТЗ все данные.(Вытащил)
Затем пробежаться циклом по строкам (??ТУТ???). и только в конце по колонкам(??ТУТ??)).
Обьясните пожалуйста без громких высказываний.
Приведите легкий пример..
1 exwill
 
18.03.13
16:36
по колонкам не инадо
2 exwill
 
18.03.13
16:38
В чем разница между строками и колонками?
3 GLazNik
 
18.03.13
16:38
(0) Зачем?
Может просто Запрос.Выполнить().Выгрузить();
4 Reset
 
18.03.13
16:38
Объясни, чего надо то тебе, без громких слов :)
5 Reset
 
18.03.13
16:41
Вывод значений ТЗ поколоночно:

Для каждого Строка из ТЗ цикл
 Для каждого Значение из Строка цикл
   Сообщить(Значение);
 КонецЦикла;
КонецЦикла;
или
Для каждого Строка из ТЗ цикл
 Для й=0 по ТЗ.Колонки.Количество()-1 цикл
   Сообщить(Строка[ТЗ.Колонки[й].Имя]);
 КонецЦикла;
КонецЦикла;
6 PeaceDeath
 
18.03.13
16:53
(5) Спасибо! А то мне здесь ужасное задание прислали.
7 pessok
 
18.03.13
16:54
(6) если ты не можешь сделать сам обход многомерного массива циклом, то выкинь задание и дуй в институт
8 PeaceDeath
 
18.03.13
16:56
(2) А в том что в зависимости от колонки будет меняться и пропускаться значение.
То есть если попадется Оплата труда тогда
вычислится его колонка и задастся значение, которое после пойдет в отчет.
9 PeaceDeath
 
18.03.13
16:57
(7) Не сыпь мне соль на рану...
10 PeaceDeath
 
18.03.13
16:57
Просто запутался... к тому же я не прогер. а лишь стажер
11 GANR
 
18.03.13
17:17
Напишем человеческим языком:

Для Каждого СтрокаТЧ Из ТабЗнач Цикл
   Для Каждого Колонка Из ТабЗнач.Колонки Цикл
       СтрокаТЧ[Колонка.Имя] = ЗначениеЯчейкиТаблицыЗначений;
   КонецЦикла;
КонецЦикла;

Это не матрица - это таблица значений, все-таки.
12 pessok
 
18.03.13
17:18
(11) таблица значений - это сущность, придуманная хитрыми разрабами платформы :) на самом деле это матрица/многомерный массив
13 GANR
 
18.03.13
17:20
(12) С точки зрения  п о л ь з о в а т е л я  платформы (программиста 1С, то есть) это не совсем матрица.
14 Reset
 
18.03.13
17:21
(11) Нормальный вариант тоже. Я написал то, что в голову пришло первым. Но насчет нечеловеческого языка это ты зря :)
Где-то, как вариант, цикл со счетчиком может оказаться удобней.
15 GANR
 
18.03.13
17:26
(14) Где-то в области матанализа, но для таких задач MathLAB есть - это уже история другая. Не стоит это возлагать на платформу 1С.
16 Reset
 
18.03.13
17:27
(15) Какого матанализа?
Допустим, нужно обработать колонки, начиная с третьей.
17 GANR
 
18.03.13
17:31
(16) Лично я что-то не натыкался на такую надобность.
18 pessok
 
18.03.13
17:37
(17) сплошь и рядом, на самом деле. табель, например, где Сотрудник, Организация, Подразделение не надо трогать :)
19 GANR
 
18.03.13
17:42
(18) Было дело у меня с множеством колонок. В таких ситуациях, как-то, имени колонки GUID очищенный от "-" с префиксом "P_" присвоил - и голова не болит. :)
20 pessok
 
18.03.13
17:43
(19) вот жеж онанизм какой ;)
21 GANR
 
18.03.13
17:49
(20) А на кой мне её порядковый номер??? Главное - идентифицировать, а для этого лучше GUIDов в мире пока что ничего не придумано. А вдруг какие-то колонки удаляться нежданно-негаданно или переместятся.
22 pessok
 
18.03.13
17:51
(21) и вот у тебя надо пропустит двести колонок, ты делаешь форич и потом в условии пропускаешь две колонок по гуиду...
23 pessok
 
18.03.13
17:51
двести колонок... реально пора домой
24 GANR
 
18.03.13
17:54
(22) Колонки.Найти(GUID)
25 Reset
 
18.03.13
17:57
(21) >>А на кой мне её порядковый номер
А если тебе нужно ее сдвинуть влево?

Какой-то ты сегодня категоричный. Тяжелый день? :)
26 pessok
 
18.03.13
17:57
(24) двести раз, угу :)

Для Каждого ТекСтр Из Таблица Цикл

Для Каждого Коли Из Таблица.Колонки Цикл

Если Колонки.Найти(GUID) = Неопределено Тогда
Продолжить;
КонецЕсли //вот тут придется делать условие для каждого гуида, который надо пропустить

КонецЦикла;
КонецЦикла
27 pessok
 
18.03.13
17:58
все, домой :) нафик холивары. циклы всякие нужны, циклы всякие важны ;)
28 Reset
 
18.03.13
17:58
(27) +100
29 GANR
 
18.03.13
18:01
(27) А вот это зачет ))))). Развеселил.