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

Сравнение строки и значения поля на форме (Ссылка на перечисление)

Автор dimanuga, 01 окт 2018, 14:29

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

dimanuga

Здравствуйте !

Не пинайте сильно - только начинаю разбираться с 1С.

Есть перечисление с двумя реквизитами: Естественный и Искусственный

Есть форма в которой при выборе значения Естественный должно стать доступно для ввода поле изначально не доступное для ввода.

Код при изменении:
Процедура ВидОсемененияПриИзменении(Элемент)
   
   Вид="Естественное";
   Если Объект.ВидОсеменения = Вид Тогда
      Элементы.СведенияОСамце.Доступность=Истина;
      ОбновитьОтображениеДанных();
   Иначе
      Элементы.СведенияОСамце.Доступность=Ложь;
      ОбновитьОтображениеДанных();
   КонецЕсли;   
   
КонецПроцедуры

Соответственно так как типы данных разные - код   

            Если Объект.ВидОсеменения = Вид Тогда
      Элементы.СведенияОСамце.Доступность=Истина;
      ОбновитьОтображениеДанных(); 

не работает никогда !

Как сравнить строку и ссылку понять не могу.


alexandr_ll

А зачем строку сравнивать с элементом перечисления?
Сравнивайте перечисление с перечислением:
Вид=Перечисления.ВидыОсеменения.Естественный;

dimanuga

Я так писал :)

Вот что пишет в результате: {Справочник.ОсемененияЖивотных.Форма.ФормаЭлемента.Форма(10,6)}: Переменная не определена (Перечисления)
   Вид=<<?>>Перечисления.ВидыОсеменения.Естественное; (Проверка: Тонкий клиент)

alexandr_ll

Цитата: dimanuga от 02 окт 2018, 05:11
Я так писал :)

Вот что пишет в результате: {Справочник.ОсемененияЖивотных.Форма.ФормаЭлемента.Форма(10,6)}: Переменная не определена (Перечисления)
   Вид=<<?>>Перечисления.ВидыОсеменения.Естественное; (Проверка: Тонкий клиент)
Надо писать на сервере.

alex0402

Цитата: alexandr_ll от 02 окт 2018, 07:18Надо писать на сервере.

или Вид=ПредопределенноеЗначение("Перечисление.ВидыОсеменения.Естественное");

то же неявный вызов сервера.
Спасибо за Сказать спасибо

dimanuga

Написал так - работает !!! Спасибо.

&НаКлиенте
Процедура ВидОсемененияПриИзменении(Элемент)
   
   Вид=ПредопределенноеЗначение("Перечисление.ВидыОсеменений.Естественное");
   Если Объект.ВидОсеменения = Вид Тогда
      Элементы.СведенияОСамце.Доступность=Истина;
      ОбновитьОтображениеДанных();
   Иначе
      Элементы.СведенияОСамце.Доступность=Ложь;
      ОбновитьОтображениеДанных();
   КонецЕсли;   
   
КонецПроцедуры

Но все таки вопрос - как все же взять значение Поля на форме, если поле это ссылка на перечисление ?

Например в такой конструкции, где ФормаСобственности - это Перечисление:

&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
   Объект.Наименование="Адрес: "+Объект.ФормаСобственности+" '"+Элементы.НаименованиеПредприятия+"'";
   ОбновитьОтображениеДанных();
КонецПроцедуры


alex0402

Цитата: dimanuga от 02 окт 2018, 07:42Но все таки вопрос - как все же взять значение Поля на форме, если поле это ссылка на перечисление ?

Если это реквизит формы, то можно через выражение, которое прописано в Путь к данным, если в табличной части, то Элементы.ИмяТЧ.ТекущиеДанные.Вид
Спасибо за Сказать спасибо

Теги:

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

Рейтинг@Mail.ru

Поиск