новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума
Форум

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

    • #1
    • 23.03.2018 19:14
    0
    Напишите как на управляемой форме в табличной части программно присвоить реквизиту тип "перечисления". Реквизит имеет составной тип данных.
    • #2
    • 23.03.2018 19:22
    0
    Если в составном типе присутствует это перечисление, то просто присваиваете значение реквизиту. Платформа понимает это нативно.
    • #3
    • 23.03.2018 19:32
    0
    В составном типе присутствует данное перечисление.
    Вот мой код:
    &НаКлиенте
    Процедура тзТабличнойЧастиПараметрНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
    ТекДанные = Элементы.тзТабличнойЧасти.ТекущиеДанные;
    ТекДанные.Параметр =Перечисления.Услуги_Параметры_ЛицевыеСчета;
    КонецПроцедуры

    При проверке модуля, выходит ошибка:
    {Документ.ID05_Услуги_Адреса.Форма.ФормаДокумента.Форма(34,23)}: Переменная не определена (Перечисления)
    ТекДанные.Параметр =<<?>>Перечисления.Услуги_Параметры_ЛицевыеСчета; (Проверка: Тонкий клиент)
    • #4
    • 23.03.2018 19:34
    0
    Или вы хотите ограничить выбор?
    • #5
    • 23.03.2018 19:37
    0
    Да нужно ограничить выбор, т.е. нужно выбрать при определенных условиях одно из двух перечислений.
    • #6
    • 23.03.2018 19:40
    • Отредактировано: 23.03.2018 19:42:32
    0
    а на сервер не пробовали перенести
    ....
    ТекДанные.Параметр =значПараметра();
    ...
    &НаСервере
    функция значПараметра()
    возврат Перечисления.Услуги_Параметры_ЛицевыеСчета;
    Конецфункц

    Переменная не определена (Перечисления) - на сервере определена
    • #7
    • 23.03.2018 19:43
    0
    Да, наКлиенте нет доступа. И вам нужно в перечислении еще точечку и что там у вас.
    • #8
    • 23.03.2018 19:50
    0
    &НаКлиенте
    Процедура тзТабличнойЧастиПараметрНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    // Вставить содержимое обработчика.
    ТекДанные = Элементы.тзТабличнойЧасти.ТекущиеДанные;
    ТекДанные.Параметр =значПараметра();


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

    &НаСервере
    функция значПараметра()
    возврат Перечисления.Услуги_Параметры_ЛицевыеСчета;
    Конецфункции

    Ошибка пропала. Но программа предлагает вручную выбрать тип данных.
    • #9
    • 23.03.2018 19:52
    • Отредактировано: 23.03.2018 19:53:44
    0
    Вы так присвоите значение, но не ограничите выбор.

    Перечисления.Услуги_Параметры_ЛицевыеСчета.чтототамувасзазначение

    P.S. пока набираю текст, в теме появляются сообщения. Подожду пока синхронизируются )))
    • #10
    • 23.03.2018 19:54
    0
    Эти значения надо выбирать из выпадающего списка.
    • #11
    • 23.03.2018 20:24
    0
    Даже если явно укажем значение перечисления:
    &НаСервере
    функция значПараметра()
    возврат Перечисления.Услуги_Параметры_ЛицевыеСчета.Состояние_ЛС;
    Конецфункции
    


    Все равно программа предлагает вручную выбрать тип данных.
    • #12
    • 23.03.2018 20:58
    0
    https://its.1c.ru/db/metod8dev/content/2449/hdoc
    • #13
    • 23.03.2018 21:10
    0
    В ссылке просто описание, хотелось бы какой-нибудь рабочий пример.
    • #14
    • 23.03.2018 21:47
    • Отредактировано: 23.03.2018 21:50:04
    0
    Одна строка:
    Можно в ПриСозданииНаСервере

    Элементы.Параметр.ОграничениеТипа = Новый ОписаниеТипов("ПеречислениеСсылка.Услуги_Параметры_ЛицевыеСчета");

    Смотрите в палитре свойств имя элемента. Может он у вас тзТабличнойЧастиПараметр называется.
    • #15
    • 23.03.2018 21:50
    0
    Спасибо, сейчас попробую.
    • #16
    • 23.03.2018 21:59
    0
    Сделал вот так:
    &НаКлиенте
    Процедура ОсновнаяТаблицаПараметрНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
       // Вставить содержимое обработчика.
       ТекДанные = Элементы.тзТабличнойЧасти.ТекущиеДанные;
       ТекДанные.Параметр.ОграничениеТипа  =Новый ОписаниеТипов("ПеречислениеСсылка.Услуги_Параметры_ЛицевыеСчета");
    КонецПроцедуры
    


    Выходит ошибка:
    {Документ.ID05_Услуги_Адреса.Форма.ФормаДокумента.Форма(50)}: Значение не является значением объектного типа (Параметр)
    ТекДанные.Параметр.ОграничениеТипа =Новый ОписаниеТипов("ПеречислениеСсылка.Услуги_Параметры_ЛицевыеСчета");
    • #17
    • 23.03.2018 22:03
    • Отредактировано: 23.03.2018 22:04:30
    0
    Не нужно текущиеДанные. Обращение просто к элементу.
    Уберите обработчик НачалоВыбора вообще,
    пропишите
    Элементы.Параметр.ОграничениеТипа = Новый ОписаниеТипов("ПеречислениеСсылка.Услуги_Параметры_ЛицевыеСчета");
    в ПриСозданииНаСервере в конце процедуры.
    И кажется Элемент у Вас называется ОсновнаяТаблицаПараметр
    )))
    Элементы.ОсновнаяТаблицаПараметр.ОграничениеТипа = Новый ОписаниеТипов("ПеречислениеСсылка.Услуги_Параметры_ЛицевыеСчета");
    • #18
    • 23.03.2018 22:09
    0
    "Имя сестра, имя!" Три Мушкетера
    • #19
    • 23.03.2018 22:19
    0
    Всем привет.
    Не судите строго :)
    Но вроде у всех есть инет. И там куча примеров можно найти? Или я ошибаюсь?
    • #20
    • 23.03.2018 22:22
    0
    Андрей, спасибо за помощь, все получилось.

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


    Заработало так как я хотел.
    • #21
    • 23.03.2018 22:23
    +1
    Фирстов Антон Сергеевич
    Не судите строго :)


    Мы тут тоже "инет". Помогаем не абстрактно, а конкретно.
    • #22
    • 23.03.2018 22:24
    • Отредактировано: 23.03.2018 22:33:25
    0
    dorofey_
    Андрей, спасибо


    Пожалуйста.
Для участия в обсуждении Вам необходимо авторизоваться либо   зарегистрироваться