Программное изменение документа "Корректировка записей регистров" БГУ 1.0
Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
Пытаюсь в документе корректировка записей регистра удалить все строк за конкретное ИФО. Делаю так:
Документ перезаписывается, все хорошо, НО в документе очищается вся аналитика,т.е поля (дт)субконто1, (дт)субконто2, ... оказываются пустыми. Подскажите как их заполнить или может быть есть другой способ работы с данным документом?
ДокументКорректировки = Выборка.ПолучитьОбъект();
Сообщить("Обработка документа " + ДокументКорректировки.Ссылка);
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ *
|ИЗ
| РегистрБухгалтерии.ЕПСБУ КАК ЕПСБУ
|ГДЕ
| ЕПСБУ.Регистратор = &Регистратор
| И НЕ ЕПСБУ.Баланс = &ИФО";
Запрос.УстановитьПараметр("Регистратор",ДокументКорректировки.Ссылка);
Запрос.УстановитьПараметр("ИФО",ИФО);
ТаблицаДвижений = Запрос.Выполнить().Выгрузить();
ДокументКорректировки.Движения.ЕПСБУ.Очистить();
ДокументКорректировки.Движения.ЕПСБУ.Загрузить(ТаблицаДвижений);
ДокументКорректировки.Движения.ЕПСБУ.Записать();
ПоказатьДокумент перезаписывается, все хорошо, НО в документе очищается вся аналитика,т.е поля (дт)субконто1, (дт)субконто2, ... оказываются пустыми. Подскажите как их заполнить или может быть есть другой способ работы с данным документом?
По теме из базы знаний
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Сделал так:
получилась какая то ерунда, что то поудалялось что то нет. Проблема я так думаю здесь:
Для каждого Запись из Набор Цикл
набор.Удалить(Запись);
Сообщить("Обработка документа " + Ссылка);
Набор = РегистрыБухгалтерии.ЕПСБУ.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Ссылка);
Набор.Прочитать();
обработано=0;
Для каждого Запись из Набор Цикл
Если НЕ Запись.Баланс = ИФО Тогда
набор.Удалить(Запись);
обработано=обработано+1;
КонецЕСли;
КонецЦикла;
Если обработано>0 Тогда
Набор.Записать();
Сообщить("Удалено " + обработано + " записей");
КонецЕсли;
Показатьполучилась какая то ерунда, что то поудалялось что то нет. Проблема я так думаю здесь:
Для каждого Запись из Набор Цикл
набор.Удалить(Запись);
(4) 2PRV, для удаления записей таблицы обычно используют другой подход:
МассивДляУдаления = Новый Массив;
Для Каждого СтрТЧ Из МояТаблица Цикл
МассивДляУдаления.Добавить(СтрТЧ);
КонецЦикла;
Для Каждого ЭлементМассива Из МассивДляУдаления Цикл
МояТаблица.Удалить(ЭлементМассива);
КонецЦикла;
Показать
(5) Sashares, Спасибо. сделал так:
Все получилось
Сообщить("Обработка документа " + Ссылка);
Набор = РегистрыБухгалтерии.ЕПСБУ.СоздатьНаборЗаписей();
Набор.Отбор.Регистратор.Установить(Ссылка);
Набор.Прочитать();
обработано=0;
МассивДляУдаления = Новый Массив;
Для каждого Запись из Набор Цикл
Если НЕ Запись.Баланс = ИФО Тогда
МассивДляУдаления.Добавить(Запись);
обработано=обработано+1;
КонецЕСли;
КонецЦикла;
Для Каждого ЭлементМассива Из МассивДляУдаления Цикл
Набор.Удалить(ЭлементМассива);
КонецЦикла;
Если обработано>0 Тогда
Набор.Записать();
Сообщить("Удалено " + обработано + " записей");
КонецЕсли;
ПоказатьВсе получилось
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот