Имя: Пароль:
1C
1С v8
Текущая строка Динамического списка
0 Ovcyanka
 
20.07.18
08:05
Здравствуйте, уважаемые! Сижу "туплю" уже 3 дня не могу понять что делаю не так..
проблема: на форме есть динамический список, основной таблицей которого является регистр сведений.. ( текущие строки имеют тип РегистраСведений Ключ записи) в событиях дС "СписокВыбор" даю пользователю возможность изменить параметр регистра сведений ( далее его записываю программно . и ищу ( также программно) следующую за Текущей запись запись и меняю нужные мне данные в ней ). проблема что зрительно слетает позиционирование текущей строки ( была на строке 2, стала на строке 3). ничего не помогает. побывала и просто запоминать предыдущую тек. строку и потом ставить активность на нее. и через создать ключ записи искать данные по 4 параметрам отбора и потом этот ключ подсовывать текущей строки Динамического списка. не встает активность и все((((. в чем может быть беда.......
1 Радим1987
 
20.07.18
08:19
ОбновитьОтображениеДанных(<ОбновлятьЭлементы>) не помогает?
2 Ovcyanka
 
20.07.18
08:54
В качестве ОбновлятьЭлементы , что передать тогда?
3 Ovcyanka
 
20.07.18
09:05
ключ записи вроде даже передается в тек. строку но, почему она не становиться активной хз(((((
СсылкаНаНужныйЭлемент = Элементы.Список.ТекущаяСтрока;
ПрограммноеИзменениеДанныхРегистр(ТекСтрокаСДанными,"");
Элементы.Список.Обновить();
          
        попытка
        Элементы.Список.ТекущаяСтрока= ТекСтрока;
        Исключение            
        КонецПопытки;
4 Ovcyanka
 
20.07.18
09:07
(3) ниже там
ТекСтрока = Элементы.Список.ТекущаяСтрока;
ПрограммноеИзменениеДанныхРегистраОперацииЗаказа(ТекСтрокаСДанными,"");
        
Элементы.Список.Обновить();      
попытка
Элементы.Список.ТекущаяСтрока= ТекСтрока;
Исключение            
КонецПопытки;
5 Ovcyanka
 
20.07.18
09:09
и все равно , соскакивает позиция на следующую строку, а не на текущую. Причем это при первом изменении такое поведение, когда после , опять встаю на строчку №2 и опять меняю данные, она как была активной так и есть, прочему при первом изменении слетает активность((
6 Ovcyanka
 
20.07.18
19:02
не ужели никто не работал с ДС?
7 hhhh
 
20.07.18
21:05
(6) наверно вы перепутали список и табличное поле

Элементы.Список - это табличное поле всё-таки.
просто Список - это динамический список.
8 whitedi
 
20.07.18
23:22
(4) ПрограммноеИзменениеДанныхРегистр(ТекСтрокаСДанными,"");

данная процедура должна быть с директивой #НаСервереБезКонтекста
9 Ovcyanka
 
21.07.18
06:53
(7) у меня Список-это динамический список.
я устанавливаю текущей строку Динамического списка, данные которого размещаются на форме.
10 hhhh
 
21.07.18
08:37
(9) почему тогда Элементы.Список ?
11 Ovcyanka
 
21.07.18
08:48
а как я должна обратиться к текущей строке?
12 Ovcyanka
 
21.07.18
08:49
(8) не помогает. ((( в ДС есть составного типа реквизит, вот его когда меняешь программа происходит скачек на следующую строку при обновлении ДС и ничего не могу сделать
13 Сияющий в темноте
 
21.07.18
09:23
Текущая строка списка,это номер от начала,если мы поменяли запись,особенно поля,которые в упорядочивании,то запись уходит в другое место,а потом умная система находит по номеру текущую строку,которая следующая.
Насколько я помню,у записи регистра есть ключ уникальности,который при обновлении измерений меняется.

Как вариант,запомнить индекс текущей строки,скинуть текущую в начало списка,изменить то,что нужно,найти то,что изменили и сделать его текущим.
14 whitedi
 
21.07.18
13:34
(12) опишите задачу в целом. Очень похоже, что ваше решение нереализуемо в дин.списке.
15 Ovcyanka
 
21.07.18
19:39
(13)там индекса нет , строки - с типом регистр сведений ключ записи.. я его и сохраняю ДО обновления списка, а потом присваиваю Эту сохраненный ключ текущей строке и не срабатывает((
16 Ovcyanka
 
21.07.18
19:45
(14)  есть строки в дС, изменяем какие либо данные ПРОГРАММНО ( в конкретном случае скачет на следующую строку только при смене реквизита Ответственный, который имеет составной тип ( сотрудники организации и Бригады). Т е. вызываю форму выбора ответственного. после выбора, запоминаю ключ строки, изменяю запись в регистре ,обновляю динамический список, устанавливаю текущей Запомненный ключ.. и строка перескакивает на следующую..

Пример: встаю на строчку №2 ,устанавливаю в Динамическом списке в колонке ответственный сотрудника Иванов Иван Иванович( после установки в регистр записываются данные и вызывается программное обновление динамического списка) и активной становится строка №3. а не №2 как была..
17 hhhh
 
21.07.18
20:13
(16) посмотри отладчиком чему равна Элементы.Список.ТекущаяСтрока
18 1sanekmaloi1
 
21.07.18
21:43
Ну значит текущая строка стала 3й по списку, то что делается программно изменяет дин.список и на 2ю строку встает другая запись.
19 whitedi
 
21.07.18
23:22
(16) если не вызывать программно обновление, а нажать F5 после выполнения программной записи, как ведет себя список?

может как вариант открывать форму записи регистра (можно нарисовать уникальную форму только с полем "ответственный") при двойном клике по строке и выбирать ответственного в ней без всяких программных записей и обновлений списка?
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший