![]() |
|
События форм | ☑ | ||
---|---|---|---|---|
0
Xamio
12.09.19
✎
12:54
|
1С 8.3 ERP 2.4 УФ
Описал элемент формы документа в общем модуле СобытияФорм. Элемент "ПолеВвода" на форму выводится. Как можно управлять видимостью этого созданного таким образом документа? Я хочу чтобы видимость этого поля зависела от значения в одном из полей этой же формы. Попытался программно добавить условное оформление - не работает. В отладчике при открытой форме просмотрел Элементы, там моего поля. |
|||
1
Xamio
12.09.19
✎
12:55
|
*там нет моего поля
|
|||
2
sqr4
12.09.19
✎
12:58
|
(0) что значит не работает? Не меняет видимость или с ошибкой валится. Получай через квадратные скобки
|
|||
3
Xamio
12.09.19
✎
13:01
|
(2) условное оформление
Элемент = Форма.УсловноеОформление.Элементы.Добавить(); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Форма.Элементы.рар_Договор.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаданиеВыполняет"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыИсполнителейЗаданийНаПеревозку.Перевозчик; Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Истина); в последующем в отладке просматриваю УсловноеОформление формы, там моя эта моя настройка присутствует, но ни ошибок ни ожидаемого эффекта |
|||
4
Xamio
12.09.19
✎
13:04
|
мне кажется это связано с тем что я не вижу моего поля "рар_Договор" при отладке в Элементах формы, УсловноеОформление его тоже похоже не видит, ошибки не выдает, но и не работает. В таком случае как по другому можно это реализовать?
|
|||
5
Xamio
12.09.19
✎
13:10
|
описание элемента УсловногоОформления сделано тоже в общем модуле СобытияФорм, сразу после описания вывода самого поля. Если бы это было сделно в форме документа, то ругалось бы на
ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Форма.Элементы.рар_Договор.Имя); а именно на рар_Договор как раз |
|||
6
aleks_default
12.09.19
✎
13:41
|
ПолеЭлемента.Использование = истина
|
|||
7
aleks_default
12.09.19
✎
13:44
|
Вообще Использование везде в истину надо поставить и в полях и в отборе
|
|||
8
sqr4
12.09.19
✎
14:24
|
а нахера условное оформление?
Элементы["НазваниеТвоегоЭлемента"].Видимость = ЗначениеФлага; Нет? |
|||
9
Xamio
12.09.19
✎
15:56
|
(6) везде истина установлена, при отладке просматривал коллекцию условного форматирования
|
|||
10
Xamio
12.09.19
✎
15:57
|
(8) можно, но в Элементах нет моего элемента
|
|||
11
Xamio
12.09.19
✎
15:57
|
(8) пробовал и через скобки
|
|||
12
aleks_default
12.09.19
✎
16:03
|
У тебя там контекста нет формы в этом общем модуле просто. Вот так попробуй
Форма.Элементы.НазваниеТвоегоЭлемента.Видимость = ЗначениеФлага |
|||
13
aleks_default
12.09.19
✎
16:07
|
Но и через условное оформление должно работать. Условие точно выполняется?
|
|||
14
aleks_default
12.09.19
✎
16:08
|
Объект.ЗаданиеВыполняет - тип значения точно перечисление?
|
|||
15
Xamio
12.09.19
✎
16:11
|
(12) в общем модуле СобытияФорм вызываются процедуры ПриСозданииНаСервере и ПриЧтенииНаСервере форм. Я всё это пришу в первой процедуре которая выполняется единожды, поэтому в данном случае простой инициализации не достаточно, она один раз выполнится и всё, а при изменении ЗданчеияФлага, видимость элемента на форме не изменится. Поэтому и использую УсловноеОформление
|
|||
16
sqr4
12.09.19
✎
16:13
|
(15) как я понял обязательное условие по разработке, расширение не придумать?
|
|||
17
sqr4
12.09.19
✎
16:14
|
Покажи код как ты добавляешь элемент на форму и где прописываешь обработчик события на изменения видимости
|
|||
18
Xamio
12.09.19
✎
16:15
|
(16) ну чтобы типовую форму не курочить, так то логично. Просто непонятка с видимостью, должно работать, но описанный таким образом элемент не видится среди элементов формы
|
|||
19
Xamio
12.09.19
✎
16:24
|
(17)
Общий модуль СобытияФорм Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка, ДополнительныеПараметры = Неопределено) Экспорт Если Форма.ИмяФормы = "Документ.ЗаданиеНаПеревозку.Форма.ФормаДокумента" Тогда // описание элемента Элемент = Форма.Элементы.Вставить("Договор", Тип("ПолеФормы"), Форма.Элементы.ГруппаПраво, Форма.Элементы.ГруппаСклад); Элемент.Вид = ВидПоляФормы.ПолеВвода; Элемент.АвтоМаксимальнаяШирина = Ложь; Элемент.МаксимальнаяШирина = 28; Элемент.ПутьКДанным = "Объект.Договор"; Элемент.Видимость = Ложь; // условное оформление Элемент = Форма.УсловноеОформление.Элементы.Добавить(); ПолеЭлемента = Элемент.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Форма.Элементы.Договор.Имя); ОтборЭлемента = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.ЗаданиеВыполняет"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно; ОтборЭлемента.ПравоеЗначение = Перечисления.ТипыИсполнителейЗаданийНаПеревозку.Перевозчик; Элемент.Оформление.УстановитьЗначениеПараметра("Видимость", Истина); КонецЕсли; КонецПроцедуры |
|||
20
aleks_default
12.09.19
✎
16:46
|
Так отладка что показывает? Элемент добавляется на форму или нет?
|
|||
21
aleks_default
12.09.19
✎
16:48
|
Если в ПриСозданииНаСервере Поле есть, а при открытии его нет, значит где-то в промежутке его что-то удаляет
|
|||
22
Xamio
12.09.19
✎
16:50
|
Элемент на форме, всё ок, работает. Но в отладке (например в процедуре при изменении какого либо поля) среди Элементов его нет.
|
|||
23
sqr4
12.09.19
✎
16:55
|
Элемент = Форма.Элементы.Вставить("Договор", Тип("ПолеФормы"), Форма.Элементы.ГруппаПраво, Форма.Элементы.ГруппаСклад);
В качестве родителя что передается, не понял вот это |
|||
24
sqr4
12.09.19
✎
16:55
|
(22) он есть среди элементов, но он внутри родителя Элементы.РодительТвоегоЭЛемента.Договор
|
|||
25
sqr4
12.09.19
✎
16:56
|
Соответственно и тут ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(Форма.Элементы.Договор.Имя); надо происать полное имя
|
|||
26
sqr4
12.09.19
✎
16:59
|
(25) хотя тут нет
|
|||
27
sqr4
12.09.19
✎
17:01
|
хм, а у меня и среди ЭЛементы есть
|
|||
28
Xamio
12.09.19
✎
17:06
|
(27) да, среди Элементы есть, просмотрел, но не работает условное оформление. А у тебя?
|
|||
29
aleks_default
12.09.19
✎
17:12
|
Попробуй сделать обратное условие. Сперва поставить видимость у поля = истина, в условиях отбора НеРавно и оформление Видимость = ложь
|
|||
30
Xamio
12.09.19
✎
17:26
|
(29) попробовал, не работает так же
|
|||
31
ам794123
12.09.19
✎
17:29
|
есть такой метод ЗначениеВРеквизитФормы
|
|||
32
sqr4
12.09.19
✎
17:31
|
такое условное оформление не работает вообще... даже с имеющимися в конфигураторе элементами формы
|
|||
33
sqr4
12.09.19
✎
17:35
|
а на добавление новых объектов нет ограничений? Попробуй через функциональные опции
|
|||
34
sqr4
12.09.19
✎
17:40
|
https://forum.infostart.ru/forum9/topic83976/
ну и собственно ответ Поручика на эту тему |
|||
35
ам794123
12.09.19
✎
17:46
|
(34) придется вернуться к пункту (8)
|
|||
36
sqr4
12.09.19
✎
17:49
|
(35) это как я понял, обработчик нужно будет на поле источник видимость набрасывать, а если он там уже есть, то еще как то.
Как я понял http://catalog.mista.ru/public/1009429/ тут как то можно заюзать функциональные опции |
|||
37
Xamio
12.09.19
✎
18:02
|
(34) В ERP есть документ ЗаданиеНаПеревозку, в форме есть процедура УстановитьУсловноеОформление(), которая задаёт условное оформление для поля типа Справочник, задаётся оформление "ОтметкаНеЗаполненного" - это типовой код, т.е. не совсем наверное прав Поручик
|
|||
38
sqr4
13.09.19
✎
10:28
|
(37) в любом случае не пашет оно даже если все есть на форме и настраивать через конфигуратор. Меняй подход
|
|||
39
sqr4
13.09.19
✎
11:14
|
(37) цвет фона меняет, с видимостью походу не совладать условным оформлением.
|
|||
40
aleks_default
13.09.19
✎
11:16
|
(38)Если не пашет, то нафига в типовой ERP это пишут? Вот кусок кода из типовой
// ЭлементУсловногоОформления = УсловноеОформление.Элементы.Добавить(); ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементыФормы[ИмяПоляВводаСтавкиНДС].Имя); ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементыФормы[ИмяПоляВводаСуммыНДС].Имя); ПолеЭлемента = ЭлементУсловногоОформления.Поля.Элементы.Добавить(); ПолеЭлемента.Поле = Новый ПолеКомпоновкиДанных(ЭлементыФормы[ИмяПоляВводаСуммыСНДС].Имя); СписокНалогообложенийБезНДС = Новый СписокЗначений; СписокНалогообложенийБезНДС.Добавить(Перечисления.ТипыНалогообложенияНДС.ПродажаОблагаетсяЕНВД); СписокНалогообложенийБезНДС.Добавить(Перечисления.ТипыНалогообложенияНДС.ПродажаНеОблагаетсяНДС); СписокНалогообложенийБезНДС.Добавить(Перечисления.ТипыНалогообложенияНДС.ОблагаетсяНДСУПокупателя); ОтборЭлемента = ЭлементУсловногоОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); ОтборЭлемента.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Объект.НалогообложениеНДС"); ОтборЭлемента.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке; ОтборЭлемента.ПравоеЗначение = СписокНалогообложенийБезНДС; ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь); |
|||
41
aleks_default
13.09.19
✎
11:20
|
(40)Хотя правда, это УФ для поля таб. части Товары. Наверное действительно для поля шапки видимость через условное оформление не работает.
|
|||
42
aleks_default
13.09.19
✎
11:23
|
Там в оформлении есть еще параметр "Отображать" может его еще попробовать? ЭлементУсловногоОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Ложь); - тоже не работает?
|
|||
43
sqr4
13.09.19
✎
11:41
|
(42) таже шлюпа, помоему для дока закупки смотрел реквизит направление деятельность там через ФУ убирался
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |