8.х Переключить реквизиты формы

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем fenlork, 14 мар 2019.

  1. TopicStarter Overlay
    fenlork
    Offline

    fenlork Опытный в 1С

    Регистрация:
    5 сен 2013
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    Добрый день.
    Управляемые формы.
    На Форме обработки куча реквизитов-флажков(Булево).
    При нажатии на один флажок(Истина) все остальные флажки должны перейти в режим (Ложь).
    Процедура при изменении реквизита формы-не вариант, так как этих реквизитов очень много.


    &НаСервере
    Процедура ПолучитьТипЗначения(свойство)

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

    //Здесь проблема реквизиты поменяны только в массиве(перем Масси) как вернуть эти значения в форму?


    //ЗначениеВРеквизитФормы(реквизит.СохраняемыеДанные, реквизит.имя);
    конецЕсли;
    КонецЦикла;


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

    &НаКлиенте
    Процедура ПриВыбореТипа(Элемент)
    Название = Элемент.Имя;
    ПолучитьТипЗначения(Название);
    //ЗаполнитьНаКлиенте(Элемент.ИМЯ);
    КонецПроцедуры
  2. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.724
    Симпатии:
    1.014
    Баллы:
    204
    В чем проблема пр открытии формы накидать в реквизит формы типа список значений все имена реквизитов формы, которые необходимо менять и менять их значения в обработчике "ПриИзменении"?
  3. TopicStarter Overlay
    fenlork
    Offline

    fenlork Опытный в 1С

    Регистрация:
    5 сен 2013
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    Проблема в том, что не могу получить Значение реквизита флажок на клиенте его получить нельзя, на сервер Элемент передать тоже нельзя.
    Далее следующая проблема- пытаюсь найти реквизит формы , чтобы присвоить ему значение, но работает только прямое обращение по наименованию ."ЭтаФорма.Элементы.Найти(Тип)"
    &НаКлиенте
    Процедура ПриИзменениеТипа(Элемент)
    НаименованиеТипа = Элемент.Имя;
    Для каждого Тип из ТипыНаименований( список значений) цикл
    Если(НаименованиеТипа = Тип.Значение) тогда значение = "Элемент.Значение";//Как получить значение Элемента, что нужно отправить на сервер , отправляю Элемент-выдает что тип "поле формы" нельзя передавать
    Иначе Значение = Ложь;
    КонецЕсли;
    ЭлементФормы = ЭтаФорма.Элементы.Найти(Тип);//" находить опять поле формы, а не реквизит"-чтобы присвоить флажку значение-нужно к нему обратиться только напрямую по наименованию
    //ЭлементФормы.Значение = Значение;
    КонецЦикла;
    Заполнить();
    КонецПроцедуры
  4. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.724
    Симпатии:
    1.014
    Баллы:
    204
    Значение элемента типа булево на клиенте получается с помощью ЭтаФорма[ИмяРеквизитаФормы]

    На сервере форма так же доступна и так же получается значение ее реквизита.
  5. TopicStarter Overlay
    fenlork
    Offline

    fenlork Опытный в 1С

    Регистрация:
    5 сен 2013
    Сообщения:
    89
    Симпатии:
    0
    Баллы:
    26
    А как обратиться к реквизиту формы по имени, чтобы присвоить значение?
  6. nomad_irk
    Online

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.724
    Симпатии:
    1.014
    Баллы:
    204
    Так же.