Имя: Пароль:
1C
 
Сортировать по виртуальному реквизиту ТаблицыФормы табличной части объекта.
0 Гений 1С
 
гуру
25.06.21
13:28
Есть таблица формы, в ней есть колонки Номенклатура и Группа с путем к данным соответственно:

Объект.Материалы.Номенклатура
Объект.Материалы.Номенклатура.Родитель

Хочу сортировку Группа + Номенклатура. Но способа не нашел.
ПРишлось писать код (ниже). Без кода есть способ?


&НаКлиенте
Процедура СортироватьПоГруппам(Команда)
    //Объект.Материалы.Сортировать("Номенклатура.Родитель, Номенклатура");
    СортироватьПоГруппамНаСервере();
КонецПроцедуры

Процедура СортироватьПоГруппамНаСервере()
    ТЗ = Объект.Материалы.Выгрузить();
    ТЗ.Колонки.Добавить("_Порядок");
    З = Новый Запрос(
    "ВЫБРАТЬ
    |    Т.НомерСтроки,
    |    Т.Номенклатура
    |ПОМЕСТИТЬ Т
    |ИЗ
    |    &ТЗ КАК Т
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////
    |ВЫБРАТЬ
    |    Т.НомерСтроки,
    |    ТНоменклатура.Ссылка КАК Ссылка,
    |    ТНоменклатура.Родитель
    |ИЗ
    |    Справочник.Номенклатура КАК ТНоменклатура
    |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Т КАК Т
    |        ПО ТНоменклатура.Ссылка = Т.Номенклатура
    |
    |УПОРЯДОЧИТЬ ПО
    |    ТНоменклатура.Родитель.Наименование,
    |    ТНоменклатура.Ссылка.Наименование");
    З.УстановитьПараметр("ТЗ", ТЗ);
    Выборка = З.Выполнить().Выбрать();
    Сч = 0;
    Пока Выборка.Следующий() Цикл
        ТЗ[Выборка.НомерСтроки - 1]._Порядок = Сч; Сч = Сч + 1;
    КонецЦикла;
    
    ТЗ.Сортировать("_Порядок");
    Объект.Материалы.Загрузить(ТЗ);
    
КонецПроцедуры

&НаКлиенте
Процедура СортироватьАЯ(Команда)
    Объект.Материалы.Сортировать("Номенклатура");
КонецПроцедуры
1 Злопчинский
 
25.06.21
13:30
жмакни сортировку по номенклатуре. зажми контрол. жмакни сортировку по группе.
получилось?
2 Злопчинский
 
25.06.21
13:38
и даже в такой реализации как в (0) - страшное быдлокодирование.
завтра понадобится по другому сочетанию реквизитов сортировать.
причем тех, что не вытащены на форму.
.
правильно сделать "приблуду" - где выбираются нужные реквизиты и по совокупности выбранных реквизитов выполняется сортировка. ранее заданные сочетания реквизитов - при выборе на исполнение этой "приблуды" - выводятся в список как готтовые "профили сортировки" чтоб повторно их не набирать.
.
3 Сергиус
 
25.06.21
15:03
(2)"Быдлокод - наше всё"!)
4 Гений 1С
 
гуру
25.06.21
15:34
(2) давай не в общем виде. этак и я могу размышлять
5 Гений 1С
 
гуру
25.06.21
15:35
(1) не получилось.
6 Ёпрст
 
25.06.21
16:59
7 Гений 1С
 
гуру
25.06.21
18:10
(6) вы путаете динамическийСписок и ТаблицаФормы (для отображения табличных частей), СЭР
8 Ёпрст
 
25.06.21
18:19
(7) ну заведи колонку еще одну,расчетную колонку, заполняй её мусором при чтении на сервере, по ней сортируй.
9 Ёпрст
 
25.06.21
18:19
сортировать можно по расчетным колонкам, по пкм или с меню все действия у ТЧ
10 Гений 1С
 
гуру
25.06.21
18:23
(8) это сложнее, чем мой метод.
11 Ёпрст
 
25.06.21
18:24
Ну и метод
Сортировать у данные формы коллекция пробовал ?
12 Ёпрст
 
25.06.21
18:25
ДанныеФормыКоллекция (FormDataCollection)
Сортировать (Sort)
Синтаксис:
Сортировать(<Колонки>, <ОбъектСравнения>)
13 Гений 1С
 
гуру
25.06.21
18:27
(12) если ты посмотришь приведенные код увидишь две строки:
Объект.Материалы.Сортировать("Номенклатура");
//Объект.Материалы.Сортировать("Номенклатура.Родитель, Номенклатура");
Вторая не работает. Знаешь как заставить работать?

Объект.Материалы - это и есть ДанныеФормыКоллекция
14 Ёпрст
 
25.06.21
18:48
(13) ну, тогда не судьба.
В ОФ всё проще - там тч можно сортировать по нескольким колонкам кодом
15 Kesim
 
25.06.21
18:59
(13) //Объект.Материалы.Сортировать("Номенклатура.Родитель, Номенклатура");   Объект.Материалы.Сортировать("Группа, Номенклатура");  навскидку
16 Ёпрст
 
25.06.21
19:01
(15) там нет реквизита группа, будет только номенклатура.
17 Ёпрст
 
25.06.21
19:02
Разве что, добавить расчетный реквизит Родитель в колонку и его заполнять в при создании на сервере, запихивая туда родителя.
Тогда будет колонка для сортировки
18 Злопчинский
 
25.06.21
19:34
(4) тебе ТЗ написать? цена вопроса - 7500руб
19 Злопчинский
 
25.06.21
19:35
(9) я жутьк расстроен когда (в УНФ, визуально - ТЧ документа) вытащил на форму Номенклатура.Артикул и оказалось, что по такой колонке нихера сортировать нельзя. "Пидарасы, сэр!"
20 Ёпрст
 
25.06.21
19:38
(19) добавь колонку в реквизиты объекта в тч, заполняй в присоздании на сервере и при изменениии состава строк тч.
Тогда по ней можно делать что угодно - сортировку/отбор/условное оформление.
21 Вафель
 
25.06.21
20:15
(20) а еще после записи .
Итого слишком много даижений ради 1 действия
22 acht
 
25.06.21
20:21
(20) >  присоздании на сервере
В причтении

(21) Зато стандартные команды будут работать.
23 Вафель
 
25.06.21
20:25
Апотом еще юзеров учить как по 2м колонкам сортировать
24 Гений 1С
 
гуру
25.06.21
20:52
(14) ОФ это для пенсионеров
25 Гений 1С
 
гуру
25.06.21
20:53
(19) но можно так как я написал кодецом
26 Гений 1С
 
гуру
25.06.21
20:54
(18) Бедный штоли?
27 Злопчинский
 
25.06.21
21:37
(26) Свои считай, а я свои считать буду...
28 Гений 1С
 
гуру
25.06.21
22:18
(27) тогда не делай мне такие предложения
29 Злопчинский
 
25.06.21
23:25
(28) в отказняк пошел? ты предложил описать предметно. я выставил цену, ты слился.
пусть тебе за 500 руб студенты ТЗ пишут...
30 acht
 
26.06.21
09:39
(26) > Бедный штоли?
Геня, а ты со своими заказчиками также торгуешся?
31 Вафель
 
26.06.21
11:40
Зачем делать универсальную процедуру, если 99% что она более не потребуется?
32 Гений 1С
 
гуру
26.06.21
13:26
(31) у человека серьезный подход может, не лезь к гуре
33 Злопчинский
 
26.06.21
19:25
(31) зачем делать такую монструозину как УТ11 или прочие типовые? большая часть все равно не использует большую часть возможностей.