Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Уф как обновить коллекцию выделенных строк таблицы формы

Уф как обновить коллекцию выделенных строк таблицы формы
Я
   Droning1C
 
03.03.21 - 17:37
По нажатию на форме обработки, встроенной в расширение, вызывается выполнение следующего кода:



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



Если выделить несколько строк в тч, удалить их и вызвать выполнение кода, то коллекция выделенных строк не обновляется, в следствии чего получаю ошибки.

Как обновить коллекцию выделенных строк таблицы формы в данном случае?
   Droning1C
 
1 - 03.03.21 - 17:40
По нажатию на форме обработки))) Извиняюсь... По нажатию кнопки, конечно же)
   Droning1C
 
2 - 03.03.21 - 18:58
Я явно упускаю какой-то пустяк, просто из-зи отсутствия опыта работы с УФ. Пробовал по-разному, не получается.
   Droning1C
 
3 - 03.03.21 - 19:02
Мне нужно по выделенным строкам формировать отбор вызываемого отчета. Если заполнить ТЧ обработки, выделить строки и сформировать отчет, то все ок.
Если после заполнения удалить первые, допустим, 5 строк из 7ми, то при повторном вызове процедуры формирования отчета, индексы выделенных строк в коллекции выделенных строк остаются прежними и вызывается искл ситуация - индекс находится за границами массива.
   ДенисЧ
 
4 - 03.03.21 - 19:05
И правильно вызываются.
Ибо не поиндексам нужно строки брать, а по идентификаторам.

В книжке по УФ это написано.
   Droning1C
 
5 - 03.03.21 - 19:18
(4)
        Для Каждого Идентификатор Из Элементы.СоставЗаказа.ВыделенныеСтроки Цикл
             НСтроки = Объект.СоставЗаказа.НайтиПоИдентификатору(Идентификатор).НомерСтроки;    
                МассивВыделеннойНоменклатуры.Добавить(Объект.СоставЗаказа[НСтроки-1].Номенклатура);
        КонецЦикла;



Так? или тоже изврат?
   Chameleon1980
 
6 - 03.03.21 - 19:39
ну книгу то открыл?
или СП чтоли
   Droning1C
 
7 - 03.03.21 - 20:15
(6) стр 624-628)))  

Для Каждого Идентификатор Из Элементы.СоставЗаказа.ВыделенныеСтроки Цикл
    СтрокаКоллекции = Объект.СоставЗаказа.НайтиПоИдентификатору(Идентификатор);
    ИндексСтрокиКоллекции = Объект.СоставЗаказа.Индекс(СтрокаКоллекции);
    МассивВыделеннойНоменклатуры.Добавить(Объект.СоставЗаказа[ИндексСтрокиКоллекции].Номенклатура);
КонецЦикла;



теперь то не изврат?)
   Droning1C
 
8 - 03.03.21 - 20:17
и еще, на что я изначально не обратил внимание - 

ВыделенныеСтроки (SelectedRows)
Использование:
Только чтение.
Описание:
Тип: Массив.
Содержит массив ИДЕНТИФИКАТОРОВ выделенных строк. (а не индексов)

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