Имя: Пароль:
1C
1С v8
Программная сортировка определённого количества строк в ТЧ документа
0 crisalis
 
06.12.16
03:24
Доброе время суток, подскажите пожалуйста кто сталкивался, как концептуально правильно написать алгоритм сортировки строк с 5 по 10 в ТЧ документа (итого строк 100) ?
Моя задумка:
1.Вытащить в ТЗ
2.Сортировка как мне надо с добавлением нового номера начиная с 5
3.Перебор ТЧ и замена строками из ТЗ

Как-то не быстро будет, подсобите пожалуйста как оптимальней написать, заранее благодарен.
1 shadow_sw
 
06.12.16
03:57
а что мешает менять номер строк прям в ТЧ?
2 torgm
 
06.12.16
06:12
(0)  берёшь любой алгоритм сортировки и сортируешь с 5 по 10.
3 catena
 
06.12.16
06:25
Скопировать нужные строки - сортировать - вставить.
4 1dvd
 
06.12.16
07:05
Странная задача. Сортировать можно по нескольким полям, если что
5 crisalis
 
06.12.16
16:00
(1) Можно по подробней, пожалуйста.
(3) Ну скопировал , отсортировал , вставил куда ? в конец ТЧ (вот тут нет понимания, помогите пожалуйста)
(4) Ничего странного , есть таблица с разделителями строк ну типа :
1 Разделитель 1
2 Номенклатура 1
3 Номенклатура 2  
4 Номенклатура 3
5 Разделитель 2
6 Номенклатура 4
7 Номенклатура 5  
8 Номенклатура 6

Вот Номенклатуру 1 - 3 мне и надо отсортировать при этом не трогать Номенклатуру 4 - 6
6 crisalis
 
06.12.16
16:03
(2) Одарите примером пожалуйста.
7 catena
 
06.12.16
16:05
(5)    НачС=4;
    КонС=9;
    Масс = Новый Массив;
    Для к=НачС-1 по КонС-1 Цикл
        Масс.Добавить(ТабличноеПоле1.Получить(к));
    КонецЦикла;    
    НьюТЗ = ТабличноеПоле1.Скопировать(Масс);
    НьюТЗ.Сортировать("Колонка1");
    Для к=НачС-1 по КонС-1 Цикл
        стр = ТабличноеПоле1.Получить(к);
        ЗаполнитьЗначенияСвойств(стр,НьюТЗ.Получить(к-НачС+1));
    КонецЦикла;
8 crisalis
 
06.12.16
16:17
(7) Спасибо , попробую
9 crisalis
 
13.12.16
18:38
(7)
Сделал вот так но как то коряво работает:

ТекРазделитель = ЭлементыФормы.Товары.ТекущаяСтрока;
        НачСтрока = ТекРазделитель.НомерСтроки + 1;
        КонСтрока = ПолучитьКонечнуюСтрокуПоРазделителю(ТекРазделитель);
        
        Список = Новый СписокЗначений;
        Для Н = НачСтрока - 1 по КонСтрока - 1 Цикл
            Список.Добавить(Товары.Получить(Н), Товары.Получить(Н).Номенклатура.Наименование);
        КонецЦикла;    
        Список.СортироватьПоПредставлению(НаправлениеСортировки.Убыв);
        
        М = 0;
        Для К = НачСтрока - 1 по КонСтрока - 1 Цикл
            СтрокаТЧ = Товары.Получить(К);
            ЗаполнитьЗначенияСвойств(СтрокаТЧ, Список.Получить(М).Значение);
            М = М + 1;     
        КонецЦикла;



Некорректно заполняет, дублирует строки.
10 crisalis
 
13.12.16
18:42
(7) и еще у ТЧ нет метода Скопировать,

Эта строчка выводит ошибку:

НьюТЗ = ТабличноеПоле1.Скопировать(Масс);
11 Cyberhawk
 
13.12.16
18:43
Автор, ты в доту игрок что ли?
12 Cyberhawk
 
13.12.16
18:43
Или фанат мультиков про "лошадку"? ))
13 crisalis
 
13.12.16
18:44
(11) не играл в Доту , играю в 1С
14 catena
 
14.12.16
06:41
(10)У ТЧ есть Выгрузить. Уж с таким стажем можно уметь СП открывать.
15 crisalis
 
14.12.16
11:58
(14) точно блин, я смотрел на этот метод, пропустил что первый параметр "Строки" а это массив.
16 crisalis
 
14.12.16
12:21
Работает , спасибо catena.