Имя: Пароль:
1C
1С v8
Удаление проводок из регистра бухгалтерии
,
0 geka-geka
 
06.04.12
12:56
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

       ПроводкиРегистратора = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
       ПроводкиРегистратора.Отбор.Регистратор.Значение = ВыборкаДетальныеЗаписи.Ссылка;
       ПроводкиРегистратора.Прочитать();
       Для Каждого Проводка Из ПроводкиРегистратора Цикл
           Если Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ПустаяСсылка() Тогда
               ПроводкиРегистратора.Удалить(Проводка);
           КонецЕсли;
       КонецЦикла;
       ПроводкиРегистратора.Записать();

   КонецЦикла;

Такой цикл удаляет не все проводки с незаполненным СчетКт. Почему?
1 Cube
 
06.04.12
12:58
Скорее, он просто удаляет через одну запись))))
2 geka-geka
 
06.04.12
12:59
В документе 10 ненужных проводок, удалил 8.
3 Cube
 
06.04.12
12:59
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл

       ПроводкиРегистратора = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
       ПроводкиРегистратора.Отбор.Регистратор.Значение = ВыборкаДетальныеЗаписи.Ссылка;
       ПроводкиРегистратора.Прочитать();
       ПроводкиРегистратора.Очистить();
       ПроводкиРегистратора.Записать();

   КонецЦикла;
4 Cube
 
06.04.12
13:00
+(3) Ой))) Ступил))
5 geka-geka
 
06.04.12
13:00
(3) Не все нужно удалять, а только если СчетКт не заполнен
6 geka-geka
 
06.04.12
13:02
Запустил второй раз: из 2х оставил одну
7 Spieluhr
 
06.04.12
13:03
Для Каждого Проводка Из ПроводкиРегистратора Цикл

это ошибка. через индекс нужно обходить. Вы же удаляете строку - и естественно прыгает через 1...
8 Cube
 
06.04.12
13:04
(5) Короче, смысл в том, что когда ты удаляешь строку, то после этого перепрыгиваешь через одну. То есть тебе нужно что-то вроде:

Сч = 0;
Пока Сч <= ПроводкиРегистратора.Количество() Цикл
   Проводка = ПроводкиРегистратора[Сч];
   Если Проводка.СчетКт = ПланыСчетов.Хозрасчетный.ПустаяСсылка() Тогда
       ПроводкиРегистратора.Удалить(Проводка);
   Иначе
       Сч = Сч + 1;
   КонецЕсли;
КонецЦикла;
9 Spieluhr
 
06.04.12
13:05
(8) в точку!
10 geka-geka
 
06.04.12
13:17
Спасибо. Сработало.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс