![]() |
|
Как Загнать Структуры в список значений? | ☑ | ||
---|---|---|---|---|
0
Vovik
23.08.05
✎
18:37
|
Есть определенное количество структур, загоняю их в список значений.
Потом читаю список значений и получаю просто слово: Структура Структура... Вопрос: Как загнать структуры в список значений, чтобы потом прочитать эти структуры? |
|||
1
Волшебник
модератор
23.08.05
✎
18:39
|
не путай объект и его строковое представление
|
|||
2
Vovik
23.08.05
✎
18:45
|
(1)Направь пожалуйста на путь истиный!
Для Каждого Элемент из Доки Цикл //как получить структуру из списка значений? КонецЦикла; Спасибо! |
|||
3
Волшебник
модератор
23.08.05
✎
18:46
|
(2) Структура = ЭлементСписка.Значение;
|
|||
4
Vovik
23.08.05
✎
18:49
|
//(4) Результат тот же. Может я добавляю в СЗ неправильно?
СписокЗначений.Добавить(Структура); |
|||
5
Волшебник
модератор
23.08.05
✎
18:51
|
А почему ты думаешь, что твой результат неправильный?
|
|||
6
Vovik
23.08.05
✎
18:52
|
Смотрю по Отладчику!
1.Перед тем как внести в СЗ - вижу всю структуру(поля и значения) 2.Когда получаю ее из СЗ - Просто слово "структура" |
|||
7
Волшебник
модератор
23.08.05
✎
18:55
|
(6) Может не туда смотришь? F2 нажимал?
|
|||
8
Asmody
23.08.05
✎
18:56
|
ТипЗнч?
|
|||
9
Волшебник
модератор
23.08.05
✎
19:00
|
В типовой конфигурации я встречал такую конструкцию:
Реквизит отчета типа строка, которая... содержит структуру, преобразованную в строку, которая... впоследствии оказалась не структурой, а соответствием, которая... содержит массив, который содержит ссылки на объекты, до которых... мне надо было добраться. |
|||
10
Vovik
23.08.05
✎
19:00
|
(8)Только он и есть. В нем 3 различных квалификатора, а в них нет ничнего общего с моей структурой
|
|||
11
Волшебник
модератор
23.08.05
✎
19:03
|
(10) ты скажи, что он возвращает - Тип("Строка") или Тип("Структура")?
|
|||
12
Vovik
23.08.05
✎
19:06
|
(11) Я не внимателен, тип Структура!!!
А как дальше то ее выжать из переменной???? |
|||
13
Asmody
23.08.05
✎
19:08
|
мдя... домой ходи. утро вечера мудренее. :)
|
|||
14
Волшебник
модератор
23.08.05
✎
19:12
|
(12) что сделать?
|
|||
15
Vovik
24.08.05
✎
11:59
|
//Конструкция не работатет:(
КлючСтруктуры="СЕКЦИЯДОКУМЕНТ"; ВидДокумента=СтрокаСЗ[КлючСтруктуры]; //То есть когда структура загоняется в СЗ она херится:( //Где выход? |
|||
16
Asmody
24.08.05
✎
12:02
|
можешь кратенько код показать, т.е., как чего куда загоняешь и как достаешь. (но только ключевые моменты, не надо показывать свою гениальность, выкладывая на форум простыню на два экрана) :)
|
|||
17
Vovik
24.08.05
✎
12:07
|
... ДокументыСтассив.Вставить(Имя, Значение);
КонецЦикла; ДокументыВСЗ.Добавить(ДокументыМассив); //в отладчике видно всю структуру ("ДокументыМассив") Обрабатываем(ДокументыВСЗ)//вызываем другую процедуру и пкередаем СЗ ... //Далее в другой процедуре Процедура Обрабатываем(ДокументыВСЗ) Для Каждого Элемент из Доки Цикл СтрокаСЗ=ДокументыВСЗ.Значение; КонецЦикла; |
|||
18
Vovik
24.08.05
✎
12:11
|
В "СтрокаСЗ" нет нихера, просто пишет Тип структура, а ни одного поля из нее не достать:(
Думаю массив чтоли попробовать поюзать? |
|||
19
Asmody
24.08.05
✎
12:11
|
ДокументыВСЗ - СписокЗначений?
а где у тебя при извлечении берется _элемент_ этого списка? |
|||
20
Vovik
24.08.05
✎
12:13
|
Для Каждого Элемент из Доки Цикл
СтрокаСЗ=ДокументыВСЗ.Значение;//вывбираем элемент СЗ КлючСтруктуры="СЕКЦИЯДОКУМЕНТ"; ВидДокумента=СтрокаСЗ[КлючСтруктуры];//Ищем поле из структуры КонецЦикла; |
|||
21
Asmody
24.08.05
✎
12:20
|
если ДокументыВСЗ - список значений, то вот это:
СтрокаСЗ=ДокументыВСЗ.Значение;//вывбираем элемент СЗ - чушь полная. нет у списка значений свойства Значение! |
|||
22
Vovik
24.08.05
✎
12:22
|
См(3).Есть в отладчике видел.
И без него таже херь получается. Щас использовал массив вместо СЗ и то же облом :( |
|||
23
Asmody
24.08.05
✎
12:26
|
(22) в (3) _элемент_ списка значений! ЭЛЕМЕНТ! блин, как бы это тебе по-проще объяснить? ну это как рота (СписокЗначений) и один служащий этой роты (ЭлементСпискаЗначений). бестолку выяснять, что лежит в кармане у роты!
|
|||
24
Vovik
24.08.05
✎
12:27
|
Так как правильно вытащить элемент из СЗ(структуру в данном случае во всех ее проявлениях)?
|
|||
25
Asmody
24.08.05
✎
12:32
|
СписокЗначений (ValueList)
Элементы коллекции: ЭлементСпискаЗначений Для объекта доступен обход коллекции посредством оператора Для каждого … Из … Цикл. При обходе выбираются элементы коллекции. Возможно обращение к элементу коллекции посредством оператора [...]. В качестве аргумента передается индекс элемента. т.е. что-то типа: Для каждого ЭлементСпискаЗначений из СписокЗначений Цикл ЗначениеЭлементаCпискаЗначений=ЭлементСпискаЗначений.Значение; //<- вот тут твоя структура! КлючСтруктуры="СЕКЦИЯДОКУМЕНТ"; ВидДокумента=ЗначениеЭлементаCпискаЗначений[КлючСтруктуры]; КонецЦикла; |
|||
26
Волшебник
24.08.05
✎
12:36
|
(25) Я это уже говорил в (3)
|
|||
27
Vovik
24.08.05
✎
12:40
|
(15) я же написал про это
|
|||
28
Vovik
24.08.05
✎
12:40
|
Всмысле см 15
|
|||
29
Vovik
24.08.05
✎
12:42
|
Причем эта же конструкция работает до внесения в СЗ. То есть ключ правильный полюбому
|
|||
30
Asmody
24.08.05
✎
12:52
|
(29) еще раз, я не пока не увидел, где из списка значений ты получаешь его элемент.
|
|||
31
Vovik
24.08.05
✎
12:54
|
Процедура ЗагрузитьДокументы(Доки) //доки это сз
Для Каждого Элемент из Доки Цикл СтрокаСЗ=Элемент.Значение; КлючСтруктуры="СЕКЦИЯДОКУМЕНТ"; //пишет ключ не найден ВидДокумента=СтрокаСЗ[КлючСтруктуры]; КонецЦикла; КонецПроцедуры |
|||
32
Asmody
24.08.05
✎
13:02
|
вот код, который работает 100%
Процедура КнопкаВыполнитьНажатие(Кнопка) СписокЗначений=Новый СписокЗначений; Для ии=1 по 10 Цикл Структура=Новый Структура; Структура.Вставить("КлючСтруктуры", "Значение"+ии); СписокЗначений.Добавить(Структура); КонецЦикла; ТипаПроцедура(СписокЗначений); КонецПроцедуры Процедура ТипаПроцедура(СписокЗначений) Для Каждого ЭлементСпискаЗначений из СписокЗначений Цикл ЗначениеЭлементаСпискаЗначений=ЭлементСпискаЗначений.Значение; Если ТипЗнч(ЗначениеЭлементаСпискаЗначений)=Тип("Структура") Тогда КлючСтруктуры="КлючСтруктуры"; Значение=ЗначениеЭлементаСпискаЗначений[КлючСтруктуры]; Сообщить(""+Значение); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
33
Vovik
24.08.05
✎
13:11
|
//а вот эта дрянь не хочет ни в какую:
Процедура ВыбратьСекцииДокументов(Файл) Экспорт Текст = Новый ТекстовыйДокумент(); Текст.Прочитать(Файл); //ищем документы ДокументыСтруктура=Новый Структура(); ДокументыВСЗ=Новый СписокЗначений(); Для Ном=2 По Текст.КоличествоСтрок() Цикл ДокументыСтруктура.Очистить(); Стр=Текст.ПолучитьСтроку(Ном); Если Лев(Врег(СокрЛП(Стр)),14)="СЕКЦИЯДОКУМЕНТ" Тогда Для Ном1=Ном По Текст.КоличествоСтрок() Цикл Стр1=Текст.ПолучитьСтроку(Ном1); Если Лев(Врег(СокрЛП(Стр1)),14)="КОНЕЦДОКУМЕНТА" Тогда Прервать; КонецЕсли; ЕстьЗнакРавно=Найти(Стр1, "="); Имя=Врег(СокрЛП(Лев(Стр1, ЕстьЗнакРавно-1))); //имя в структуре Значение=Сред(Стр1, ЕстьЗнакРавно+1); //значение в структуре ДокументыСтруктура.Вставить(Имя, Значение); КонецЦикла; ДокументыВСЗ.Добавить(ДокументыСтруктура); КонецЕсли; КонецЦикла; ЗагрузитьДокументы(ДокументыВСЗ); КонецПроцедуры Процедура ЗагрузитьДокументы(Доки) Для Каждого Элемент из Доки Цикл СтрокаСЗ=Элемент.Значение; КлючСтруктуры="СЕКЦИЯДОКУМЕНТ"; ВидДокумента=СтрокаСЗ[КлючСтруктуры]; КонецЦикла; КонецПроцедуры |
|||
34
Vovik
24.08.05
✎
13:45
|
Меня это уже бесит, нашел в конфе аналогичные процедуры все как адо, а у меня не идет. Щас буду бить компьютер табуреткой
|
|||
35
Vovik
24.08.05
✎
13:57
|
Сделал блин :)) Пойду напьюсь
|
|||
36
Vovik
24.08.05
✎
13:57
|
Сделал блин :)) Пойду напьюсь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |