Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Связь Списка с Деревом в Форма в 8.2
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование управляемых форм 1С 8.2
хакерок
Допустим имнееться форма и в ней имееться 2 реквизита Дерево и Список (основная таблица например Справочники.Номенклатура)

В версии 8.1 была возможность СправочникСписок и СправочникДерево связать так что при выборе группы в дереве Список показывал содержимое группы.

Для этого достаточно было в СправочникеСписке Свойство Связь по родителю выставить СправочникДерево.ПриВыборе


В версии 8.2 только когда Список являеться основным реквизитом тогда в Форме можно указать что СписокГрупп Дерево


Вопрос как связать програмно Список и Дерево если Список не являеться основным реквизитом.

Тоесть в результате при выборе группы в Дереве в Списке отображалось то что в Группе.
logist
В событии Выбор у Дерева прописать нужный отбор для Списка?
DartRomanius
В списке... "Связь по родителю"
logist
Цитата(DartRomanius @ 03.10.11, 11:39) необходимо зарегистрироваться для просмотра ссылки
В списке... "Связь по родителю"

Ткните пальцем где там такое есть, не нашел.
DartRomanius
Цитата(logist @ 03.10.11, 11:44) необходимо зарегистрироваться для просмотра ссылки
Ткните пальцем где там такое есть, не нашел.


Свойства списка (на форме), раздел "Использование" последний пункт.
хакерок
Цитата(DartRomanius @ 03.10.11, 11:39) необходимо зарегистрироваться для просмотра ссылки
В списке... "Связь по родителю"

В версии 8.2 "Связь по родителю" нет

Цитата(logist @ 03.10.11, 11:36) необходимо зарегистрироваться для просмотра ссылки
В событии Выбор у Дерева прописать нужный отбор для Списка?

Именно таким путём и пошол сделаю выложу

Вот черновой вариант
&НаКлиенте
Процедура ДеревоПриАктивизацииСтроки(Элемент)
    
    СписокПрайсЛист.Отбор.Элементы.Очистить();
    ОтборСписка1 = СписокПрайсЛист.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборСписка1.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Родитель");;
    ОтборСписка1.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
    ОтборСписка1.ПравоеЗначение = РаботаСПрайсЛистом.ПолучитьРодителяПоКоду(Элементы.Дерево.ТекущиеДанные.Код);
    ОтборСписка1.Использование  = Истина;
    
    ОтборСписка2 = СписокПрайсЛист.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборСписка2.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("ЭтоГруппа");;
    ОтборСписка2.ВидСравнения   = ВидСравненияКомпоновкиДанных.Равно;
    ОтборСписка2.ПравоеЗначение = Ложь;
    ОтборСписка2.Использование  = Истина;
    
КонецПроцедуры
logist
Цитата(DartRomanius @ 03.10.11, 12:00) необходимо зарегистрироваться для просмотра ссылки
Свойства списка (на форме), раздел "Использование" последний пункт.

Если Вас не затруднит, можно скрин. Ну в упор не вижу sad.gif
DartRomanius
Цитата(logist @ 03.10.11, 12:54) необходимо зарегистрироваться для просмотра ссылки
Если Вас не затруднит, можно скрин. Ну в упор не вижу sad.gif


Пожалуйста.
хакерок
Цитата(DartRomanius @ 03.10.11, 13:04) необходимо зарегистрироваться для просмотра ссылки
Пожалуйста.

Это версия 8.1 приспособленная к 8.2
Vofka
Цитата
Это версия 8.1 приспособленная к 8.2

Это версия 8.2, а не управляемое приложение. Но про это ведь говорить не стоит.
DartRomanius
Это для управляемого приложения. Предыдущий вариант был для "обычного".
хакерок
x
DartRomanius
Согласен. Туплю.
хакерок
Цитата(DartRomanius @ 03.10.11, 15:46) необходимо зарегистрироваться для просмотра ссылки
Согласен. Туплю.

Разобрался с этим вопросом можно поступить 2 способами

1 С помощью Отбора оно работет дольше

2 Можно для реквизита Список зделать произвольній запрос

например
ВЫБРАТЬ
    СправочникПрайсЛист.Ссылка,
    СправочникПрайсЛист.ВерсияДанных,
    СправочникПрайсЛист.ПометкаУдаления,
    СправочникПрайсЛист.Предопределенный,
    СправочникПрайсЛист.Родитель,
    СправочникПрайсЛист.ЭтоГруппа,
    СправочникПрайсЛист.Код,
    СправочникПрайсЛист.Наименование,
    СправочникПрайсЛист.Уточнение,
    СправочникПрайсЛист.ЦенаОпт,
    СправочникПрайсЛист.Цена,
    СправочникПрайсЛист.Валюта,
    СправочникПрайсЛист.Производитель,
    СправочникПрайсЛист.НомерНаУпаковке,
    СправочникПрайсЛист.НомерОсновной,
    СправочникПрайсЛист.Код1,
    СправочникПрайсЛист.Код2,
    СправочникПрайсЛист.Код3,
    СправочникПрайсЛист.Аналог,
    СправочникПрайсЛист.ПоисковыйКод,
    СправочникПрайсЛист.ВозможностьСкидки,
    СправочникПрайсЛист.МинимальныйЗапас,
    СправочникПрайсЛист.Поставщик,
    СправочникПрайсЛист.Примечание,
    СправочникПрайсЛист.Сортировка
ИЗ
    Справочник.ПрайсЛист КАК СправочникПрайсЛист
ГДЕ
    СправочникПрайсЛист.Родитель.Код = &КодГруппы


И при активизации строки Дерева

&НаКлиенте
Процедура ДеревоПриАктивизацииСтроки(Элемент)
    Если Не Элементы.Дерево.ТекущиеДанные = Неопределено  Тогда
        СписокПрайсЛист.Параметры.УстановитьЗначениеПараметра("КодГруппы", Элементы.Дерево.ТекущиеДанные.Код);
    КонецЕсли;
КонецПроцедуры
Vofka
хакерок, плюсую за то, что выкладываете результаты работы (код) smile.gif
хакерок
Цитата(хакерок @ 04.10.11, 12:29) необходимо зарегистрироваться для просмотра ссылки
Разобрался с этим вопросом можно поступить 2 способами

1 С помощью Отбора оно работет дольше

2 Можно для реквизита Список зделать произвольній запрос

например
ВЫБРАТЬ
    СправочникПрайсЛист.Ссылка,
    СправочникПрайсЛист.ВерсияДанных,
    СправочникПрайсЛист.ПометкаУдаления,
    СправочникПрайсЛист.Предопределенный,
    СправочникПрайсЛист.Родитель,
    СправочникПрайсЛист.ЭтоГруппа,
    СправочникПрайсЛист.Код,
    СправочникПрайсЛист.Наименование,
    СправочникПрайсЛист.Уточнение,
    СправочникПрайсЛист.ЦенаОпт,
    СправочникПрайсЛист.Цена,
    СправочникПрайсЛист.Валюта,
    СправочникПрайсЛист.Производитель,
    СправочникПрайсЛист.НомерНаУпаковке,
    СправочникПрайсЛист.НомерОсновной,
    СправочникПрайсЛист.Код1,
    СправочникПрайсЛист.Код2,
    СправочникПрайсЛист.Код3,
    СправочникПрайсЛист.Аналог,
    СправочникПрайсЛист.ПоисковыйКод,
    СправочникПрайсЛист.ВозможностьСкидки,
    СправочникПрайсЛист.МинимальныйЗапас,
    СправочникПрайсЛист.Поставщик,
    СправочникПрайсЛист.Примечание,
    СправочникПрайсЛист.Сортировка
ИЗ
    Справочник.ПрайсЛист КАК СправочникПрайсЛист
ГДЕ
    СправочникПрайсЛист.Родитель.Код = &КодГруппы


И при активизации строки Дерева

&НаКлиенте
Процедура ДеревоПриАктивизацииСтроки(Элемент)
    Если Не Элементы.Дерево.ТекущиеДанные = Неопределено  Тогда
        СписокПрайсЛист.Параметры.УстановитьЗначениеПараметра("КодГруппы", Элементы.Дерево.ТекущиеДанные.Код);
    КонецЕсли;
КонецПроцедуры


В этом примере есть недостаток лучше связь Дерева и Списка делать не по Коду а по Ссылке ... с ссылками платформе лучше работать
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.