Имя: Пароль:
1C
1С v8
Не удаляются строки из ТЗ
,
0 r1000
 
18.02.16
08:59
Вот код:
    ТЗ = ЭтотОбъект.Движения.ВзаиморасчетыСКонтрагентами.Выгрузить();
мСтрок = ТЗ.НайтиСтроки(Новый Структура("ДоговорКонтрагента", Дог));
Для Каждого СтрМ Из мСтрок Цикл
МассивСтрок.Добавить(СтрМ);
КонецЦикла;
Для каждого Строка Из МассивСтрок Цикл
ТЗ.Удалить(Строка);
КонецЦикла;    

После цикла удаления, все строки ТЗ остаются на месте, хотя МассивСтрок не пустой и там есть что удалить.
Что тут не так ?
1 Garykom
 
гуру
18.02.16
09:04
уи ))
2 nordbox
 
18.02.16
09:06
(0)>>> Для каждого Строка Из МассивСтрок Цикл
Блин, когда запомните то????
переменную Строка замени
3 Lexey_
 
18.02.16
09:06
(0) а почему массива только два?можно же больше ненужных массивов сделать
4 nordbox
 
18.02.16
09:07
Ключевые слова в качестве переменных незяяяя....
5 НЕА123
 
18.02.16
09:07
кто такой МассивСтрок, и зачем он нужен...

   ТЗ = ЭтотОбъект.Движения.ВзаиморасчетыСКонтрагентами.Выгрузить();
мСтрок = ТЗ.НайтиСтроки(Новый Структура("ДоговорКонтрагента", Дог));
Для Каждого СтрМ Из мСтрок Цикл
ТЗ.Удалить(Строка);
КонецЦикла;
6 НЕА123
 
18.02.16
09:08
*СтрМ
7 r1000
 
18.02.16
09:09
Массив строк это переменная, в которой храниться массив найденных строк. Код не весь - для простоты сократил.
мСтрок = ТЗ.НайтиСтроки(Новый Структура("ДоговорКонтрагента", Дог)); - обернуто в цикл.
Т.е. там не один договор ищется, а несколько.
Поэтому 2 массива.
"Строка" вообще ни при чем.
8 Lexey_
 
18.02.16
09:11
(7) "Т.е. там не один договор ищется, а несколько.
Поэтому 2 массива." вообще не объяснение, чем тебе мСтрок не понравился?
9 r1000
 
18.02.16
09:11
Вот весь код. Там из экселя строки читаются, ищуться договоры и добавляются в массив.
    Пока Стр <= Строки-1 Цикл
        
        КодДоговора = Лист.Cells(Стр, КолКод).Value;
        Дог = Справочники.ДоговорыКонтрагентов.НайтиПоКоду(СокрЛП(КодДоговора));

        Если Дог <> Справочники.ДоговорыКонтрагентов.ПустаяСсылка() Тогда
            
            Сообщить(Дог.Код + " " + Дог.Владелец);
            
            мСтрок = ТЗ.НайтиСтроки(Новый Структура("ДоговорКонтрагента", Дог));
            Для Каждого СтрМ Из мСтрок Цикл
                МассивСтрок.Добавить(СтрМ);
            КонецЦикла;
            
        Иначе
            
            Сообщить("Не найден " + Дог.Код + " " + Дог.Владелец);
            
        КонецЕсли;
        
        Стр = Стр+1;
        ОбработкаПрерыванияПользователя();
        
    КонецЦикла;
10 r1000
 
18.02.16
09:13
Т.ю. в конце цикла МассивСтрок содержит все договора ТЗ, которые нужно удалить. НО почему то цикл удаления не работает. Оставляя ТЗ в прежнем состоянии.
Для каждого Строка Из МассивСтрок Цикл
ТЗ.Удалить(Строка);
КонецЦикла;
11 Garykom
 
гуру
18.02.16
09:15
(9) а уверены что ТЗ в которой потом удаляете это та же самая ТЗ в которой искали?
12 Zhuravlik
 
18.02.16
09:15
(10) Плохой код. Собери в массив все коды договоров, и обработай в запросе, как надо.
13 nordbox
 
18.02.16
09:16
Очистить() не предлагать???
14 Ёпрст
 
18.02.16
09:16
добавляй значения в массив
15 DDwe
 
18.02.16
09:16
(10) Тебе ясно намекнули про использование ключевых слов.
16 Ёпрст
 
18.02.16
09:16
во второй
17 НЕА123
 
18.02.16
09:22
ни куя не понимаю, зачем массив...

>МассивСтрок.Добавить(СтрМ);

ТЗ.Удалить(СтрМ);
18 Garykom
 
гуру
18.02.16
09:22
за DDoSили ТСа
19 r1000
 
18.02.16
09:23
(16)Спасибо !
20 НЕА123
 
18.02.16
09:24
да и, похоже, МассивСТрок не массив.