Имя: Пароль:
1C
1С v8
Родитель нужного уровня
,
0 Rizhij_Nikitos
 
27.08.13
11:15
Эта тема не про п*дарасов. Есть у меня управляемая форма(8.3.3 не такси), на ней расположены несколько групп, в которых сгруппированы однотипные поля ввода. Задача сгруппировать поля ввода по родителю нужного уровня - то есть основных групп, но они не являются группами высшего уровня - у них еще 2 уровня сверху.

Как лучше это сделать, есть ли стандартные средства? Не хотелось бы рекурсию устраивать.
1 Rizhij_Nikitos
 
27.08.13
11:17
Извините, если не очень доходчиво - кожу со вчерашнего дня еще не останавливался...

Есть основные группы, у которых есть родители.

Есть поля ввода которые раскиданы по подчиненным группам основных групп.

Как перебрать все поля ввода(названия поддаются обходу при помощи итератора) и определить у них родителя кратчайшим путем - то есть какая из перечня основных групп является его родителем?
2 olegves
 
27.08.13
11:27
(0) отдельно выбирай свои группы:
Выбрать Второй.ссылка
Поместить Группы
Из справочник.Твой КАК Верх
Левое соединение Справочник.Твой КАК Первый
  ПО Первый.Родитель = Верх.Ссылка
Левое соединение Справочник.Твой КАК Второй
  ПО Второй.Родитель = Первый.Ссылка
ГДЕ
Второй.ЭтоГруппа

а затем вяжи со своими элементами
3 Rizhij_Nikitos
 
27.08.13
11:28
Почти угадал, только мы про УФ говорим а не про элементы справочника...
4 olegves
 
27.08.13
11:29
(3) а кто тебе мешает использовать Дин.список с произвольным запросом на УФ?
5 Rizhij_Nikitos
 
27.08.13
11:30
Мы говорим про элементы формы, а не про объекты ИБ.
6 olegves
 
27.08.13
11:34
(5) ты не умеешь добавлять элемент формы с типом: Динамический список?
7 Rizhij_Nikitos
 
27.08.13
11:35
http://clip2net.com/s/5DzJnM

Надеюсь так понятнее станет...
8 olegves
 
27.08.13
11:40
(7) любим плавать в шубе и валенках? Упростить форму не пробовал?
9 Rizhij_Nikitos
 
27.08.13
11:43
Это уже другой вопрос и форма итак уже упрощена, удачно сгруппирована и набита всякими крутыми штуками чтобы эргономично вмещать в себя около 300 полей ввода. Кароче мы не обсуждаем сейчас мое ТЗ, мне надо взяв любое поле ввода определить принадлежит ли оно группе на несколько уровней выше.
10 olegves
 
27.08.13
11:50
(9) см (2) и думать
11 Rizhij_Nikitos
 
27.08.13
11:53
Я конечно еще не специалист, но на сколько мне известно, к элементам формы запросы делать нельзя.
12 olegves
 
27.08.13
12:43
(11) принадлежность группе в какой момент собираешься проверять?
В ПриСозданииНаСервере заполни реквизит формы с типом ТаблицаЗначений запросом, подобным (2)
А в проверке вызывай серверную функцию, в которой делай поиск родителя проверяемого элемента в этой таблицеЗначений
13 Rizhij_Nikitos
 
27.08.13
13:41
Ну вот как то так...

    Отбор=Новый Структура;
    Попытка
        Отбор.Вставить("Группа",Элементы[Элемент].Родитель);    
    Исключение
        //Если обращение к родителю не прокатит, что конечно очень врятли...
        Сообщить("Ошибка определения родителя поля при расчете коэффициентов, обратитесь к автору сего творения!");
        Возврат("Ошибка");
    КонецПопытки;
    
    Результат=ТЗПоказателей.НайтиСтроки(Отбор);
    
    Если Результат.Количество()>0 Тогда
        Возврат(Результат[0]);
    Иначе
        Возврат(ОпределитьРодителя(Элементы[Элемент].Родитель.Имя));
    КонецЕсли;
14 Rizhij_Nikitos
 
27.08.13
13:41
Это был полный текст функции Функция ОпределитьРодителя(Элемент)
15 Rizhij_Nikitos
 
27.08.13
13:42
В ТЗ показателей в колонке группа содержатся проверяемые основные группы
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший