Вход | Регистрация


1С:Предприятие ::

Метки: 

Список значений в таблице значений

Я
   ander139
 
21.05.04 - 10:09
Есть таблица значений. В каждой строке такой таблицы я делаю одну ячейку, содержащую список значений. Потом считываю эти списки, а они все такие же, как и последний введенный.
Может быть кто-нибудь встречался с похожей ситуёвиной?
 
  Рекламное место пустует
   SnarkHunter
 
3 - 21.05.04 - 10:25
Ты их не присваиванием, а через выгрузить()...
   mike
 
8 - 21.05.04 - 13:15
правильно работает такой вариант :

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

.....
ТЗ.спис = спис;
   mike
 
11 - 21.05.04 - 13:27
пробовал и списки и таблицы значений туда засовывал , все прекрасно работает.
   Bzzzzz
 
13 - 21.05.04 - 13:31
(12) Я так же помещал Таблицы.
Причем можно обращаться тз.Табл.ВывестиСекцию(..)
   lexa
 
15 - 21.05.04 - 13:42
(13) со списком присваивание точно не пройдет, я так сделал, а потом долго удивлялся, прада я просто переменную использовал. Но SnarkHunter прав - при присваивании создается ссылка на список.
   lexa
 
16 - 21.05.04 - 13:44
ТЗ.НоваяСтрока(); 
спис = СоздатьОбъект("СписокЗначений"); 
// заполняем список 

..... 
спис.Выгрузить(ТЗ.спис) ;
   Bzzzzz
 
17 - 21.05.04 - 13:48
тз=СоздатьОбъект("ТаблицаЗначений");
    тз.НоваяКолонка("сз");
    
    
    Для Ном=1 По 5 Цикл
        сз=СоздатьОбъект("СписокЗначений");
            сз.ДобавитьЗначение(""+Ном+" = 1");
            сз.ДобавитьЗначение(""+Ном+" = 2");
        тз.НоваяСтрока();
            тз.сз=сз;
    КонецЦикла;
    
    тз.ВыбратьСтроки();
    Пока тз.ПолучитьСтроку() = 1 Цикл
        Для Ном=1 По тз.сз.РазмерСписка() Цикл
            Сообщить(тз.сз.ПолучитьЗначение(Ном));
        КонецЦикла;
    КонецЦикла;
   lexa
 
18 - 21.05.04 - 13:52
ТЗ.НоваяСтрока(); 
спис = СоздатьОбъект("СписокЗначений"); 
// заполняем список 

.....
ТЗ.спис = СоздатьОбъект("СписокЗначений"); 
спис.Выгрузить(ТЗ.спис) ;
   SnarkHunter
 
19 - 21.05.04 - 13:52
И что?
Ты сделай в ТЗ хотя бы 2 строки, в которых разные списки...
   Bzzzzz
 
21 - 21.05.04 - 13:57
(20) не понял тебя?
в ТЗ 5 строк, в каждой свой СЗ, со своими значениями
   Bzzzzz
 
22 - 21.05.04 - 14:03
Результат работы кода (17)
1 = 1
1 = 2
2 = 1
2 = 2
3 = 1
3 = 2
4 = 1
4 = 2
5 = 1
5 = 2
   SnarkHunter
 
23 - 21.05.04 - 14:04
Недоглядел... Строк действительно 5, вот только значения в Сз одинаковые для всех строк... Попробуй сделать разные...
   lexa
 
28 - 21.05.04 - 14:26
(25) Да все правильно 
тз=СоздатьОбъект("ТаблицаЗначений"); 
   тз.НоваяКолонка("сз"); 
    
    
   Для Ном=1 По 5 Цикл 
       сз=СоздатьОбъект("СписокЗначений"); 
           сз.ДобавитьЗначение(""+Ном+" = 1"); 
           сз.ДобавитьЗначение(""+Ном+" = 2"); 
       тз.НоваяСтрока(); 
           тз.сз=сз; 
   КонецЦикла; 
    
   тз.ВыбратьСтроки(); 
   Пока тз.ПолучитьСтроку() = 1 Цикл 
       Для Ном=1 По тз.сз.РазмерСписка() Цикл
               Сообщ =Строка(тз.НомерСтроки) + " " +Строка(Ном)+ " " + тз.сз.ПолучитьЗначение(Ном); 
           Сообщить(Сообщ); 
       КонецЦикла; 
   КонецЦикла; 
Получил 
1 1 1 = 1
1 2 1 = 2
2 1 2 = 1
2 2 2 = 2
3 1 3 = 1
3 2 3 = 2
4 1 4 = 1
4 2 4 = 2
5 1 5 = 1
5 2 5 = 2
   SnarkHunter
 
29 - 21.05.04 - 14:27
У тебя в КАЖДОЙ строке ТЗ ОДИН И ТОТ ЖЕ список...
   Bzzzzz
 
33 - 21.05.04 - 14:38
(32) Сделай так и посмотри значения в списках :-))
    тз.ВыбратьСтроки();
    Пока тз.ПолучитьСтроку() = 1 Цикл
        Зн="";
        тз.сз.ВыбратьЗначение(Зн);
       //Для Ном=1 По тз.сз.РазмерСписка() Цикл

       //    Сообщить(тз.сз.ПолучитьЗначение(Ном));

       //КонецЦикла;

    КонецЦикла;
 
 
   Bzzzzz
 
34 - 21.05.04 - 14:41
Для Ном=1 По 5 Цикл
        сз=СоздатьОбъект("СписокЗначений");
            сз.ДобавитьЗначение(""+Ном+" = 1");
            сз.ДобавитьЗначение(""+Ном+" = 2");
            Если Ном%2=0 Тогда
                сз.ДобавитьЗначение(""+Ном+" = 3");
            КонецЕсли;
        тз.НоваяСтрока();
            тз.сз=сз;
    КонецЦикла;
вот тебе разный размер списков :-))
   lexa
 
35 - 21.05.04 - 14:41
(29) Для каждой строки ТЗ Bzzzzz создает каждый раз новый список значений.
сз=СоздатьОбъект("СписокЗначений"); - находится внутри цикла заполнения ТЗ.
   ChAlex
 
39 - 25.05.04 - 16:56
Я делаю так (и ни каких проблем нет)!
Т=СоздатьОбъект("ТаблицаЗначений");
Т.НоваяКолонка("Спис");
Для А=1 По ... Цикл
   Т.НоваяСтрока();
   Т.Спис=СоздатьОбъект("СписокЗначений");
   Для К=1 По ... Цикл
       Т.Спис.Добавить(НекоеЗначение);
   КонецЦикла;
КонецЦикла;
   spock
 
41 - 25.05.04 - 20:37
Религиозно неверно делать присваивание СпискаЗначений или ТаблицыЗначений. Правильно делать Выгрузить().
А для прикола сделайте коррективы в примере (34):
Для Ном=1 По 5 Цикл
    сз = СоздатьОбъект("СписокЗначений");
    сз.ДобавитьЗначение(""+Ном+" = 1");
    сз.ДобавитьЗначение(""+Ном+" = 2");
    Если Ном%2=0 Тогда
        сз.ДобавитьЗначение(""+Ном+" = 3");
    КонецЕсли;
    тз.НоваяСтрока();
    тз.сз=сз;
    сз = ""; << ====
КонецЦикла;
   NiGMa
 
53 - 27.05.04 - 09:42
Я такую ситуацию обхожу проще:
тз.Список = ЗначениеВСтрокуВнутр(сз);

Ну и соотв. назад:

сз = ЗначениеИзСтрокиВнутр(тз.Список);
   SnarkHunter
 
54 - 27.05.04 - 09:43
Это вовсе не проще...



Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует