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