Эта обработка пригодится тем, кто хочет "обнулить" взаиморасчеты с контрагентами в УНФ в разрезе по организации.
Обработка тестировалась в Управление нашей фирмой, редакция 1.6 (1.6.16.178).
В качестве примера рассмотрим списание взаиморасчетов по регистру накопления "Расчеты с покупателями":
&НаСервере
Процедура кит_ПроститьДолгиПокупателямНаСервере()
Если Не ЗначениеЗаполнено(ДатаОстатков) Тогда
Сообщить("Укажи дату остатков");
Возврат;
КонецЕсли;
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
| РасчетыСПокупателямиОстаткиИОбороты.Регистратор КАК Регистратор
|ИЗ
| РегистрНакопления.РасчетыСПокупателями.ОстаткиИОбороты(, &КонПериода, Регистратор, , Организация = &Организация) КАК РасчетыСПокупателямиОстаткиИОбороты
|ГДЕ
| (РасчетыСПокупателямиОстаткиИОбороты.СуммаКонечныйОстаток <> 0
| ИЛИ РасчетыСПокупателямиОстаткиИОбороты.СуммаРегКонечныйОстаток <> 0)";
Запрос.УстановитьПараметр("КонПериода", КонецДня(ДатаОстатков));
Запрос.УстановитьПараметр("Организация", Организация);
РезультатЗапроса = Запрос.Выполнить().Выгрузить();
Если РезультатЗапроса.Количество() = 0 Тогда
Сообщить("Долгов нет");
Возврат;
КонецЕсли;
//
ДокОбъект = Документы.КорректировкаРегистров.СоздатьДокумент();
ДокОбъект.Дата = КонецДня(ДатаОстатков);
ДокОбъект.Комментарий = "#Корректировка создана обработкой от " + ТекущаяДата() + " #";
ДокОбъект.УстановитьНовыйНомер();
ДокОбъект.Автор = Пользователи.ТекущийПользователь();
МетаданныеРегистраНакопления = РегистрыНакопления.РасчетыСПокупателями.СоздатьНаборЗаписей().Метаданные();
ДокОбъект.ТаблицаРегистров.Очистить();
нс = ДокОбъект.ТаблицаРегистров.Добавить();
нс.Имя = МетаданныеРегистраНакопления.Имя;
ДвиженияДокумента = ДокОбъект.Движения.РасчетыСПокупателями;
ДвиженияДокумента.Очистить();
ДвиженияДокумента.Записывать = Истина;
Для Каждого Строка Из РезультатЗапроса Цикл
НаборЗаписей = РегистрыНакопления.РасчетыСПокупателями.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(Строка.Регистратор);
НаборЗаписей.Прочитать();
Для Каждого Запись Из НаборЗаписей Цикл
НовоеДвижение = ДвиженияДокумента.Добавить();
ЗаполнитьЗначенияСвойств(НовоеДвижение, Запись);
НовоеДвижение.Период = КонецДня(ДатаОстатков);
НовоеДвижение.Сумма = - НовоеДвижение.Сумма;
НовоеДвижение.СуммаВал = - НовоеДвижение.СуммаВал;
НовоеДвижение.СуммаРег = - НовоеДвижение.СуммаРег;
КонецЦикла;
КонецЦикла;
ДокОбъект.Записать();
Сообщить("Создан документ " + Строка(ДокОбъект.Ссылка));
КонецПроцедуры