8.х Как сделать отбор по назначению свойства?

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

  1. TopicStarter Overlay
    alekse
    Offline

    alekse

    Регистрация:
    9 окт 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Как в стандартной форме выбора свойства номенклатуры сделать отбор по его назначению. В форме выбора добавлено поле "ГруппаНоменклатуры". При выборе группы номенклатуры нужно в табличном поле "ПланВидовХарактеристикСписок" отобразить только свойства у которых в назначении указана эта группа номенклатуры.
    Делал так, но в списке выбора отображаются все свойства:
    Код:
    //ГруппаНоменклатуры - это поле ввода типа СправочникСсылка.Номенклатура
    //ПланВидовХарактеристикСписок - это табличное поле типа
    //ПланВидовХарактеристикСписок.СвойстваОбъектов
    Процедура ГруппаНоменклатурыПриИзменении(Элемент)
    Запрос = Новый Запрос();
    Запрос.Текст = "ВЫБРАТЬ
    |    НазначенияСвойств.Свойство
    |ИЗ
    |    РегистрСведений.НазначенияСвойствОбъектов КАК НазначенияСвойств
    |ГДЕ
    |    НазначенияСвойств.Объект = &НазначенныйОбъект";
    Запрос.УстановитьПараметр("НазначенныйОбъект", ГруппаНоменклатуры);
    ПланВидовХарактеристикСписок = Запрос.Выполнить().Выгрузить();
    КонецПроцедуры
    
  2. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    надо при построении формы делать список.. а так выполнил он запрос.. а куда помещает то результат??
  3. TopicStarter Overlay
    alekse
    Offline

    alekse

    Регистрация:
    9 окт 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Код:
    ПланВидовХарактеристикСписок = Запрос.Выполнить().Выгрузить();
    
    
    ПланВидовХарактеристикСписок - это табличное поле ПланВидовХарактеристикСписок.СвойстваОбъектов, написал об этом в комменте кода.
  4. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    ну выгрузил.... а дальше то что...
  5. TopicStarter Overlay
    alekse
    Offline

    alekse

    Регистрация:
    9 окт 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    в том то и дело, что ничего... :)
    Изначально пробывал делать отбор, но не получалось установить отбор в одном табличном поле по назначению свойства и по реквизиту свойства. Как можно установить такой отбор?
  6. TopicStarter Overlay
    alekse
    Offline

    alekse

    Регистрация:
    9 окт 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    ФормаВыбора
    Тип - ПланВидовХарактеристикСписок.СвойстваОбъектов

    Поле ввода ГруппаНоменклатуры
    Тип - СправочникСсылка.Номенклатура

    Табличное поле ПланВидовХарактеристикСписок
    Тип - ПланВидовХарактеристикСписок.СвойстваОбъектов

    В табличном поле отображаются все свойства. При выборе группы номенклатуры в поле ГруппаНоменклатуры в табличном поле должны отображаться только свойства в назначении которых указана эта группа номенклатуры. Также устанавливается отбор по реквизиту свойства "ТипХарактеристики" (этот реквизит в конфу добавлен мной). Отбор по реквизиту в данном случае у меня не вызывает сложности, но никак не могу добавить в табличное поле отбор по назначению свойства. В принципе, если установить тип табличного поля РегистрСведенийСписок.НазначенияСвойствОбъектов, то отбор свойств по назначению также не вызывает трудностей, но в таком случае не могу установить отбор по реквизиту свойства...
  7. tirk
    Offline

    tirk Опытный в 1С

    Регистрация:
    1 сен 2008
    Сообщения:
    1.142
    Симпатии:
    0
    Баллы:
    26
    в тч если она динамическая отбор не поставишь.. очищай и загружай отобранные..
    Не совсем понятно.. можешь нарисовать.. чтоб понять ход твоей логики
  8. TopicStarter Overlay
    alekse
    Offline

    alekse

    Регистрация:
    9 окт 2007
    Сообщения:
    17
    Симпатии:
    0
    Баллы:
    1
    Поставишь :unsure: Делаем выборку свойств, а потом устанавливаем отбор по наименованию из списка выбранных свойств.
    Код:
    Процедура УстановкаОтбораГруппСвойствОбъектов()
    //	Удаляем параметры отбора
    ПланВидовХарактеристикСписок.Отбор.Сбросить();
    //	Делаем выборку свойств из регистра сведений НазначенияСвойствОбъектов по группе
    //	номенклатуры из элемента формы ГруппаНоменклатуры. В результате получаем список
    //	наименований свойств (нам нужны именно поле Наименование свойства, а не ссылка
    //	на само свойство!
    Список = Новый СписокЗначений();    
    РегСв = РегистрыСведений.НазначенияСвойствОбъектов;
    ОтборСв = Новый Структура("Объект");
    ОтборСв["Объект"] = ГруппаНоменклатуры;
    ВыборкаСв = РегСв.Выбрать(ОтборСв);
    Пока ВыборкаСв.Следующий() Цикл
    Если ВыборкаСв.Свойство.ТипХарактеристики = "G" Тогда
    Список.Добавить(ВыборкаСв.Свойство.Наименование, ВыборкаСв.Свойство.Наименование, Ложь);	
    КонецЕсли;
    КонецЦикла;
    //	Устанавливаем вид сравнения для отбора типа "В списке" и выгружаем значения
    //	из списка выборки в список отбора.	
    ПланВидовХарактеристикСписок.Отбор.Наименование.ВидСравнения = ВидСравнения.ВСписке;	
    ПланВидовХарактеристикСписок.Отбор.Наименование.Значение.ЗагрузитьЗначения(Список.ВыгрузитьЗначения());
    ПланВидовХарактеристикСписок.Отбор.Наименование.Установить();
    КонецПроцедуры
    
    

Поделиться этой страницей