Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 17:54

Не корректно работает отображение видимости

Автор deyray, 07 июн 2022, 17:06

0 Пользователей и 1 гость просматривают эту тему.

deyray

При выборе определенного значения в группе, все элементы должны скрываться и оставаться только выбранный, но работает только с плиткой, вот код
Процедура ГруппаПриИзменении(Элемент)
Группа = Объект.Группа;
Если Группа = ПредопределенноеЗначение("Перечисление.Группа.Дверь") Тогда
ЭтаФорма.Элементы.Группа4.Видимость = Ложь;
ЭтаФорма.Элементы.Группа6.Видимость = Ложь;
ЭтаФорма.Элементы.Группа7.Видимость = Ложь;
ЭтаФорма.Элементы.Группа8.Видимость = Ложь;
Иначе
ЭтаФорма.Элементы.Группа4.Видимость = Истина;
ЭтаФорма.Элементы.Группа6.Видимость = Истина;
ЭтаФорма.Элементы.Группа7.Видимость = Истина;
ЭтаФорма.Элементы.Группа8.Видимость = Истина;
КонецЕсли;

Если Группа = ПредопределенноеЗначение("Перечисление.Группа.Краска") Тогда
ЭтаФорма.Элементы.Группа4.Видимость = Ложь;
ЭтаФорма.Элементы.Группа5.Видимость = Ложь;
ЭтаФорма.Элементы.Группа6.Видимость = Ложь;
ЭтаФорма.Элементы.Группа7.Видимость = Ложь;
Иначе
ЭтаФорма.Элементы.Группа4.Видимость = Истина;
ЭтаФорма.Элементы.Группа5.Видимость = Истина;
ЭтаФорма.Элементы.Группа6.Видимость = Истина;
ЭтаФорма.Элементы.Группа7.Видимость = Истина;
КонецЕсли;

Если Группа = ПредопределенноеЗначение("Перечисление.Группа.Обои") Тогда
ЭтаФорма.Элементы.Группа4.Видимость = Ложь;
ЭтаФорма.Элементы.Группа5.Видимость = Ложь;
ЭтаФорма.Элементы.Группа6.Видимость = Ложь;
ЭтаФорма.Элементы.Группа8.Видимость = Ложь;
Иначе
ЭтаФорма.Элементы.Группа4.Видимость = Истина;
ЭтаФорма.Элементы.Группа5.Видимость = Истина;
ЭтаФорма.Элементы.Группа6.Видимость = Истина;
ЭтаФорма.Элементы.Группа8.Видимость = Истина;
КонецЕсли;

Если Группа = ПредопределенноеЗначение("Перечисление.Группа.Окно") Тогда
ЭтаФорма.Элементы.Группа5.Видимость = Ложь;
ЭтаФорма.Элементы.Группа6.Видимость = Ложь;
ЭтаФорма.Элементы.Группа7.Видимость = Ложь;
ЭтаФорма.Элементы.Группа8.Видимость = Ложь;
Иначе
ЭтаФорма.Элементы.Группа5.Видимость = Истина;
ЭтаФорма.Элементы.Группа6.Видимость = Истина;
ЭтаФорма.Элементы.Группа7.Видимость = Истина;
ЭтаФорма.Элементы.Группа8.Видимость = Истина;
КонецЕсли;

Если Группа = ПредопределенноеЗначение("Перечисление.Группа.Плитка") Тогда
ЭтаФорма.Элементы.Группа4.Видимость = Ложь;
ЭтаФорма.Элементы.Группа5.Видимость = Ложь;
ЭтаФорма.Элементы.Группа7.Видимость = Ложь;
ЭтаФорма.Элементы.Группа8.Видимость = Ложь;
Иначе
ЭтаФорма.Элементы.Группа4.Видимость = Истина;
ЭтаФорма.Элементы.Группа5.Видимость = Истина;
ЭтаФорма.Элементы.Группа7.Видимость = Истина;
ЭтаФорма.Элементы.Группа8.Видимость = Истина;
КонецЕсли
КонецПроцедуры

LexaK

deyray, потому что эта команда стоит последней она и переопределяет видимость групп

 Если Группа = ПредопределенноеЗначение("Перечисление.Группа.Плитка") Тогда

необходимо переделать логику программы!
если помогло нажмите: Спасибо!

LexaK

deyray, примерно такой код попробуйте
Процедура ГруппаПриИзменении(Элемент)

//с начала все отключаем
    ЭтаФорма.Элементы.Группа4.Видимость = Ложь;
    ЭтаФорма.Элементы.Группа5.Видимость = Ложь;
    ЭтаФорма.Элементы.Группа6.Видимость = Ложь;
    ЭтаФорма.Элементы.Группа7.Видимость = Ложь;
    ЭтаФорма.Элементы.Группа8.Видимость = Ложь;

Группа = Объект.Группа;
//затем включаем только то что совпадает с выбранным
Если Группа = ПредопределенноеЗначение("Перечисление.Группа.Дверь") Тогда
        ЭтаФорма.Элементы.Группа5.Видимость = Истина;

    ИначеЕсли Группа = ПредопределенноеЗначение("Перечисление.Группа.Краска") Тогда
        ЭтаФорма.Элементы.Группа8.Видимость = Истина;

    ИначеЕсли Группа = ПредопределенноеЗначение("Перечисление.Группа.Обои") Тогда
        ЭтаФорма.Элементы.Группа7.Видимость = Истина;

    ИначеЕсли Группа = ПредопределенноеЗначение("Перечисление.Группа.Окно") Тогда
        ЭтаФорма.Элементы.Группа4.Видимость = Истина;

    ИначеЕсли Группа = ПредопределенноеЗначение("Перечисление.Группа.Плитка") Тогда
        ЭтаФорма.Элементы.Группа6Видимость = Истина;

Иначе
//если не попали в заданное условие - тогда все
    ЭтаФорма.Элементы.Группа4.Видимость = Истина;
    ЭтаФорма.Элементы.Группа5.Видимость = Истина;
    ЭтаФорма.Элементы.Группа6.Видимость = Истина;
    ЭтаФорма.Элементы.Группа7.Видимость = Истина;
    ЭтаФорма.Элементы.Группа8.Видимость = Истина;

КонецЕсли

КонецПроцедуры
если помогло нажмите: Спасибо!

deyray


deyray

LexaK, а не подскажите как быть, если фотография успешно добавляется на форму, но не сохраняется в ней

&НаКлиенте
Процедура ДобавитьФото(Команда)
ИмяФайла = "";
ПутьФайла = "";
Если ПоместитьФайл(ПутьФайла, , ИмяФайла, Истина) = Истина Тогда
ФотоМатериала = ПутьФайла;
УстановитьФото();
КонецЕсли;
КонецПроцедуры

&НаСервере
Процедура УстановитьФото()

НовыйФайлФотоМатериала = Справочники.Файлы.СоздатьЭлемент();

НовыйФайлФотоМатериала.Файл = Новый ХранилищеЗначения(ПолучитьИзВременногоХранилища(ФотоМатериала));
ФотоМатериала = ПоместитьВоВременноеХранилище(НовыйФайлФотоМатериала.Файл.Получить());

НовыйФайлФотоМатериала.Записать();

Если Объект.ФотоМатериала.Пустая() = Ложь и Объект.ФотоМатериала.ПолучитьОбъект()<>Неопределено Тогда

СтарыйФайлФотоМатериала = Объект.ФотоМатериала.ПолучитьОбъект();
СтарыйФайлФотоМатериала.Удалить();
КонецЕсли;

Объект.ФотоМатериала = НовыйФайлФотоМатериала.Ссылка;

ЭтаФорма.Модифицированность=Истина;

КонецПроцедуры

&НаКлиенте
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

ФотоМатериала = ПолучитьНавигационнуюСсылку(Объект.ФотоМатериала, "Файл");
Элементы.ФотоМатериала.РазмерКартинки = РазмерКартинки.Пропорционально;

КонецПроцедуры

LexaK

deyray, да что тут скажешь, запустите под отладчиком и проверьте свой код, что куда пишет и как затем используется!
(почему бы не использовать стандартный механизм присоединения и отображения файлов с картинками?)
если помогло нажмите: Спасибо!

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск