|
Таблица Значений | ☑ | ||
---|---|---|---|---|
0
sora_tm
13.03.12
✎
14:01
|
Добры день!
Не могу понять как скопировать из одной ячейки в строке в другую. Есть ТЗ Тиражи. В ней НЕ постоянное количество колонок. Например: Тираж | Реализация | НовТираж При нажатии на кнопку на форме, надо скопировать значение из Тираж в НовТираж Пытаюсь делать так. Хочу получить текущий номер колонки, вычесть из него 2, получить колонку Тираж, и присвоить. Для каждого стр из Тиражи Цикл СтрПредИндекс = Тиражи.Индекс(стр.тираж) - 2; СтрПредТираж = стр[СтрПредИндекс]; стр.НовТираж = СтрПредТираж; КонецЦикла; В СтрПредИндекс всегда попадает "Неопределенно" Что не так? Если просто делаю стр.НовТираж = Стр[0]; то все ок. |
|||
1
Reset
13.03.12
✎
14:04
|
Ничего не понятно.
Может, нужно ТЗ.ЗагрузитьКолонку(ТЗ.ВыгрузитьКолонку("ИмяКолонкиОткуда"),"ИмяКолонкиКуда") ? |
|||
2
НЕА123
13.03.12
✎
14:04
|
(0)
колонки со строками не путаешь? |
|||
3
sora_tm
13.03.12
✎
14:07
|
(2) Возможно, мало с ними работал. Если я пишу
Стр.НовТираж=Стр[0] то, стр[0] это номер колонки? Если да, то как в тз получить номер колонки, без указания имени, но всегда эта колонка будет сдвинута влево на 2. |
|||
4
sora_tm
13.03.12
✎
14:08
|
Будет сдвинута влево от Стр.НовТираж
|
|||
5
sora_tm
13.03.12
✎
14:09
|
(1) Хочу перебрать строки и скопировать значение из одной колонки в этой строке в другую...
|
|||
6
Reset
13.03.12
✎
14:09
|
А индекс той, которая не сдвинута, тебе известен? Или имя?
|
|||
7
Reset
13.03.12
✎
14:10
|
(5) Ты хочешь именно перебрать?
|
|||
8
sora_tm
13.03.12
✎
14:10
|
(6) Которая не сдвинута, имя "НовТираж"
|
|||
9
НЕА123
13.03.12
✎
14:10
|
где ДенисЧ? тут он может помочь.
|
|||
10
sora_tm
13.03.12
✎
14:10
|
(7) Да
|
|||
11
Reset
13.03.12
✎
14:11
|
(8) Т.е. ты хочешь все значения из колонки с именем "НовТираж" скопировать в колонку, которая находится через одну влево о нее?
|
|||
12
sora_tm
13.03.12
✎
14:11
|
Я правильно понял, что в 1с
кортеж - строка, атрибут - столбец - колонка? |
|||
13
Reset
13.03.12
✎
14:11
|
(10) я думаю нет
|
|||
14
sora_tm
13.03.12
✎
14:14
|
(8) Хочу брать значения из сдвинутой и немного преобразовывая. Но пока хотя бы скопировать.
ТЗ "Тиражи" Колонка с постоянным именем "НовТираж" В ячейки в этой колонки хочу скопировать значения из колонки сдвинутой влево от нее. |
|||
15
Reset
13.03.12
✎
14:14
|
(10) Хорошо, если уперся именно перебирать, то
Для каждого строка из ТЗ цикл Строка.КолонкаКуда=Строка.КолонкаОткуда; КонецЦикла; |
|||
16
Web00001
13.03.12
✎
14:16
|
Обращение по индексу должно быть так: ТЗ.Колонки[индекс]
|
|||
17
Reset
13.03.12
✎
14:17
|
(14)
ИндексСдвинутойВлево=ТЗ.Колонки.Индекс(ТЗ.Колонки.НовТираж)-2; Если ИндексСдвинутойВлево<0 тогда // косяк иначе Для каждого строкаТЗ из ТЗ цикл строкаТЗ.НовТираж=строкаТЗ[ИндексСдвинутойВлево]; КонецЦикла; КонецЕсли; |
|||
18
sora_tm
13.03.12
✎
14:19
|
(17) Спасибо, я пропустил "Колонки.Индекс", не понял по СП. Спасибо большое :)
|
|||
19
hhhh
13.03.12
✎
14:19
|
(17) можно так
ТЗ.ЗагрузитьКолонку(ТЗ.ВыгрузитьКолонку("Тираж"), "НовыйТираж"); |
|||
20
Reset
13.03.12
✎
14:19
|
(14) Если только сокпировать
тогда ИндексСдвинутойВлево=ТЗ.Колонки.Индекс(ТЗ.Колонки.НовТираж)-2; Если ИндексСдвинутойВлево<0 тогда // косяк иначе ТЗ.ЗагрузитьКолонку(ТЗ.ВыгрузитьКолонку(ИндексСдвинутойВлево),"НовТираж") КонецЕсли; |
|||
21
Reset
13.03.12
✎
14:20
|
(19) --> (1)
|
|||
22
sora_tm
13.03.12
✎
14:31
|
(17) СтрПредИндекс=Тиражи.Колонки.Индекс(Тиражи.Колонки.Тираж);
Все равно попадает в переменную "Неопределено", что за беда... |
|||
23
Web00001
13.03.12
✎
14:40
|
Посмотреть что там с колонками индексами и названиями кроме отладчика можно так:
Для каждого КолонкаТЗ Из ТЗ.Колонки Цикл Сообщить("Колонка с именем "+КолонкаТЗ.Имя+" имеет индекс "+ТЗ.Колонки.Индекс(КолонкаТЗ)); КонецЦикла; |
|||
24
rrunover
13.03.12
✎
14:40
|
(22)
СтрПредИндекс=Тиражи.Колонки.Индекс(>>>>Тиражи.Колонки.Тираж<<<<<); тут как бэ цифирь должна стоять... Индекс |
|||
25
sora_tm
13.03.12
✎
14:41
|
(24) Я так понял Метод Индекс, как раз и возвращает индекс колонки.
|
|||
26
Reset
13.03.12
✎
14:41
|
(22) Оно никак не может неопределено попадать.
(24) Профи подтянулись... Читай: Индекс (IndexOf) Синтаксис: Индекс(<Колонка>) Параметры: <Колонка> (обязательный) Тип: КолонкаТаблицыЗначений. Колонка таблицы значений, для которой нужно определить индекс. |
|||
27
Reset
13.03.12
✎
14:42
|
+(22) Или колонка Тираж есть, тогда вернется индекс, или ее нет, тогда ошибка времени выполнения произойдет
|
|||
28
rrunover
13.03.12
✎
14:43
|
(26) точно же... миль пардон
|
|||
29
sora_tm
13.03.12
✎
14:44
|
(23) Колонка с именем Тираж имеет индекс 13...
|
|||
30
Reset
13.03.12
✎
14:45
|
+(22) И откуда "Тираж", ты же глаголил до этого, что она тебе неизвестна (положение ее), а известно "НовТираж"?
Кинь текст полностью Если тебе известны ОБА имени, используй (1) и не мучай мозги (мои) |
|||
31
sora_tm
13.03.12
✎
14:50
|
Пробую так
колонкаТЗ = Тиражи.Колонки.Тираж; СтрПредИндекс=Тиражи.Колонки.Индекс(колонкаТЗ); Сообщить(СтрПредИндекс); В Предприятии появляется 13, но в переменную в отладчике пишет, "Неопределено". (30) Извините за сумятицу. Просто я для примера назвал ее НовТираж. На самом деле у меня появляются колонки типа Тираж_2123434 Возврат_2334232 Тираж И первая колонка всегда с разным именем, и ее надо копировать в Тираж. Текст какой именно? |
|||
32
Jaffar
13.03.12
✎
14:54
|
(31) ты понимаешь, что ты пишешь?
1) колонкаТЗ = Тиражи.Колонки.Тираж; ты загнал в переменную колонкаТЗ ЗНАЧЕНИЕ колонки Тираж текущей строки ТЗ. А если она не выбрана? 2) СтрПредИндекс=Тиражи.Колонки.Индекс(колонкаТЗ); в индексе должно быть ИМЯ колонки, а не ее значение. |
|||
33
sora_tm
13.03.12
✎
14:58
|
(32) хорошо, делаю так
СтрПредИндекс=Тиражи.Колонки.Индекс(Тиражи.Колонки.Тираж); Сообщить(СтрПредИндекс); Все равно в Предприятии выводится 13, а в переменную СтрПредИндекс попадает, смотрю в отладчике, "Неопределено" |
|||
34
Reset
13.03.12
✎
14:58
|
(32) В (26) есть цитата по поводу п2.
по п1 - в колонкаТЗ он помещает колонку "Тираж" таблицы значений Тиражи, не вижу проблемы. |
|||
35
Reset
13.03.12
✎
14:59
|
(33) "Все равно в Предприятии выводится 13, а в переменную СтрПредИндекс попадает, смотрю в отладчике, "Неопределено"
" Не верю |
|||
36
rrunover
13.03.12
✎
15:00
|
(32)
1) пофиг, что не выбрана. Главное, чтобы в ТЗ Тиражи колонка такая была. 2) смотри (26) (33) не могет там быть "Неопределено", там -1, если не нашел... Тираж - точно ТЗ, а не ТЧ? |
|||
37
rrunover
13.03.12
✎
15:01
|
хотя там без разницы... всё равно должно работать.
|
|||
38
sora_tm
13.03.12
✎
15:01
|
(36)
Это элемент формы, с типом значения "ТаблицаЗначений" |
|||
39
Reset
13.03.12
✎
15:02
|
(36) Если ТЧ, у него бы орало на отсутвие свойства Колонки
|
|||
40
Reset
13.03.12
✎
15:03
|
(38) Ты, я надеюсь, работаешь не с элементов формы, а с самой таблицей?
|
|||
41
Jaffar
13.03.12
✎
15:04
|
(34) он хочет индекс получить, а не колонку.
|
|||
42
Reset
13.03.12
✎
15:04
|
+(40) сама таблица - это то, что написано у тебя в свойстве "данные" твоего элемента формы.
|
|||
43
Reset
13.03.12
✎
15:05
|
(41) и?
|
|||
44
Jaffar
13.03.12
✎
15:05
|
(43) зачем колонку копировать куда-то, а потом из этого "куда-то" получать индекс?
|
|||
45
Reset
13.03.12
✎
15:07
|
(44) Что значит "копировать"? Ну создал он временную переменную, не вижу криминала абсолютно. Может, ему так кажется читабельней.
|
|||
46
Jaffar
13.03.12
✎
15:07
|
(33) "Все равно в Предприятии выводится 13, а в переменную СтрПредИндекс попадает, смотрю в отладчике, "Неопределено""
кхе, а в отладчике смотришь ДО выполнения этой строки, или после? :-) |
|||
47
Jaffar
13.03.12
✎
15:08
|
(45) "может" - это из разряда телепатии.
у него нет алгоритма в мозгах - рано перекладывать его на методы объектов конфигурации. |
|||
48
Reset
13.03.12
✎
15:10
|
(47)
Боюсь, не о разном ли говорим. (31)=(33) ,так? За исключением промежуточной переменной, которая ни на что не влияет? |
|||
49
Reset
13.03.12
✎
15:12
|
ТСу: Ответь на (40),(46) ;)
|
|||
50
sora_tm
13.03.12
✎
15:13
|
Процедура КоманднаяПанель2СкопироватьПред(Кнопка)
СтрПредИндекс=Тиражи.Колонки.Индекс(Тиражи.Колонки.Тираж)-2; Если СтрПредИндекс<0 тогда Сообщить(СтрПредИндекс); Для каждого стр из Тиражи Цикл СтрПредТираж = стр[СтрПредИндекс]; Сообщить(СтрПредТираж); стр.Тираж = СтрПредТираж; КонецЦикла; КонецЕсли; КонецПроцедуры; Извините, что всех замучал такой ерундой, заработало, спасибо всем кто помогал, особенно Reset :) |
|||
51
Reset
13.03.12
✎
15:15
|
(50)
Если СтрПредИндекс>=0 тогда Не? :) |
|||
52
sora_tm
13.03.12
✎
15:15
|
(40) Да, с самой таблицей
(36) Да, не так смотрел (51) Спасибо еще раз, переделал :) |
|||
53
Reset
13.03.12
✎
15:16
|
Пойду поработаю тогда ;D
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |