Имя: Пароль:
1C
1С v8
Банальная тема - ТекущаяСтрока у табличного поля
0 Solitar
 
17.09.14
12:55
На форме расположено табличное поле с типом - РСВ НаборЗаписей.
Перед копированием запоминаю строку, на основании которой делают копирование и строку, которая получилась в результате копирования.
После копирования нужно спозиционироваться хотя бы на той строке, на основании которой копировали.

После копирования хочу установить "ТекущуюСтроку" у элемента форма. Делаю через свойство элемента "ТекущаяСтрока". Тип у него ЗаписьНаборЗаписей. Мои переменные тоже имеют такой тип.

Но получаю стандартную ошибку "Отсутствуют ключ строки"
1 Ёпрст
 
17.09.14
12:56
больше кода
2 kosts
 
17.09.14
12:57
(0) Перехватывай копирование. Отменяй. И создавай новую запись программно.
3 Maxus43
 
17.09.14
13:09
в сторону КлючЗаписи поковыряй
4 Maximysis
 
17.09.14
13:16
УП?
5 vmlspb
 
17.09.14
13:16
#Если Клиент Тогда
        
        ФормаСписок = РегистрыСведений.ОТ.ПолучитьФормуСписка();
    
        Если ФормаСписок.Открыта() Тогда
            
            ФормаСпискаОткрыта = Истина;
            
            //Заполним список для структуры Ключа записи
            
            Для Каждого Эл1 Из Метаданные.РегистрыСведений.ОТ.Измерения Цикл
                КлючЗаписиМассив.Добавить(Эл1.Имя);
            КонецЦикла;
            
            //Установим текущую строку
            Если ФормаСписок.ЭлементыФормы.РегистрСведенийСписок.ТекущаяСтрока <> Неопределено Тогда
                ТекущийЗаказ = ФормаСписок.ЭлементыФормы.РегистрСведенийСписок.ТекущаяСтрока.Заказ;
                
                Если ФормаСписок.ЭлементыФормы.РегистрСведенийСписок.ТекущаяКолонка = ФормаСписок.ЭлементыФормы.РегистрСведенийСписок.Колонки.Отметка Тогда
                    ФормаСписок.ЭлементыФормы.РегистрСведенийСписок.ТекущаяКолонка = ФормаСписок.ЭлементыФормы.РегистрСведенийСписок.Колонки.СтатусСобрать;
                КонецЕсли;
                
            КонецЕсли;
            
        КонецЕсли;
        
    #КонецЕсли


//Далее какие-то действия....


//----------------------
    //А теперь устанавливаем текущую строку
    Если ФормаСпискаОткрыта
        И ТекущийЗаказ <> Неопределено Тогда
        
        НаборЗаписей2 = РегистрыСведений.ОТ.СоздатьНаборЗаписей();
        НаборЗаписей2.Отбор.Заказ.Установить(ТекущийЗаказ);
        
        НаборЗаписей2.Прочитать();
        
        Если НаборЗаписей2.Количество() = 1 Тогда
            
            ОтборТекущаяСтрока = Новый Структура;
            
            Для Каждого Эл2 Из КлючЗаписиМассив Цикл
                
                ОтборТекущаяСтрока.Вставить(Эл2,НаборЗаписей2[0][Эл2]);
                
            КонецЦикла;
            
            КлючЗаписи = РегистрыСведений.ОТ.СоздатьКлючЗаписи(ОтборТекущаяСтрока);
            ФормаСписок.ЭлементыФормы.РегистрСведенийСписок.ТекущаяСтрока = КлючЗаписи;
            
        КонецЕсли;
        
    КонецЕсли;
    //----------------------
6 Solitar
 
17.09.14
14:37
(3) Ковырял, не получилось.

Если грубо, то так:

//идет работа со следующей строкой

        Отбор = Новый Структура;
        Отбор.Вставить("Вид", Элемент.ТекущиеДанные.Вид);
        ПоследняяЗапись = РегистрыСведений.КонтактнаяИнформация.СоздатьКлючЗаписи(Отбор);
        Элемент.ТекущаяСтрока = ПоследняяЗапись;



(4) обычные
7 Solitar
 
18.09.14
17:07
ап. похоже фишка в том, что это набор записей....
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс