|
Объясните пожалуйста ситуацию с переменными | ☑ | ||
---|---|---|---|---|
0
oleg_prg
26.09.12
✎
15:16
|
Добрый день!//вопрос почему так не работает
//вопрос почему так не работает ЭлементСубконто = ЭлементыФормы["ТЧВыписка"].ТекущиеДанные[СокрЛП(РеквизитСубконто)+СокрЛП(А+1)]; ЭлементСубконто = ЭлементыФормы.ТЧВыписка.ТекущиеДанные["КоррСчет"].ВидыСубконто[А].ВидСубконто.ТипЗначения.ПривестиЗначение(); //а так работает ЭлементСубконто = ЭлементыФормы["ТЧВыписка"].ТекущиеДанные[СокрЛП(РеквизитСубконто)+СокрЛП(А+1)]; ЭлементыФормы["ТЧВыписка"].ТекущиеДанные[СокрЛП(РеквизитСубконто)+СокрЛП(А+1)] = ЭлементыФормы.ТЧВыписка.ТекущиеДанные["КоррСчет"].ВидыСубконто[А].ВидСубконто.ТипЗначения.ПривестиЗначение(); Глюк платформы? 1С:Предприятие 8.1 (8.1.15.14) |
|||
1
oleg_prg
26.09.12
✎
15:18
|
Или я что-то не так делаю?
|
|||
2
Mort
26.09.12
✎
15:19
|
А = Б
А = В Почему Б не стало равно В ? |
|||
3
oleg_prg
26.09.12
✎
15:21
|
Да! Типа того, только в первом случае тип ЭлементСубконто изменяется, но на форме ничего не происходт, - поле как было неопределенного типа любая ссылка так и остается
Как-будто при переброске через переменную ЭлементСубконто что-то происходит... |
|||
4
oleg_prg
26.09.12
✎
15:22
|
Долго не понимал почему так, потом написал код без переменной как в примере 2 и все заработало. Странно
|
|||
5
Mort
26.09.12
✎
15:24
|
Т.е. код в (2) ничем не смущает?
|
|||
6
oleg_prg
26.09.12
✎
15:24
|
//так не работает Вариант 1
ЭлементСубконто = ЭлементыФормы["ТЧВыписка"].ТекущиеДанные[СокрЛП(РеквизитСубконто)+СокрЛП(А+1)]; ЭлементСубконто = ЭлементыФормы.ТЧВыписка.ТекущиеДанные["КоррСчет"].ВидыСубконто[А].ВидСубконто.ТипЗначения.ПривестиЗначение(); //а так работает Вариант2 ЭлементыФормы["ТЧВыписка"].ТекущиеДанные[СокрЛП(РеквизитСубконто)+СокрЛП(А+1)] = ЭлементыФормы.ТЧВыписка.ТекущиеДанные["КоррСчет"].ВидыСубконто[А].ВидСубконто.ТипЗначения.ПривестиЗначение(); т.е. при использовании переменной ЭлементСубконто на форме ничего не происходит, а если |
|||
7
oleg_prg
26.09.12
✎
15:25
|
(2) причем здесь этот код? Естественно он работать не будет
|
|||
8
oleg_prg
26.09.12
✎
15:26
|
Ответьте по человечески без смущает, не смущает.
|
|||
9
Mort
26.09.12
✎
15:26
|
А то что в первом случае "ЭлементыФормы["ТЧВыписка"].ТекущиеДанные[СокрЛП(РеквизитСубконто)+СокрЛП(А+1)]" стоит справа от знака "=", а во втором слева?
|
|||
10
Фокусник
26.09.12
✎
15:27
|
(7) смотри в отладчике в первом примере в ЭлементСубконто какой тип данных? :)
|
|||
11
oleg_prg
26.09.12
✎
15:28
|
(7) Неопределно
|
|||
12
oleg_prg
26.09.12
✎
15:29
|
затем этот тип в строке 2
ЭлементСубконто = ЭлементыФормы.ТЧВыписка.ТекущиеДанные["КоррСчет"].ВидыСубконто[А].ВидСубконто.ТипЗначения.ПривестиЗначение(); ЭлементСубконто становится ссылка Справочники.СтатьиЗатрат вроде все ок. Но при этом на форме ничего не меняется, вот в чем дело |
|||
13
timurhv
26.09.12
✎
15:30
|
(12) у тебя в первой строке должен быть ссылочный тип, а неопределено
|
|||
14
Фокусник
26.09.12
✎
15:33
|
(11)
Переменная = Неопределено; Переменная = НовоеЗначение; разве это не код в (2)? :) |
|||
15
acsent
26.09.12
✎
15:35
|
(7) А так если
ЭлементСубконто = Б ЭлементСубконто = В |
|||
16
oleg_prg
26.09.12
✎
15:37
|
Ситуация такая на форме есть ТЧВыписка - это таблица в таблице есть КоррСчет и Субконто1..3
При выборе счета КоррСчет я должен субконто1..3 назначить типы как у субконто КоррСчет. Так вот пишу код и он почему-то не работает ЭлСчет = ЭлементыФормы["ТЧВыписка"].ТекущиеДанные[РеквизитСчет]; КоличествоСубконто = ЭлСчет.ВидыСубконто.Количество(); Для А = 0 по КоличествоСубконто - 1 Цикл ТипСубконто = ЭлСчет.ВидыСубконто[А].ВидСубконто.ТипЗначения.ПривестиЗначение(); ЭлементСубконто_ = ЭлементыФормы["ТЧВыписка"].ТекущиеДанные[СокрЛП(РеквизитСубконто)+СокрЛП(А+1)]; Если ТипЗНЧ(ЭлементСубконто_) <> ТипЗНЧ(ТипСубконто) Тогда ЭлементСубконто_ = ЭлементыФормы.ТЧВыписка.ТекущиеДанные["КоррСчет"].ВидыСубконто[А].ВидСубконто.ТипЗначения.ПривестиЗначение(); КонецЕсли; КонецЦикла; |
|||
17
Mort
26.09.12
✎
15:37
|
В 1С есть ситуация когда оператор "=" изменяет правый операнд, но это не эта ситуация.
|
|||
18
oleg_prg
26.09.12
✎
15:37
|
но как только я меняю строку в если на вот это, то все ОК!!! Непонимаю... Может мне отдыхать пора...
ЭлементыФормы["ТЧВыписка"].ТекущиеДанные[СокрЛП(РеквизитСубконто)+СокрЛП(А+1)] = ЭлементыФормы.ТЧВыписка.ТекущиеДанные["КоррСчет"].ВидыСубконто[А].ВидСубконто.ТипЗначения.ПривестиЗначение(); |
|||
19
Фокусник
26.09.12
✎
15:50
|
(18) А так ты вместо кода:
А = Б А = В делаешь Б = В :) |
|||
20
oleg_prg
26.09.12
✎
15:54
|
(19) Да, кажется понял. Спасибо ))) Туплю!
|
|||
21
Lexusss
26.09.12
✎
16:02
|
Код работает, но не так, как ты ожидаешь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |