Вход | Регистрация
 
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 или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.