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

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

Ошибка при очистке табличной части обработки

Ошибка при очистке табличной части обработки
Я
   slafor
 
22.03.18 - 20:07
Существует обработка, в которой есть табличная часть.

Заполняю табличную часть по определенному алгоритму. Затем беру оттуда те строки, которые выбрал пользователь (по колонке "Выбрать" тип Булево), очищаю всю таб. часть (методом Очистить()) и заполняю ее новыми строками с измененными данными.

Потом возникает потребность отреагировать на двойное нажатие пользователя на какой-либо строке таб. части и выполнить определенное действие. Узнать, на какую именно строку нажал пользователь, я могу только по Индексу строки (нумерация строк идет от нуля).

Но почему-то индекс строки начинается не с 0, а с (0+КоличествоСтрокОчищеннойДоЭтогоТаблицнойЧасти), хотя бывшие до этого строки  уже не существуют. Так и должно быть?

Релиз 8.3.8.
 
 
   Lexey_
 
1 - 22.03.18 - 21:34
(0) покажи на картинке
   Cyberhawk
 
2 - 22.03.18 - 21:40
Индекс <> номер строки
   slafor
 
3 - 22.03.18 - 22:26
Ссылка на окно с формой обработки после нажатия кнопки "Заполнить": https://yadi.sk/i/XswGVSCs3TfAZK .

Дальше, для понимания сути вопроса, я внес в обработку некоторые изменения. При нажатии кнопки "Сравнить" происходит вызов следующей процедуры:


&НаСервере
Процедура СравнитьНаСервере()

        КоличествоСтрокДоОчистки = Объект.ТаблицаСоответствий.Количество();
    Объект.ТаблицаСоответствий.Очистить();
    КоличествоСтрокПослеОчистки = Объект.ТаблицаСоответствий.Количество();
    
    Возврат;

КонецПроцедуры

&НаКлиенте
Процедура Сравнить(Команда)
    СравнитьНаСервере();
КонецПроцедуры


ТаблицаСоответствий - это табличная часть обработки. После выполнении метода Очистить() КоличествоСтрокПослеОчистки становится равным 0.

Потом я вручную добавляю в табличную часть новую строку или опять загружаю строки в ТЧ из XML-файла, неважно как, главное - я добавляю туда новые строки.

Далее, у меня есть событие выбора строки пользователем ("Выбор" - "ТаблицаСоответствийВыбор").

&НаКлиенте
Процедура ТаблицаСоответствийВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    сЗапуститьПриложение(ВыбраннаяСтрока);
КонецПроцедуры

&НаСервере
Процедура сЗапуститьПриложение(ВыбраннаяСтрока)
    Строка = Объект.ТаблицаСоответствий[ВыбраннаяСтрока];
    ПолноеИмяФайла = Строка.ПолноеИмяФайла;
    //сЗапуститьПриложение(ПолноеИмяФайла);

    ЗапуститьПриложение(ПолноеИмяФайла);    
КонецПроцедуры

Так вот, параметр ВыбраннаяСтрока и должен содержать индекс выбранной пользователем строки (с 0), т.е. если строка одна, там должен быть 0. Но там содержится число, равное индексу выбранной строки + количеству строк ДО очистки.
   slafor
 
4 - 22.03.18 - 22:29
Прошу прощения за неточность - релиз платформы 8.3.9.1818.
   Lexey_
 
5 - 22.03.18 - 22:29
(3) "параметр ВыбраннаяСтрока и должен содержать индекс выбранной пользователем строки" сам придумал?
   slafor
 
6 - 22.03.18 - 22:54
(5) Понял, надо опираться не на ВыбраннуюСтроку, а на Элемент.ТекущиеДанные. Спасибо.

Только тогда непонятно, зачем вообще нужен параметр ВыбраннаяСтрока?
   hhhh
 
7 - 23.03.18 - 04:41
(6) это идентификатор, а не индекс. почтай справку про идентификатор строки.
   VladZ
 
8 - 23.03.18 - 04:50
(0) "Заполняю табличную часть по определенному алгоритму. Затем беру оттуда те строки, которые выбрал пользователь (по колонке "Выбрать" тип Булево), очищаю всю таб. часть (методом Очистить()) и заполняю ее новыми строками с измененными данными. " - зачем нужны эти "нелепые телодвижения"?
   slafor
 
9 - 23.03.18 - 16:34
(8) Затем, что по моему алгоритму иначе было бы сложнее:
1. Табличная часть заполняется именами файлов из указанного пользователем каталога.
2. Имена файлов содержат в себе дату и время их создания, но по определенной схеме. Я вытаскиваю из имен эту информацию и заполняю колонку "Дата файла" (просто взять дату создания или дату изменения файла нельзя, потому что они "почему-то" могут не совпадать).
3. Запросом ищу похожие даты звонков и сопоставляю их с датами  файлов.

Понимаю, что объясняю все весьма сумбурно, но вкратце это так: даты звонков, номера и прочее берется из XML-файла, предоставляемого оператором сотовой связи (каким именно, не скажу, а то сочтут за рекламу) и записываются в регистр сведений. А сами аудио-записи звонков берутся уже потом - из телефона, с которого ведутся разговоры.

И вот мне почему-то показалось, что легче и быстрее было бы оперировать непосредственно с табличной частью, чем создавать несколько ТЗ. Но теперь мне кажется, что я ошибался. На производительность это практически не влияет.
   Franchiser
 
10 - 23.03.18 - 17:01
идентификатор строки <> индекс строки = номер строки-1
 
 Рекламное место пустует

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