Имя: Пароль:
1C
1С v8
Упр.форма. Какой-то косяк со свойством ВыделенныеСтроки
0 Efimoff
 
16.09.13
21:14
Проблема такая.
У формы есть реквизит ТаблицаЛистаУпаковочногоМеста.
Есть ТаблицаЗначений, в которой хранится состав листов. На форме программно располагаю страницы и на них вывожу реквизит ТаблицаЛистаУпаковочногоМеста, который заполняю по отбору из ТаблицыЗначений.

&НаСервере
Процедура СтраницыДокументаПриСменеСтраницыНаСервере(ТекущаяСтраницаИмя, НомерСтраницы)
    
    УдалитьЭлементыФормы(Элементы, "ТаблицаЛистаУпаковочногоМеста");
    УдалитьЭлементыФормы(Элементы, "ГруппаКнопокТаблицы_"+НомерСтраницы);
    
    Реквизиты = ПолучитьРеквизиты("ТаблицаЛистаУпаковочногоМеста");
    
    ИменаКолонок = Новый Массив;
    Для Каждого Реквизит Из Реквизиты Цикл
        ИменаКолонок.Добавить(Реквизит.Имя)
    КонецЦикла;

    СодержимоеТаблицы = ПодготовитьТаблицу(НомерСтраницы);
    
    ТаблицаЛистаУпаковочногоМеста.Загрузить(СодержимоеТаблицы);
КонецПроцедуры

Дальше

В подключаемой процедуре ТаблицаЛистаУпаковочногоМестаПеретаскивание
хочу получить массив выделенных строк, который передается в процедуру ПараметромПеретаскивания.

&НаКлиенте
Процедура ТаблицаЛистаУпаковочногоМестаПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
    МассивКлючейУникальностиПеремещаемыхСтрок = Новый Массив;
    Для Каждого Значение Из ПараметрыПеретаскивания.Значение Цикл
        МассивКлючейУникальностиПеремещаемыхСтрок.Добавить(ТаблицаЛистаУпаковочногоМеста[Значение].КлючУникальности);
    КонецЦикла;
    СдвинутьЭлементВТаблицеСоставаДокументаНаСервере(МассивКлючейУникальностиПеремещаемыхСтрок, Строка);
КонецПроцедуры

Косяк в следующем.
Например, в таблице 10 строк. Выделяем 2 и 3 строки
При первом переходе на страницу в массив попадают правильные идентификаторы 2 и 3.
Переключаюсь между страницами формы. Выделяю 2 и 3 строки. В массив попадают идентификаторы 12 и 13.
Переключаюсь ещё раз между страницами формы. Выделяю 2 и 3 строки. В массив попадают идентификаторы 22 и 23.
В таблице на форме показано только 10 строк

Как такое может быть?
1 banco
 
16.09.13
21:26
(0)  не путай идентификаторстроки с номеромстроки
2 ДенисЧ
 
16.09.13
21:28
Книжку по УФ почитай. Там это написано
3 Efimoff
 
16.09.13
21:33
(2)Нет под рукой. Можно своими словами?
4 Efimoff
 
16.09.13
21:42
(1)Согласен. Только(ТаблицаЛистаУпаковочногоМеста[Стр].Наименование) во втором и следующих случаях говорит "Индекс находится за границами массива"
5 banco
 
16.09.13
22:42
(4) идентификатор строки не привязан к позиции элемента в коллекции. для получения элемента коллекции по идентификатору используй НайтиПоИдентификатору(<Идентификатор>)
6 Efimoff
 
17.09.13
09:29
(5) Хорошо. Почему тогда Элементы.ТаблицаЛистаУпаковочногоМеста.ТекущаяСтрока каждый раз при смене страниц показывает разные значения. 2, 12, 22. Я ведь физически удаляю элемент с формы, заново его создаю и заполняю. При этом количество элементов в таблице неизменно - 10.
7 RomaH
 
naïve
17.09.13
09:32
(6) потомучто это идентификаторы строки, блин
8 Defender aka LINN
 
17.09.13
09:34
(6) Наводящий вопрос: что происходит с таблицей при смене страницы?
9 Efimoff
 
17.09.13
09:39
(6)УдалитьЭлементыФормы(Элементы, "ТаблицаЛистаУпаковочногоМеста")
ТаблицаЛистаУпаковочногоМеста.Очистить()
ТаблицаЛистаУпаковочногоМеста.Загрузить()
10 Efimoff
 
17.09.13
09:42
(7)То есть идентификатор строки, каждый раз при смене страниц присваивается новый? А чем старый-то не угодил? элемент-то удалили и заново создали
11 Defender aka LINN
 
17.09.13
09:51
(10) "элемент-то удалили и заново создали"
12 Efimoff
 
17.09.13
10:11
(11) то есть при программном добавлении элемента форма заново присваивает идентификаторы новым элементам?
13 Defender aka LINN
 
17.09.13
10:28
(12) При загрузке
14 ДенисЧ
 
17.09.13
10:33
(10) Это 1с....
15 Efimoff
 
17.09.13
11:06
Всем спасибо. Буду извращаться
Основная теорема систематики: Новые системы плодят новые проблемы.