Untitled
unknown
plain_text
2 years ago
4.2 kB
8
Indexable
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// ДВИЖЕНИЯ ПО РЕГИСТРУ ВЗАИМОРАСЧЕТЫ
Движения.Взаиморасчеты.Записывать = Истина;
Движения.Взаиморасчеты.Записать();
// Установка блокировки данных в регистре Взаиморасчеты по контрагенту из документа
Блокировка = Новый БлокировкаДанных;
ЭлементБлокировки = Блокировка.Добавить("РегистрНакопления.Взаиморасчеты");
ЭлементБлокировки.УстановитьЗначение("Контрагент", Контрагент);
ЭлементБлокировки.Режим = РежимБлокировкиДанных.Исключительный;
Блокировка.Заблокировать();
ПроектАванс = Справочники.Проекты.Аванс;
// Получение данных для формирования движений
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ВзаиморасчетыОстатки.Проект КАК Проект,
| ВзаиморасчетыОстатки.СуммаВРубляхОстаток КАК СуммаВРубляхОстаток,
| ВзаиморасчетыОстатки.СуммаВВалютеОстаток КАК СуммаВВалютеОстаток,
| ВзаиморасчетыОстатки.Проект.Валюта КАК Валюта,
| ВзаиморасчетыОстатки.Проект.ДатаОплаты КАК ДатаОплаты
|ИЗ
| РегистрНакопления.Взаиморасчеты.Остатки(
| &МоментВремени,
| Контрагент = &Контрагент
| И Проект <> &Аванс) КАК ВзаиморасчетыОстатки
|
|УПОРЯДОЧИТЬ ПО
| ВзаиморасчетыОстатки.Проект.ДатаОплаты";
Запрос.УстановитьПараметр("МоментВремени", МоментВремени());
Запрос.УстановитьПараметр("Контрагент", Контрагент);
Запрос.УстановитьПараметр("Аванс", ПроектАванс);
// Гасим долг по проектам
Выборка = Запрос.Выполнить().Выбрать();
ОсталосьСписать = Сумма;
Пока Выборка.Следующий() и ОсталосьСписать <> 0 Цикл
СписываемВРублях = Мин (ОсталосьСписать, Выборка.СуммаВРубляхОстаток);
Движение = Движения.Взаиморасчеты.ДобавитьРасход();
Движение.Период = Дата;
Движение.Контрагент = Контрагент;
Движение.Проект = Выборка.Проект;
Движение.СуммаВРублях = СписываемВРублях;
Движение.СуммаВВалюте = СписываемВРублях / Выборка.СуммаВРубляхОстаток * Выборка.СуммаВВалютеОстаток;
ОсталосьСписать = ОсталосьСписать - СписываемВРублях;
КонецЦикла;
// Если после закрытия долга по всем проектам сумма еще осталась, то отражаем её как аванс
Если ОсталосьСписать <> 0 Тогда
Движение = Движения.Взаиморасчеты.ДобавитьРасход();
Движение.Период = Дата;
Движение.Контрагент = Контрагент;
Движение.Проект = ПроектАванс;
Движение.СуммаВРублях = ОсталосьСписать;
КонецЕсли;
КонецПроцедуры
Editor is loading...