![]() |
![]() |
![]() |
|
как обратиться к элементам массива в другой процедуре? | ☑ | ||
---|---|---|---|---|
0
Parti
22.09.09
✎
09:20
|
Перем МассивЗначений
Процедура ПриОткрытии() МассивЗначений = Новый Массив(2); МассивЗначений.Установить(0, "первый"); МассивЗначений.Установить(1, "второй"); МассивЗначений.Установить(2, "третий"); КонецПроцедуры; Процедура ПриЗакрытии() Сообщить(МассивЗначений[1]); КонецПроцедуры ___ Что я делаю не так? Во второй процедуре результат - неопределенно. |
|||
1
Ненавижу 1С
гуру
22.09.09
✎
09:23
|
Как ты их вызываешь? порядок
что это за модуль? нет ли реквизитов формы или объекта таких? где еще идет речь о этой переменной? почему декларирование переменное не кончилось? скрываешь |
|||
2
Ursus maritimus
22.09.09
✎
09:24
|
Афигеть. в таком код 4 ошибки тоько на первый взгляд
|
|||
3
Ненавижу 1С
гуру
22.09.09
✎
09:25
|
Почему Установить, а не добавить?
|
|||
4
Sakura
22.09.09
✎
09:26
|
А модуль чего это? В смысле, какой?
З.Ы. а тебе компилятор ничего странного не сообщает? ;) |
|||
5
Ursus maritimus
22.09.09
✎
09:26
|
Примерно так:
Перем МассивЗначений; Процедура ПриОткрытии() МассивЗначений = Новый Массив(3); МассивЗначений.Установить(0, "первый"); МассивЗначений.Установить(1, "второй"); МассивЗначений.Установить(2, "третий"); КонецПроцедуры Процедура ПриЗакрытии() Сообщить(МассивЗначений[1]); КонецПроцедуры И глваное назначить процедуры событиям |
|||
6
Parti
22.09.09
✎
09:29
|
(4) это модуль формы справочника. Нужно "запомнить" значения реквизитов при открытии и при закрытии формы. Соответсвенно, нужно в обработчике приЗакрытии() сравнивать данные, полученные в ПриОткрытии() формы.
Компилятор мне сообщает, что значение неопределенно |
|||
7
Ненавижу 1С
гуру
22.09.09
✎
09:30
|
(6) поменяй установить на добавить
|
|||
8
Parti
22.09.09
✎
09:30
|
+6 почему я не могу получить доступ к элементам массива, ведь я объявил его переменной
|
|||
9
Sakura
22.09.09
✎
09:32
|
как минимум, потому, что у тебя объявление массива не завершено :)
|
|||
10
Sakura
22.09.09
✎
09:32
|
З.Ы. отладчик тебе поможет :)
|
|||
11
Ursus maritimus
22.09.09
✎
09:32
|
(8) Читай (5) последнюю строку. Много думай. У тебя процедура ПриОткрытии() не вызывается
|
|||
12
Ненавижу 1С
гуру
22.09.09
✎
09:32
|
(8) сделай (7)
|
|||
13
Parti
22.09.09
✎
09:36
|
вот полный текст(модульФормыСправочника):
Процедура ПриОткрытии() СчРеквизитов =0; Спр = Справочники.Материалы.ПолучитьСсылку(); Для каждого реквизитСпр из Спр.Метаданные().Реквизиты Цикл СчРеквизиотов = СчРеквизитов+1; РеквизитПриОткрытии = Новый Массив(10); РеквизитПриОткрытии.Добавить( реквизитСпр); //Сообщить(РеквизитПриОткрытии[счРеквизитов]) КонецЦикла; КонецПроцедуры Процедура ПриЗакрытии() Сообщить(РеквизитПриОткрытии[2]); КонецПроцедуры |
|||
14
Parti
22.09.09
✎
09:38
|
+13 отладчик говорит, что РеквизитПриОткрытии[2] -тип:неопределенно
|
|||
15
Mikeware
22.09.09
✎
09:38
|
"Parti" - это диагноз.
|
|||
16
Parti
22.09.09
✎
09:40
|
(15)возможно. так что с (13)не так?
|
|||
17
Andry888
22.09.09
✎
09:41
|
(13) в цикле массив создаешь 10 раз...
|
|||
18
Mikeware
22.09.09
✎
09:41
|
(16) Ты про область видимости переменных слыхал?
|
|||
19
Ненавижу 1С
гуру
22.09.09
✎
09:42
|
(16) события вызываются?
что отладчик говорит? вообще у тебя массив в цикле, постоянно пересоздается и добавляешь ты 11 элемент код просто ЖО |
|||
20
Sakura
22.09.09
✎
09:43
|
(13) спасибо, хорошее настроение на все утро обеспечено :)
|
|||
21
Ненавижу 1С
гуру
22.09.09
✎
09:44
|
год рождения порадовал
ты программировать умеешь или так? |
|||
22
Parti
22.09.09
✎
09:47
|
ну млин, ошибься, с кем не бывает.=)
пусть будет так: Процедура ПриОткрытии() СчРеквизитов =0; Спр = Справочники.Материалы.ПолучитьСсылку(); РеквизитПриОткрытии = Новый Массив(10); Для каждого реквизитСпр из Спр.Метаданные().Реквизиты Цикл СчРеквизиотов = СчРеквизитов+1; РеквизитПриОткрытии[счРеквизитов]= реквизитСпр; //Сообщить(РеквизитПриОткрытии[счРеквизитов]) КонецЦикла; КонецПроцедуры __ все равно не видится переменная. (18) Перем РеквизитПриОткрытии - оно? |
|||
23
Sakura
22.09.09
✎
09:48
|
(22) а где у тебя объявление собственно переменной РеквизитПриОткрытии? Сейчас она у тебя существует только внутри процедуры ПриОткрытии()
|
|||
24
Parti
22.09.09
✎
09:49
|
Перем РеквизитПриОткрытии;
Процедура ПриОткрытии() СчРеквизитов =0; Спр = Справочники.Материалы.ПолучитьСсылку(); Для каждого реквизитСпр из Спр.Метаданные().Реквизиты Цикл СчРеквизиотов = СчРеквизитов+1; РеквизитПриОткрытии = Новый Массив(10); РеквизитПриОткрытии.Добавить( реквизитСпр); //Сообщить(РеквизитПриОткрытии[счРеквизитов]) КонецЦикла; КонецПроцедуры Процедура ПриЗакрытии() Сообщить(РеквизитПриОткрытии[2]); КонецПроцедуры все равно не определяется |
|||
25
Parti
22.09.09
✎
09:50
|
т.е.
Перем РеквизитПриОткрытии; Процедура ПриОткрытии() СчРеквизитов =0; Спр = Справочники.Материалы.ПолучитьСсылку(); РеквизитПриОткрытии = Новый Массив(10); Для каждого реквизитСпр из Спр.Метаданные().Реквизиты Цикл СчРеквизиотов = СчРеквизитов+1; РеквизитПриОткрытии[счРеквизитов]= реквизитСпр; //Сообщить(РеквизитПриОткрытии[счРеквизитов]) КонецЦикла; КонецПроцедуры Процедура ПриЗакрытии() Сообщить(РеквизитПриОткрытии[2]); КонецПроцедуры |
|||
26
Andry888
22.09.09
✎
09:50
|
(24) Для каждого реквизитСпр из Спр.Метаданные().Реквизиты Цикл
СчРеквизиотов = СчРеквизитов+1; !!!!!!!!!!!!!!РеквизитПриОткрытии = Новый Массив(10);!!!!!!!!!!!! |
|||
27
Parti
22.09.09
✎
09:52
|
(26) да знаю я, знаю. просто скопипастил со страницы не с того места. см(25)
|
|||
28
Ненавижу 1С
гуру
22.09.09
✎
09:54
|
(27) события привязаны? отрабатывают?
|
|||
29
Parti
22.09.09
✎
09:55
|
(27)т.е. привязаны? События привязаны к форме
|
|||
30
Sakura
22.09.09
✎
09:55
|
(25) это копипаст?
Для каждого реквизитСпр из Спр.Метаданные().Реквизиты Цикл СчРеквизиотов = СчРеквизитов+1;!!! РеквизитПриОткрытии[счРеквизитов]= реквизитСпр; отладчиком проверь значение счРеквизитов, если у тебя так в коде, то оно не меняется З.Ы. вот за это и не люблю одинэску, что один раз опечатаешься в имени переменной при присваивании ей значения, а она это за новую переменную примет и не ничего не скажет... ищу потом, где косяк) |
|||
31
Ненавижу 1С
гуру
22.09.09
✎
09:59
|
закрывай конфигуратор и беги оттуда
|
|||
32
Parti
22.09.09
✎
10:00
|
(30) Я люблю тебя!!!
СчРеквизиотов <> СчРеквизитов зы. сорри ту эл |
|||
33
Sakura
22.09.09
✎
10:02
|
(32) не надо меня любить ))
надо внимательнее код проверять и отладчиком пользоваться :) З.Ы. спасибо за позитив с утра )) |
|||
34
Parti
22.09.09
✎
10:35
|
сорри, но:
Для каждого реквизитСпр из Спр.Метаданные().Реквизиты Цикл СчРеквизитов = СчРеквизитов+1; РеквизитПриОткрытии[счРеквизитов] =Ссылка.реквизитСпр;// Ошибка - поле объекта не обнаружено Сообщить(РеквизитПриОткрытии[счРеквизитов]) КонецЦикла; __ как получить значение реквизита для текущего элемента? Если я знаю элемент(Ссылка), знаю имя реквизита(РеквизитСпр) |
|||
35
Ненавижу 1С
гуру
22.09.09
✎
10:36
|
Ссылка[ИмяРеквизита]
|
|||
36
Parti
22.09.09
✎
10:38
|
Ошибка:
Получение элемента по индексу для значения не определено РеквизитПриОткрытии[счРеквизитов] =Ссылка[реквизитСпр]; |
|||
37
Ненавижу 1С
гуру
22.09.09
✎
10:39
|
(36)
Ссылка[реквизитСпр.Имя] |
|||
38
Parti
22.09.09
✎
10:39
|
(37) спс! Тебя я тоже люблю!
|
|||
39
Ненавижу 1С
гуру
22.09.09
✎
10:40
|
(38) пошел вон, я не такой
|
|||
40
Sakura
22.09.09
✎
10:42
|
(38) что-то ты очень уж любвеобильный сегодня... к чему бы это..))
|
|||
41
lxs
22.09.09
✎
10:47
|
(39) )))))))))))))) 5 баллов ))
(40) осеннее обострение |
|||
42
Sakura
22.09.09
✎
10:50
|
(41) на весеннее больше похоже ))
|
|||
43
lxs
22.09.09
✎
10:54
|
+(42) угу, запоздалое..
|
|||
44
Sakura
22.09.09
✎
10:55
|
(43) настоящему коту и в декабре март :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |