Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 8 общая

Текущая строка Динамического списка

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

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

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

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

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

может как вариант открывать форму записи регистра (можно нарисовать уникальную форму только с полем "ответственный") при двойном клике по строке и выбирать ответственного в ней без всяких программных записей и обновлений списка?

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует