Видимость элемента на форме

1. Vhett 30.10.17 15:21 Сейчас в теме
&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
		Если ВалютаДокумента = "EUR*" Тогда	
		//Если Элементы.Международный = Истина Тогда   
		//Если Объект.Соглашение = "Россия" ИЛИ Объект.Соглашение = "МВЛ" Тогда       
			Элементы.СуммаВсегоРуб.Видимость = Истина; 
			ВсегоВЕвро = СуммаВсего * 75;                                                 
КонецЕсли;
КонецПроцедуры
Показать


Такой не совсем понятный случай. Пытаюсь показать элемент на форме если в форме международность = истина. Но программно, никакого значения международности не присваивается, хотя в самой форме работает нормально. То стоит галочка, то нет, как положено. Использовал другие варианты, с них я получаю нужное значение, но условие не работает, элемент по прежнему скрыт.
По теме из базы знаний
Найденные решения
33. soularise 30.10.17 16:16 Сейчас в теме
(29) Если на клиенте то пишите так
Если ВРег(Строка(ВалютаДокумента)) = "EUR*" Тогда
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nnsidorov22 30.10.17 15:25 Сейчас в теме
Может вам нужно написать так?
Объект.Международный = Истина
3. Vhett 30.10.17 15:29 Сейчас в теме
(2) Нет, он выдаёт что "Поле объекта не обнаружено"
9. nnsidorov22 30.10.17 15:36 Сейчас в теме
(3)Международный это у вас реквизит формы или объекта?
4. Skill 30.10.17 15:32 Сейчас в теме
(0) А что у вас в ВалютаДокумента? Какого типа?
5. Skill 30.10.17 15:33 Сейчас в теме
+(4) Ну или Объект.международность = истина
7. Vhett 30.10.17 15:34 Сейчас в теме
(5) выше уже написал, что поле объекта не обнаружено
6. Vhett 30.10.17 15:33 Сейчас в теме
(4) Ссылка на справочник Валюты
8. Skill 30.10.17 15:35 Сейчас в теме
(6) Ну тогда и сравнивайте правильно Если ВалютаДокумента = Справочники.Валюты.НайтиПоНАименованию("EUR"). Хотя вообще костыли какие-то страшные.
11. Vhett 30.10.17 15:40 Сейчас в теме
(8) Вот я и сравниваю. Получается что EUR = EUR, но при этом всё равно не работает оператор Если. Видимость не включается.
12. Skill 30.10.17 15:43 Сейчас в теме
(11) В том условии, которое у вас написано в заголовке, вы не получите истину никогда.
14. Vhett 30.10.17 15:43 Сейчас в теме
(12) и где я допустил ошибку?
17. Skill 30.10.17 15:47 Сейчас в теме
(14) Вы допускаете ошибку при сравнении разных типов данных.
Вы можете написать например вот так
Если ВалютаДокумента.Наименование = "EUR*"

но что такое "EUR*" со звездочкой? Именно так называется валюта или вы указываете на некий символ?
18. Vhett 30.10.17 15:48 Сейчас в теме
(17) Так валюта называется. Извиняюсь, что сразу не уточнил.
15. soularise 30.10.17 15:43 Сейчас в теме
(11) ВалютаДокумента у Вас имеет тип СправочникСсылка.Валюты, вы их сравниваете со строкой?
16. Vhett 30.10.17 15:45 Сейчас в теме
(15) всё верно. Через точку останова, смотрел значение, получаю именно то, которое мне нужно. ВалютаДокумента = "EUR*"
19. soularise 30.10.17 15:49 Сейчас в теме
(16)
&НаСервере
Процедура ПриСозданииНаСервере(Отказ)
    
        Если ВалютаДокумента = Справочники.Валюты.НайтиПоНаименованию("EUR*") Тогда    
        //Если Элементы.Международный = Истина Тогда   
        //Если Объект.Соглашение = "Россия" ИЛИ Объект.Соглашение = "МВЛ" Тогда       
            Элементы.СуммаВсегоРуб.Видимость = Истина; 
            ВсегоВЕвро = СуммаВсего * 75;                                                 
КонецЕсли;
КонецПроцедуры
Показать
10. soularise 30.10.17 15:38 Сейчас в теме
А Международный это реквизит формы или объекта? Если Реквизит формы то просто
Если Международный Тогда
13. Vhett 30.10.17 15:43 Сейчас в теме
20. nnsidorov22 30.10.17 15:53 Сейчас в теме
(13)Можете скинуть скриншот конструктора формы?
21. Vhett 30.10.17 15:58 Сейчас в теме
(20)
Прикрепленные файлы:
23. nnsidorov22 30.10.17 16:02 Сейчас в теме
(21)по данному скриншоту не понятно что Международный это реквизит объекта.
24. succub1_5 89 30.10.17 16:05 Сейчас в теме
(21)"Международный" в группировке Объект или нет? Скрин с реквизитом бы, или так напишите.
22. Skill 30.10.17 16:00 Сейчас в теме
напишите уже в условии
Если ВалютаДокумента.Наименование = "EUR*"
и не мучайте людей :)
25. Vhett 30.10.17 16:09 Сейчас в теме
Да. Но когда пишу Объект.Международный, ничего не находит в подсказках. Да и если запустить отладку, один фиг, ошибку выдаёт
Прикрепленные файлы:
26. succub1_5 89 30.10.17 16:12 Сейчас в теме
(25)понятно, справа поле Свойства - ПутьКДанным: Объект.Рейс.НомерРейса.Международный

Объект.Рейс.НомерРейса.Международный = Истина
32. Vhett 30.10.17 16:16 Сейчас в теме
(26) так тоже пытался. Поле объекта не обнаружено...
27. Vhett 30.10.17 16:12 Сейчас в теме
Да Бог с ним, с "международным". Он не хочет выполнять условие, если валюта документа Евро.
28. soularise 30.10.17 16:13 Сейчас в теме
(27) Я вам написал вызов серверной процедуры при создании на сервере, вы пробовали так?
29. Vhett 30.10.17 16:14 Сейчас в теме
(28) пробовал, не работает =(

И так тоже не катит: Если ВалютаДокумента.Наименование = "EUR*"
31. Skill 30.10.17 16:15 Сейчас в теме
(29)
Пришлите скриншот что у вас в отладчике ВалютаДокумента.Наименование
33. soularise 30.10.17 16:16 Сейчас в теме
(29) Если на клиенте то пишите так
Если ВРег(Строка(ВалютаДокумента)) = "EUR*" Тогда
37. Vhett 30.10.17 16:22 Сейчас в теме
(33)
Если ВРег(Строка(ВалютаДокумента)) = "EUR*" Тогда


То что нужно!! Спасибо товарищи!

Вот где собака зарыта была.
38. spacecraft 30.10.17 16:25 Сейчас в теме
(37) это не решение, это костыль.
Решение в (16) было.
Или хотя бы так:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ)
    
    Если ВалютаДокумента.Наименование = "EUR*" Тогда    
            Элементы.СуммаВсегоРуб.Видимость = Истина; 
            ВсегоВЕвро = СуммаВсего * 75;                                                 
    КонецЕсли;
КонецПроцедуры
30. Skill 30.10.17 16:14 Сейчас в теме
(27) Вы вот так писали?
Если ВалютаДокумента.Наименование = "EUR*"
34. Vhett 30.10.17 16:19 Сейчас в теме
Вот
Прикрепленные файлы:
35. spacecraft 30.10.17 16:20 Сейчас в теме
(34) во-первых, все это нужно делать на сервере.
во-вторых, какой Путь данных у ВалютаДокумента?
36. soularise 30.10.17 16:21 Сейчас в теме
(34) вы на клиенте не сможете обратится к полям по ссылке, только на сервере
39. Vhett 30.10.17 16:28 Сейчас в теме
Забавно, что на регистр реагирует.
40. spacecraft 30.10.17 16:29 Сейчас в теме
(39) в данном случае она не регистр строки реагирует, а на приведение представления ссылки к строке.
42. succub1_5 89 30.10.17 16:33 Сейчас в теме
(39)а кстати Рейс/Рейс.НомерРейса - не ссылка?
43. Vhett 30.10.17 16:39 Сейчас в теме
44. succub1_5 89 30.10.17 16:50 Сейчас в теме
(43)ну тогда так:
&НаКлиенте
Процедура ПриОткрытии(Отказ)
    
       Если ПолучитьВалютуДокументаНаСервере() = "EUR*" Тогда    
       Если ПолучитьМеждународныйНаСервере() = Истина Тогда   
        //Если Объект.Соглашение = "Россия" ИЛИ Объект.Соглашение = "МВЛ" Тогда       
            Элементы.СуммаВсегоРуб.Видимость = Истина; 
            ВсегоВЕвро = СуммаВсего * 75;                                                 
КонецЕсли;
КонецЕсли;
КонецПроцедуры

&НаСервере
Функция ПолучитьВалютуДокументаНаСервере()    
    Возврат СокрЛП(ВалютаДокумента.Наименование); 
КонецФункции

&НаСервере
Функция ПолучитьМеждународныйНаСервере()   
    Возврат Объект.Рейс.НомерРейса.Международный;
КонецФункции
Показать
45. spacecraft 30.10.17 16:54 Сейчас в теме
(44) вот за такое надо по рукам бить.
46. succub1_5 89 30.10.17 16:58 Сейчас в теме
(45)ок, упростите - напишите как правильно =)
47. spacecraft 30.10.17 17:05 Сейчас в теме
(46) я уже в (38) показал. Первый правильный ответ был еще в (19).
А в клиентской процедуре ПриОткрытии 2 раза вызывать сервер только для получения отдельных данных, это моветон.
48. succub1_5 89 31.10.17 08:06 Сейчас в теме
(47)ок, вы были бы правы, еслиб топикстартер не написал что ему надо ПриОткрытии &НаКлиенте. А так что надо и чтоб работало - вот мой вариант.
41. succub1_5 89 30.10.17 16:31 Сейчас в теме
1) да процедура &НаКлиенте - чтобы скрывать/показывать элементы
2) с Клиента обращаетесь на Сервер чтобы получать значения ссылочных типов (что валюта, что Рейс/НомерРейса - если тоже ссылка)
3) Когда &НаКлиенте начинаете набирать Объект - что после точки показывает, или Международный - что показывает при "Между+Ctrl+Пробел" ?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот