Имя: Пароль:
1C
 
Ошибка при удалении строки в табличной части
0 LivingStar
 
15.10.19
09:10
Есть форма документа. На ней выведены 3 табличные части.
При удалении строки из первой табличной части выходит ошибка. Индекс находится за границами массива.
Так как там идет программная обработка удаления, строк из третей табличной части, по данным второй.
Пытаюсь сейчас понять в чем причина ошибки, что неправильно сделано и как нужно. Подскажите пожалуйста предметно кому ясно в чем дело.

ошибка возникает на втором цикле.

&НаКлиенте
Процедура НарушенияПередУдалением(Элемент, Отказ)
    
    Если Элементы.Нарушения.ТекущаяСтрока = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    Идентификатор         = Элементы.Нарушения.ТекущиеДанные.ИдентификаторНарушения;
    ПодчиненныеСтроки     = Объект.ПриостановленныеРаботы.НайтиСтроки(Новый Структура("ИдентификаторНарушения", Идентификатор));
    Для Каждого ПодчиненнаяСтрока Из ПодчиненныеСтроки Цикл
        Объект.ПриостановленныеРаботы.Удалить(ПодчиненнаяСтрока);
    КонецЦикла;
    
    ПодчиненныеСтрокиФайловНарушений = Объект.ФайлыПоНарушениям.НайтиСтроки(Новый Структура("ИдентификаторНарушения", Идентификатор));
    Для Каждого ПодчиненнаяСтрока Из ПодчиненныеСтрокиФайловНарушений Цикл
        Объект.ПриостановленныеРаботы.Удалить(ПодчиненнаяСтрока);
    КонецЦикла;
КонецПроцедуры
1 vicof
 
15.10.19
09:15
ну а ты блеать не можешь пять строчек кода сравнить?
2 vicof
 
15.10.19
09:16
Ошибка в том, что Приостановленные работы не то же самое, что файлы по нарушениям. Но тебе не понять.
3 LivingStar
 
15.10.19
09:25
(2) Это понятно ФайлыПоНарушениям - одна табличная часть.
ПриостановленныеРаботы - другая табличная часть.

Что тогда тут хотели сделать, если это в принципе не возможно? Из одной табличной части пытаться удалить другую табличную часть.

И как бы это можно было бы сделать правильно?
4 LivingStar
 
15.10.19
09:27
Я правильно понимаю, что это в принципе не будет работать, если будет выполняться цикл?

    ПодчиненныеСтрокиФайловНарушений = Объект.ФайлыПоНарушениям.НайтиСтроки(Новый Структура("ИдентификаторНарушения", Идентификатор));
    Для Каждого ПодчиненнаяСтрока Из ПодчиненныеСтрокиФайловНарушений Цикл
        Объект.ПриостановленныеРаботы.Удалить(ПодчиненнаяСтрока);
    КонецЦикла;
5 dezss
 
15.10.19
09:29
(4) Да тупо ошиблись.

Во втором цикле поменяй Объект.ПриостановленныеРаботы на Объект.ФайлыПоНарушениям
6 LivingStar
 
15.10.19
09:33
(5) Ок просветление пришло, вроде как.
Спасибо. Посмотрю как пойдет дальше.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший