Программное изменение документа "Корректировка записей регистров" БГУ 1.0

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. 2PRV 7 19.05.15 09:44 Сейчас в теме
Пытаюсь в документе корректировка записей регистра удалить все строк за конкретное ИФО. Делаю так:
ДокументКорректировки = Выборка.ПолучитьОбъект(); 
		Сообщить("Обработка документа " + ДокументКорректировки.Ссылка);
		Запрос = Новый Запрос;
		Запрос.Текст = "ВЫБРАТЬ *
		    	        |ИЗ
	        	        |    РегистрБухгалтерии.ЕПСБУ КАК ЕПСБУ
		            	|ГДЕ
		            	|    ЕПСБУ.Регистратор = &Регистратор
		            	|    И НЕ ЕПСБУ.Баланс = &ИФО";
						
		Запрос.УстановитьПараметр("Регистратор",ДокументКорректировки.Ссылка);
		Запрос.УстановитьПараметр("ИФО",ИФО);
		ТаблицаДвижений = Запрос.Выполнить().Выгрузить();
		ДокументКорректировки.Движения.ЕПСБУ.Очистить();
		ДокументКорректировки.Движения.ЕПСБУ.Загрузить(ТаблицаДвижений);
		ДокументКорректировки.Движения.ЕПСБУ.Записать();
Показать

Документ перезаписывается, все хорошо, НО в документе очищается вся аналитика,т.е поля (дт)субконто1, (дт)субконто2, ... оказываются пустыми. Подскажите как их заполнить или может быть есть другой способ работы с данным документом?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 19.05.15 10:08 Сейчас в теме
(1) 2PRV, лучше прочитайте набор записей РБ и в цикле отберите записи, которые нужно удалить. Потом их удалите.
3. 2PRV 7 20.05.15 02:50 Сейчас в теме
(2) Sashares, хорошо, попробую.
4. 2PRV 7 20.05.15 07:34 Сейчас в теме
Сделал так:
Сообщить("Обработка документа " + Ссылка);
	Набор = РегистрыБухгалтерии.ЕПСБУ.СоздатьНаборЗаписей();
	Набор.Отбор.Регистратор.Установить(Ссылка);
	Набор.Прочитать();
	обработано=0;
	Для каждого Запись из Набор Цикл
	    Если НЕ Запись.Баланс =  ИФО Тогда
    	   набор.Удалить(Запись);
		   обработано=обработано+1;
    	КонецЕСли;
	КонецЦикла;
	Если обработано>0 Тогда 
		Набор.Записать();	
		Сообщить("Удалено " + обработано + " записей");
	КонецЕсли; 
Показать

получилась какая то ерунда, что то поудалялось что то нет. Проблема я так думаю здесь:
Для каждого Запись из Набор Цикл
набор.Удалить(Запись);
5. Sashares 35 20.05.15 09:25 Сейчас в теме
(4) 2PRV, для удаления записей таблицы обычно используют другой подход:

МассивДляУдаления = Новый Массив;

Для Каждого СтрТЧ Из МояТаблица Цикл
МассивДляУдаления.Добавить(СтрТЧ);
КонецЦикла;

Для Каждого ЭлементМассива Из МассивДляУдаления Цикл

МояТаблица.Удалить(ЭлементМассива);

КонецЦикла;

Показать
6. 2PRV 7 20.05.15 11:01 Сейчас в теме
(5) Sashares, Спасибо. сделал так:
Сообщить("Обработка документа " + Ссылка);
	Набор = РегистрыБухгалтерии.ЕПСБУ.СоздатьНаборЗаписей();
	Набор.Отбор.Регистратор.Установить(Ссылка);
	Набор.Прочитать();
	обработано=0;
	
	МассивДляУдаления = Новый Массив;
	Для каждого Запись из Набор Цикл
	    Если НЕ Запись.Баланс =  ИФО Тогда
    	   МассивДляУдаления.Добавить(Запись);
		   обработано=обработано+1;
    	КонецЕСли;
	КонецЦикла;
	
	Для Каждого ЭлементМассива Из МассивДляУдаления Цикл

		Набор.Удалить(ЭлементМассива);

	КонецЦикла;

	Если обработано>0 Тогда 
		Набор.Записать();	
		Сообщить("Удалено " + обработано + " записей");
	КонецЕсли; 
Показать

Все получилось
DinJak; scarface13; +2 Ответить
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот