Имя: Пароль:
1C
 
Сортировка на форме списка
,
0 bcosta
 
16.11.14
22:34
Вечер добрый!
Подскажите, кто знает. Обычное приложение. Самописная конфа.
На форме списка документа сортировка по дате. Если в документе изменить дату, то после проведения он убегает в другое место из-за своей новой даты.
Как сделать так, чтобы при изменении даты, документ убегал в другое место, а выбор оставался на строке, на которой был этот документ. Например, я открыл документ в строке 5, после изменения даты документ переместился на строку 15, а выбор остался на другом документе на строке 5.
1 bcosta
 
16.11.14
23:02
Никто не поможет?
2 vicof
 
17.11.14
00:09
запомнинать номер строки перед редактированием даты и делать текущей строку с этим номером после редактирования. Вроде бы все логично.
3 bcosta
 
17.11.14
00:23
(2) Логика очень даже понятна. Но вот как запомнить номер строки перед редактированием даты и как делать текущей строку с этим номером после редактирования?
4 Reaper_1c
 
17.11.14
00:29
Зачем?
5 vicof
 
17.11.14
00:30
Про номер я немного загнул. Но текущая строка вполне подойдет.

ТабличноеПоле.ТекущаяСтрока (TableBox.CurrentRow)
ТабличноеПоле (TableBox)
ТекущаяСтрока (CurrentRow)
Использование:

Чтение и запись.
Описание:

Содержит текущую строку табличного поля.

Доступность:

Толстый клиент.
Примечание:

Тип значения строки табличного поля приведен в описаниях расширений табличного поля у соответствующих объектов.
См. также:

ТабличноеПоле, свойство ТекущаяКолонка
6 vicof
 
17.11.14
00:31
(4) Ну как, какой-нить оператор правит даты заказов ручками, а потом даты при смене уезжают, и бедный юзер забывает, где он находился.
7 Reaper_1c
 
17.11.14
00:45
(6) Оператор находится здесь и сейчас, это конец списка. Зачем он правит даты заказов? Амнезия? Болезнь Паркинсона?
8 bcosta
 
17.11.14
00:50
(5) ТабличноеПоле.ТекущаяСтрока пробовал уже. И как я понял, текущая строка содержит данные строки и независимо от номера тоже уедет. Или может не так чего делал.
9 bcosta
 
17.11.14
00:51
(5) Попробую еще покрутить.
10 bcosta
 
17.11.14
03:04
Ап
11 bcosta
 
17.11.14
09:06
Ап
12 Cube
 
17.11.14
09:10
Чё "ап"? Ответ в (5).
13 bcosta
 
17.11.14
09:15
(12) Не работает ответ в (5).
Запоминается вся строка и при изменении даты остается старая строка и "убегает" все равно. Нужно именно номер строки выцепить из ТекущаяСтрока, а как не знаю.
14 bcosta
 
17.11.14
09:37
Напишите хоть еще одну версию. Вдруг кто знает решение. Или укажите, где я могу тупить, когда на самом деле все просто.
15 Cube
 
17.11.14
09:41
(13) Потому что не надо тупо копипастить, а покумекать... До записи документа надо запомнить ПРЕДЫДУЩУЮ СТРОКУ, прикинь, да? А после записи документа, надо спозиционироваться на запомненную ранее предыдущую строку...
16 bcosta
 
17.11.14
09:47
(15) На словах все очень просто, но на деле как запомнить предыдущую строку?

ТекущаяСтрока = ЭлементыФормы.ТабличноеПоле.ТекущаяСтрока - так?
А предыдущую строку как получить?
17 DmitrO
 
17.11.14
09:47
Перед редактированием сохранять дату документа в текущей строке в данных формы, после редактирования, запросом получать ссылку документа у которого дата >= ранее сохраненной и на нее позиционировать текущую строку. Что сложного то?
18 bcosta
 
17.11.14
09:50
(17) Хорошая идея, только вот не обязательно сортировка может быть по дате. При другой сортировке все так же будет прыгать.
Да все просто, сам это понимаю, но вот нужная мысль никак в голову не приходит. Всю ночь не спал, ничего не соображаю.
19 DmitrO
 
17.11.14
09:54
(18)можно конечно написать и универсальный алгоритм который будет работать при любой сортировке, в этом случае он должен работать не по дате а по полю (полям) текущей сортировки списка, но в общем случае он будет в несколько сложнее чем описанный выше.
Может для начала по дате напишите и этого будет достаточно? :)
Ну или хотя бы всего пару вариантов реализовать, а если текущая сортировка не предусмотрена алгоритмом, то просто ничего не делать.
20 bcosta
 
17.11.14
09:58
(19) Если ничего другое не получится, то придется так сделать. Спасибо за совет.
21 Kamas
 
17.11.14
10:01
Блин а почему бы не запоминать просто ссылку, а потом искать ссылку и позиционироваться на ней и пливать какая сортировка.
22 DmitrO
 
17.11.14
10:05
(21)вылазь из танка, как раз такого штатного поведения требуется избежать.
23 bcosta
 
17.11.14
10:06
Ссылку на что? На документ в текущей строке или в предыдущей?
24 Kamas
 
17.11.14
10:06
(22) Запоминай на строчку выше
25 Cube
 
17.11.14
10:09
(16) А ты думал, что в сказку попал?
26 bcosta
 
17.11.14
10:10
(24) Ок, только вот как?
27 bcosta
 
17.11.14
10:10
(25) Нет, это суровая жизнь, но сказки иногда хочется.
28 Cube
 
17.11.14
10:12
(26) Читай (18).
29 bcosta
 
17.11.14
10:14
(28) Что я там увидеть должен?
30 del123
 
17.11.14
10:28
Если на форме таблица по табличной части документа, то можно воспользоваться этим:
ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока.НомерСтроки
31 Cube
 
17.11.14
10:29
(29) Может, за тебя код написать, а ты за него лавандосы сострегешь и ЧСВ повысишь?
32 bcosta
 
17.11.14
10:30
(30) Нет, не табличная часть документа.
33 bcosta
 
17.11.14
10:31
(31) Конечно же нет, что ты. Нужна подсказка, куда копать. Больше ничего не прошу.
34 Cube
 
17.11.14
10:32
(33) Я в (28) ошибся. Хотель написать про (19) пост. Там и есть подсказка, куда копать.
35 Cube
 
17.11.14
10:34
Короче, делаешь запрос, который выдает тебе предыдущий документ. Конечно, при смене сортировки, придется и запрос изменять...
36 Cube
 
17.11.14
10:36
37 bcosta
 
17.11.14
10:59
(34)(35) Смысл из (19) понятен. Это будет работать. Но уж слишком громоздко. Хотелось бы, что-то стандартное типа НомерСтроки, Индекс и т.п. Но, что бы я не пробовал, найденное в интернете, ничего не подходит.
(36) Щас гляну, что там советуют.
38 bcosta
 
17.11.14
11:11
А если добавить колонку НомерСтоки и при изменении сортировки перезаполнять ее во всех строках по порядку, через ТекущуюСтроку получать НомерСтроки и переключаться на предыдущий НомерСтроки при изменении документа?
Через одно место конечно, но вроде должно сработать.
39 Kamas
 
17.11.14
11:13
(38) Долго