Имя: Пароль:
1C
 
Перемещение строки таблицы
0 Pentosh
 
26.03.15
16:54
1. Автор ты просто пьян! 0% (0)
2. КГ/АМ 0% (0)
Всего мнений: 0

Добрый вечер, поставили задачу, легкая, знаю, но мысля не идет.

Нужно в табличном поле (строки таблицы - набор записей из регистра сведений), сделать возможность менять положение строки в табличке.
Сейчас это сделано так, мну на кнопку "Стрелка вверх" строка поднимается выше и записывается измерение в РС.
Т.к. это занимает много времени (перенести и записать), попросили сделать так: Нажал на кнопку, вылетело окно "куда переместить" указываешь номер строки, и строка сразу на 3 позиции вверх, а потом запись.

Но беда в том, не могу догнать, как сделать.
По одной строке получается поднимать, а чтобы сразу на 2...ну вообще, ребятушки, помогите, рОдные.

Код, как поднимаю на одну строку:
        
ТекущийНомер = ЭлементыФормы.Формулы.ТекущаяСтрока.НомерДетали;
    Формулы[ТекущийНомер-1].НомерДетали = ТекущийНомер -1;
    Формулы[ТекущийНомер-2].НомерДетали = ТекущийНомер;
    Формулы.Записать();

Суть в том, что достаточно поменять значение в колонке "Номер детали".
Может сообразите чего.
1 Dmitriy_76
 
26.03.15
17:00
вставляй требуемую куда надо.. а все последующие в цикле : номер = номер пред +1 ....
2 Pentosh
 
26.03.15
17:01
Т.е. нужно сделать, чтобы до тех пор, пока мы не доведем строку до желаемного положения, выполнялось смещение... но ей богу, соображалка отключена напрочь.
3 D_E_S_131
 
26.03.15
22:22
А каков порядок заполнения первоначального? Это же РС, какой там порядок?
4 RomanYS
 
26.03.15
22:27
(0) зачем записывать сразу?
перетаскивание не поможет?
5 patria0muerte
 
27.03.15
02:23
(0) А если взять и выгрузить набор записей в ТЗ на форму. В ней попередвигать все что нужно встроеным механизмом (стрелками в командной панели), а потом просто записать результат.
6 patria0muerte
 
27.03.15
02:27
+(5) *записать результат обратно в набор записей.
И лишний раз перезаписывать набор записей не придется.
7 patria0muerte
 
27.03.15
02:30
А колонку "НомерДетали" можешь каждый раз загружать по новой. Хранить массив с номерами строк размером с количество строк в таблице и при каждом дергании строки загружать массив в колонку "НомерДетали"
8 Pentosh
 
27.03.15
16:03
Работает так.
Жму кнопку "вверх" он в таб. поле менят значение "номер детали" у записи которую перемещаю (-1) и записи на место которой ставлю(+1) и записывает набор записей в регистр.Потом, срабатывает процедура "активизация строки" в ней происходит чтение регистра и вывод в таб. поле.
(3)Сам регистр строется по "номер детали" (если номер детали 1 -то строка 1 в списке, если 4 - то четвертая).
По сути, надо только менять "номер детали".
9 ktvladimir
 
27.03.15
16:06
(5) тока начал так писать да вижу уже написали) номер детали я бы вообще в работе не мучал а уже перед записью циклом бы записывал