Имя: Пароль:
1C
 
Управляемая форма, отсортировать элементы в группе
0 YaFedor
 
19.12.25
10:53
Есть группа, в ней кнопки. При создании на сервере добавляем программно одну или несколько кнопок в эту группу, потом хотим отсортировать, ниже код процедуры сортировки (тестовый, конечно).


Процедура ОтсортироватьЭлементы(_форма, Знач _элементГруппа) Экспорт
    
    Если ТипЗнч(_элементГруппа) = Тип("строка") Тогда  
        _элементГруппа = _форма.Элементы.Найти(_элементГруппа);
        Если _элементГруппа = Неопределено Тогда
            //Нет такого элемента
            Возврат;
        КонецЕсли;
    КонецЕсли;
    
    Если ТипЗнч(_элементГруппа) = Тип("ГруппаФормы") Тогда  
    Иначе
        //Это не группа
        Возврат;
    КонецЕсли;
    
    // Собираем все пункты меню в массив
    ПунктыМеню = Новый Массив;
    Для Каждого Пункт Из _элементГруппа.ПодчиненныеЭлементы Цикл
        ПунктыМеню.Добавить(Пункт);
    КонецЦикла;  
    
    // Сортируем массив по заголовку (по возрастанию)
    Сортировка = Новый СписокЗначений;
    Для Каждого Пункт Из ПунктыМеню Цикл
        Сортировка.Добавить(Пункт.Заголовок, Пункт);
    КонецЦикла;
    Сортировка.СортироватьПоПредставлению();
    
    // Перестраиваем порядок пунктов в меню
    ПредыдущийЭлемент_ = Сортировка[0];
    Для Инд = 1 По Сортировка.Количество() - 1 Цикл
        Пункт = Сортировка[Инд];
        _форма.Элементы.Переместить(Пункт, _элементГруппа, ПредыдущийЭлемент_);
        ПредыдущийЭлемент_ = Пункт;
                //_элементГруппа.ПодчиненныеЭлементы.Переместить(Пункт, Инд);
    КонецЦикла;
        
КонецПроцедуры


Ругается на строку: _форма.Элементы.Переместить(Пункт, _элементГруппа, ПредыдущийЭлемент_); параметр 1 неверный тип.

"Ошибка при вызове метода контекста (Переместить)
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Несоответствие типов (параметр номер '1')"

В параметре 1 - Пункт, он имеет тип КнопкаФормы, вроде допустимый, что делаю не так?
1 Bigbro
 
19.12.25
13:08
или заголовок?