Имя: Пароль:
1C
1C 7.7
v7: В Таблицу значений вставляется ссылка на другую ТЗ вместо значения.
0 alexurl
 
23.10.12
12:04
ТЗБольшая = СоздатьОбъект("ТаблицаЗначений"); //инициализируем итоговую ТЗ
ТЗБольшая.НоваяКолонка("ТЗ"); //в этой колонке будем хранить небольшую таблицу значений

ТЗМаленькая = СоздатьОбъект("ТаблицаЗначений"); //создаем небольшую ТЗ
ТЗМаленькая.НоваяКолонка("Товар"); // в которой будет колонка Товар

ТЗМаленькая.НоваяСтрока();
ТЗМаленькая.Товар = Товар1; //заполняем небольшую ТЗ первым товаром
ТЗМаленькая.НоваяСтрока();
ТЗМаленькая.Товар = Товар2; //заполняем небольшую ТЗ вторым товаром

ТЗБольшая.НоваяСтрока();
ТЗБольшая.ТЗ = ТЗМаленькая; // в большую ТЗ вставляем маленькую ТЗ с товарами

ТЗМаленькая.УдалитьСтроки(); // очищаем маленькую ТЗ для следующей итерации
//и тут же очищается и Большая ТЗ

Как сделать так, чтобы значения в Большой ТЗ сохранялись, в то время как Маленькая ТЗ очищалась?
1 Happy Bear
 
23.10.12
12:06
(0) каждый раз создавай новую ТЗ
2 ptiz
 
23.10.12
12:08
ТЗБольшая.ТЗ = СоздатьОбъект("ТаблицаЗначений");

ТЗМаленькая = ТЗБольшая.ТЗ;

ТЗМаленькая.НоваяКолонка("Товар"); // в которой будет колонка Товар


ТЗМаленькая.НоваяСтрока();
ТЗМаленькая.Товар = Товар1; //заполняем небольшую ТЗ первым товаром

ТЗМаленькая.НоваяСтрока();
ТЗМаленькая.Товар = Товар2; //заполняем небольшую ТЗ вторым товаром
3 Песец
 
23.10.12
12:13
Как-то так, не помню:

ТЗБольшая.НоваяСтрока();
ТЗБольшая.ТЗ = СоздатьОбъект("ТаблицаЗначений");
ТЗБольшая.ТЗ.Загрузить(ТЗМаленькая);
4 hunter76
 
23.10.12
12:16
ТЗБольшая.НоваяСтрока();
ТЗМалеькая = СоздатьОбъект("ТаблицаЗначений");
ТЗМалеькая.НоваяКолонка();
...
ТЗБольшая.ТЗ = ТЗМаленькая;

точно работает.
5 palpetrovich
 
23.10.12
12:17
примерчик "ТЗ в ТЗ"  http://www.fayloobmennik.net/2298625
6 Песец
 
23.10.12
12:20
(4) ТЗБольшая.ТЗ = ТЗМаленькая; - в ТЗБольшая.ТЗ сохранится ссылка на ТЗМаленькая.
7 hunter76
 
23.10.12
12:23
(6) нет, сохранится объект ТЗМаленькая
8 Песец
 
23.10.12
12:48
(7) Проверял, работает?
9 hunter76
 
23.10.12
12:54
я тыщу раз так делал
10 Песец
 
23.10.12
13:01
(9) Давай тыщупервый вместе сделаем?


//*******************************************
Процедура Сформировать()
   ТЗБольшая = СоздатьОбъект("ТаблицаЗначений"); //инициализируем итоговую ТЗ
   ТЗБольшая.НоваяКолонка("ТЗ", "ТаблицаЗначений"); //в этой колонке будем хранить небольшую таблицу значений
   ТЗМаленькая = СоздатьОбъект("ТаблицаЗначений"); //создаем небольшую ТЗ
   ТЗМаленькая.НоваяКолонка("Товар"); // в которой будет колонка Товар
   ТЗМаленькая.НоваяСтрока();
   ТЗМаленькая.Товар = "Товар1"; //заполняем небольшую ТЗ первым товаром
   ТЗМаленькая.НоваяСтрока();
   ТЗМаленькая.Товар = "Товар2"; //запол
   
   ТЗБольшая.НоваяСтрока();
   //неправильно:
   ТЗБольшая.ТЗ = тзмаленькая;
   //проверяем:
   ТЗБольшая.ТЗ.ВыбратьСтроку(,"до очистки маленькой");
   ТЗМаленькая.УдалитьСтроки();
   ТЗБольшая.ТЗ.ВыбратьСтроку(,"после очистки маленькой");
   
   //снова заполняем маленькую
   ТЗМаленькая.НоваяСтрока();
   ТЗМаленькая.Товар = "Товар1"; //заполняем небольшую ТЗ первым товаром
   ТЗМаленькая.НоваяСтрока();
   ТЗМаленькая.Товар = "Товар2"; //запол
   ТЗБольшая.НоваяСтрока();
   ТЗБольшая.НоваяСтрока();
   
   ТЗБольшая.УдалитьСтроки();
   ТЗБольшая.НоваяСтрока();
   //правильно:
   ТЗБольшая.ТЗ = СоздатьОбъект("ТаблицаЗначений");
   ТЗБольшая.ТЗ.Загрузить(тзмаленькая);
   //проверяем:
   ТЗБольшая.ТЗ.ВыбратьСтроку(,"до очистки маленькой");
   ТЗМаленькая.УдалитьСтроки();
   ТЗБольшая.ТЗ.ВыбратьСтроку(,"после очистки маленькой");
   
КонецПроцедуры
11 alexurl
 
23.10.12
14:08
//правильно:

   ТЗБольшая.ТЗ = СоздатьОбъект("ТаблицаЗначений");
   ТЗБольшая.ТЗ.Загрузить(тзмаленькая);
   //проверяем:

   ТЗБольшая.ТЗ.ВыбратьСтроку(,"до очистки маленькой");
   ТЗМаленькая.УдалитьСтроки();
   ТЗБольшая.ТЗ.ВыбратьСтроку(,"после очистки маленькой");

помогло, спасибо!