Имя: Пароль:
1C
1С v8
УФ. Установить отбор в открываемой форме справочника
0 palpetrovich
 
08.06.19
09:01
код:

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

КонецФункции

&НаКлиенте
Процедура СтатьяБюджетаНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    
    СписокСтатьиБюджета = СтруктураСписокСтатьиБюджета().СписокСтатьиБюджета;
    
    СтандартнаяОбработка=Ложь;
    фиксНастройки = Новый НастройкиКомпоновкиДанных;
    Отбор = фиксНастройки.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
    Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.ВСписке;
    Отбор.ПравоеЗначение = СписокСтатьиБюджета;
    Отбор.Использование = Истина;
    Отбор.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("ФиксированныеНастройки", фиксНастройки);
    ОткрытьФорму("Справочник.СтатьиБюджета.ФормаВыбора", ПараметрыФормы, Элемент);
    
КонецПроцедуры
    
Не ругается, но и не делает того что я как-бы хочу    
ЧЯНТД?
зы: СтатьиБюджета.ФормаВыбора - динамический список
1 palpetrovich
 
10.06.19
09:50
апну чуток
Результат по (0) есть, достпуные элементы только из нужного СписокСтатьиБюджета
Но вот папки которые не из этого списка - никуда не делись, они просто пустые. Можно от них как-то избавиться?
2 wowik
 
10.06.19
09:59
режим просмотра списка сделать "списком"
3 Cyberhawk
 
10.06.19
10:00
1. Через свойство "Отбор" не прокатило что ли? СЗ = список значений из ссылок.

    ПараметрыОтбора = Новый Структура("Ссылка", СЗ);
    П = Новый Структура("Отбор", ПараметрыОтбора);
    ОткрытьФорму("Документ.ЗаказКлиента.Форма.ФормаСпискаДокументов", П);

2. Режим отображения "Иерархия" по умолчанию отображает все группы (папки), это платформенное поведение - смирись.
4 palpetrovich
 
10.06.19
10:03
(2) (3) иерархию по выбранной папке хотелось-бы сохранить ...но если никак - тогда смирюсь :)
5 wowik
 
10.06.19
10:06
(2) ПараметрыОткрытия.Вставить("Отображение", "Список");  - у меня так работает
6 wowik
 
10.06.19
10:09
(5) не вру, через расширение добавлял, добавлял процедуру ПриОткрытииПосле, там уже отображение исправлял.
7 palpetrovich
 
10.06.19
10:17
(6) а произвольныйЗапррос мне не поможет?
наверное если свою форму запилить будет проще, но очень не хочектся....
8 wowik
 
10.06.19
10:21
(7) я делал для типово БП 3.0, все на поддержке, с которой лучше не снимать, тут форма своя не получится.
я за расширение, так намного проще.
Может ест вариант работы вот этого ПараметрыОткрытия.Вставить("Отображение", "Список"), но у меня не заработало, не нашел как.
9 palpetrovich
 
10.06.19
16:42
может пригодится кому, решение:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Попытка
        ГруппаОтбора = Параметры.ГруппаОтбора;    
    Исключение
        ГруппаОтбора = НЕОПРЕДЕЛЕНО;
    КонецПопытки;
    
    Если НЕ ГруппаОтбора = Неопределено Тогда
        
        ОтборПоГруппе = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ОтборПоГруппе.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
        ОтборПоГруппе.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии;
        ОтборПоГруппе.ПравоеЗначение = ГруппаОтбора;
        
        ЭлементОформления = Список.УсловноеОформление.Элементы.Добавить();
        ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Ложь);
        
        ЭлементОформления = Список.УсловноеОформление.Элементы.Добавить();
        ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Видимость", Истина);
        ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Отображать", Истина);
        
        ОтборПоГруппе = ЭлементОформления.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ОтборПоГруппе.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Ссылка");
        ОтборПоГруппе.ВидСравнения = ВидСравненияКомпоновкиДанных.ВИерархии;
        ОтборПоГруппе.ПравоеЗначение = ГруппаОтбора;
        
    КонецЕсли;
    
КонецПроцедуры
// ГруппаОтбора - передаваемая сюда, предваорительно выбранная нужная группа
Закон Брукера: Даже маленькая практика стоит большой теории.