Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Как сделать отбор по назначению свойства?          
ljuter Подменю пользователя
сообщение 12.04.10, 0:09
Сообщение #1

Общительный
**
Группа: Пользователи
Сообщений: 26
Спасибо сказали: 2 раз
Рейтинг: 0

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


Signature
1С 8.2 УТ 2.5.3

Batchir Подменю пользователя
сообщение 12.04.10, 6:29
Сообщение #2

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Поробуйте
ЭлементыФормы.ПланВидовХарактеристикСписок.Отбор.<РеквизитОтбора>.Установить(<ЗначениеРеквизита>);

Или эту конструкцию
ЭлементыФормы.ПланВидовХарактеристикСписок.Отбор.<РеквизитОтбора>.ВидСравнения = ВидСравнения.<ВыбранныйВид>;
ЭлементыФормы.ПланВидовХарактеристикСписок.Отбор.<РеквизитОтбора>.Значение = <ЗначениеРеквизита>;
ЭлементыФормы.ПланВидовХарактеристикСписок.Отбор.<РеквизитОтбора>.Использовать = Истина;

ljuter Подменю пользователя
сообщение 12.04.10, 7:55
Сообщение #3

Общительный
**
Группа: Пользователи
Сообщений: 26
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(Batchir @ 12.04.10, 7:29) *
Поробуйте
ЭлементыФормы.ПланВидовХарактеристикСписок.Отбор.<РеквизитОтбора>.Установить(<ЗначениеРеквизита>);

Или эту конструкцию
ЭлементыФормы.ПланВидовХарактеристикСписок.Отбор.<РеквизитОтбора>.ВидСравнения = ВидСравнения.<ВыбранныйВид>;
ЭлементыФормы.ПланВидовХарактеристикСписок.Отбор.<РеквизитОтбора>.Значение = <ЗначениеРеквизита>;
ЭлементыФормы.ПланВидовХарактеристикСписок.Отбор.<РеквизитОтбора>.Использовать = Истина;

Что указывать в <РеквизитОтбора>? Т.е. я понимаю, что это должен быть <Объект> из РегистрыСведений.НазначенияСвойствОбъектов, но как его указать в качестве <РеквизитОтбора>?
Вобщем в качестве <РеквизитОтбора> в данном случае не получается установить поле Объект регистра сведений НазначенияСвойствОбъектов. Чтобы сделать отбор по регистру сведений пришлось изменить тип значения табличного поля на <РегистрСведенийСписок>. Но теперь не могу дополнительно поставить отбор по реквизиту свойства. Как установить отбор по назначению свойства и его реквизиту в одном табличном поле?

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

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

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

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


Signature
1С 8.2 УТ 2.5.3

Batchir Подменю пользователя
сообщение 12.04.10, 12:27
Сообщение #4

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

Что то я туго сегодня соображаю, наверно после бурных выходных.
Отбор списка можно осуществить только по реквизиту, т.е если хотите делать дополнительный отбор, то нужно добавить соответствующий реквизит и заполнить его, а потом уже использовать
ЭлементыФормы.ПланВидовХарактеристикСписок.Отбор.<РеквизитОтбора>.Установить(<ЗначениеРеквизита>);

или кидать на форму таблицу значений и запросом заполнять её. Потом вешать всякие обработчики

ljuter Подменю пользователя
сообщение 12.04.10, 16:08
Сообщение #5

Общительный
**
Группа: Пользователи
Сообщений: 26
Спасибо сказали: 2 раз
Рейтинг: 0

Цитата(Batchir @ 12.04.10, 13:27) *
Что то я туго сегодня соображаю, наверно после бурных выходных.
Отбор списка можно осуществить только по реквизиту, т.е если хотите делать дополнительный отбор, то нужно добавить соответствующий реквизит и заполнить его, а потом уже использовать
ЭлементыФормы.ПланВидовХарактеристикСписок.Отбор.<РеквизитОтбора>.Установить(<ЗначениеРеквизита>);

или кидать на форму таблицу значений и запросом заполнять её. Потом вешать всякие обработчики


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


Signature
1С 8.2 УТ 2.5.3

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 24.04.24, 0:45
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!