Имя: Пароль:
1C
1C 7.7
v7: Обращение к колонкам ТЗ заранее неизвестным.
, ,
0 Seeker_
Of_Truth
 
09.09.11
14:50
Добрый день! Подскажите пожалуйста есть ли какой-нибудь приём обращения к колонкам ТЗ, если их индфикаторы создаются динамически?

Т.е. заранее создаём ТЗ, потом в цикле создаём для неё колонки с уникальными идентификаторами. Затем нужно вписать туда информацию, но как обратиться к этой колонке?

Пример:

ТЗСложныйОтчет = СоздатьОбъект("ТаблицаЗначений");
ТЗСложныйОтчет.НоваяКолонка("Товар");
       
ТЗСкладов.ВыбратьСтроки();
Пока ТЗСкладов.ПолучитьСтроку() = 1 Цикл
ТЗСложныйОтчет.НоваяКолонка("СебестоимостьСумма"+ТЗСкладов.Склад.Код);
ТЗСложныйОтчет.НоваяКолонка("ПродСтоимостьСумма"+ТЗСкладов.Склад.Код);
КонецЦикла;    
       
НоваяСтрока = 1;        
       
ТЗ.ВыбратьСтроки();
Пока ТЗ.ПолучитьСтроку() = 1 Цикл
ТекТовар = ТЗ.Товар;
ТекСклад = ТЗ.Склад;
           
Если НоваяСтрока = 1 Тогда
ТЗСложныйОтчет.НоваяСтрока();
ТЗСложныйОтчет.Товар = ТЗ.Товар;
НоваяСтрока = 0;    
ПредТовар = ТЗ.Товар;
КонецЕсли;
           
Если ТекТовар = ПредТовар Тогда

ТЗСложныйОтчет.СебестоимостьСумма+ТЗСкладов.Склад.Код  (ВОТ ТУТ ПРОБЛЕМА ПРИ ОБРАЩЕНИИ)  
...
...
...                
КонецЕсли;
       
КонецЦикла;
1 Irbis
 
09.09.11
14:51
По номеру и идентификатору не предлагать?
2 Ёпрст
 
09.09.11
14:51
ПолучитьЗначение
УстановиьЗначение
3 Seeker_
Of_Truth
 
09.09.11
14:52
Пасиб, щас попробую! =)
4 Ткачев
 
09.09.11
14:53
Нее ?
ТЗСложныйОтчет["СебестоимостьСумма"+ТЗСкладов.Склад.Код]
5 andrewks
 
09.09.11
14:55
(4) не
6 Seeker_
Of_Truth
 
09.09.11
14:56
ТЗСложныйОтчет.<<?>>["СебестоимостьСумма"+ТЗСкладов.Склад.Код] =  ТекСклад;
{F:\Задания\СредняяНаценка\СредняяНаценка.ert(124)}: Ожидается идентификатор
При проверке модуля обнаружены синтаксические ошибки!
7 Ткачев
 
09.09.11
14:57
(6)Точку убрать
8 Seeker_
Of_Truth
 
09.09.11
14:58
В принципе по номеру можно отследить в какие колонки чего вписывать. Как с идентификатором быть хз...
9 VladZ
 
09.09.11
14:58
ДобКолонка = "СебестоимостьСумма"+ТЗСкладов.Склад.Код;
ТЗСложныйОтчет.НоваяКолонка(ДобКолонка);

В отладчике проверь, что у тебя в "ДобКолонка".
10 Seeker_
Of_Truth
 
09.09.11
14:59
ТЗСложныйОтчет<<?>>["СебестоимостьСумма"+ТЗСкладов.Склад.Код] =  ТекСклад;

Переменная не объявлена как массив (ТЗСложныйОтчет)
При проверке модуля обнаружены синтаксические ошибки!
11 andrewks
 
09.09.11
14:59
(7) заголовок ветки внимательно читал?
12 Seeker_
Of_Truth
 
09.09.11
14:59
(9) Сейчас проверю
13 VladZ
 
09.09.11
15:00
(10) Не слушай его...  Фигню говорит.
14 povar
 
09.09.11
15:01
(4) это что за хе..ня ?
15 Ткачев
 
09.09.11
15:01
(11)Нее, не внимательно, (0) сорри.
16 andrewks
 
09.09.11
15:01
(14) это знак бесконечности, повёрнутый набок
17 VladZ
 
09.09.11
15:03
(12) Может у тебя там пробелы или точки...
18 Seeker_
Of_Truth
 
09.09.11
15:06
Не, нет. Там просто склеиваются два строковых значения 1) "СебестоимостьСумма" и 2) ТЗСкладов.Склад.Код, равный "95"
В итоге СебестоимостьСумма95
19 Seeker_
Of_Truth
 
09.09.11
15:06
И так далее, всего получается 9 колонок.
20 Seeker_
Of_Truth
 
09.09.11
15:08
В принципе задачу можно сделать и другими способами. Просто интересно можно ли и так? Делать имя переменной (а неё содержание) исходя из другой информации.
21 Ткачев
 
09.09.11
15:09
(2)?
ТЗСложныйОтчет.УстановиьЗначение(,"СебестоимостьСумма"+ТЗСкладов.Склад.Код, ТекСклад);
Или
ТЗСложныйОтчет.УстановиьЗначение(ТЗСложныйОтчет.ТекущаяСтрока(),"СебестоимостьСумма"+ТЗСкладов.Склад.Код, ТекСклад);
22 Ёпрст
 
09.09.11
15:14
(20) это принципиально не возможно для тех, кто не умеет читать.
23 Seeker_
Of_Truth
 
09.09.11
15:17
(21) (2) (22) Все получилось! Всем Спасибо!
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн