![]() |
![]() |
|
Расчет оплаты по документам. | ☑ | ||
---|---|---|---|---|
0
ZloyRafa
14.09.16
✎
05:28
|
Есть документ поступление средств, в нем указаны все документы по которым контрагент имеет задолжность, вносит сумму не превышаю его долги, сумма автоматически распределяется от самого раннего документа задолжности(раньше появился).
Запрос из ригистра сделал, все документы отсортировал по возрастанию даты создания, сумму задолжности знаю, как в запросе организовать расчет по этим документам? |
|||
1
ZloyRafa
14.09.16
✎
06:19
|
как передать переменной значение реквизита оплачено?
вроде сообразил как сделать расчет |
|||
2
ZloyRafa
14.09.16
✎
06:19
|
Процедура ОбработкаПроведения(Отказ, Режим)
//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! // регистр ВзаиморасчетыСПокупателями Расход Движения.ВзаиморасчетыСПокупателями.Записывать = Истина; //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВзаиморасчетыСПокупателямиОстатки.Контрагент, | ВзаиморасчетыСПокупателямиОстатки.Документ КАК Накладная, | ВзаиморасчетыСПокупателямиОстатки.СуммаОстаток КАК Сумма |ИЗ | РегистрНакопления.ВзаиморасчетыСПокупателями.Остатки(&МоментВремени, Контрагент = &Контрагент) КАК ВзаиморасчетыСПокупателямиОстатки | |УПОРЯДОЧИТЬ ПО | Накладная"; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); ДокументОбъект=РеквизитФормыВЗначение("Объект"); Оплата=Объект.Оплачено; Пока Выборка.Следующий() И Оплата>0 Цикл Если Выборка.Сумма<Оплата Тогда Движение = Движения.ВзаиморасчетыСПокупателями.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Контрагент = Контрагент; Движение.Документ = Выборка.Накладная; Оплата=оплата-выборка.сумма; Движение.Сумма=Выборка.Сумма; Иначе Движение = Движения.ВзаиморасчетыСПокупателями.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Контрагент = Контрагент; Движение.Документ = Выборка.Накладная; Движение.Сумма=Выборка.Сумма-Оплата; Оплата=0; КонецЕсли; КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры |
|||
3
ZloyRafa
14.09.16
✎
06:22
|
(2) Исправлю, не тот скинул код
Процедура ОбработкаПроведения(Отказ, Режим) //{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! // регистр ВзаиморасчетыСПокупателями Расход Движения.ВзаиморасчетыСПокупателями.Записывать = Истина; //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВзаиморасчетыСПокупателямиОстатки.Контрагент, | ВзаиморасчетыСПокупателямиОстатки.Документ КАК Накладная, | ВзаиморасчетыСПокупателямиОстатки.СуммаОстаток КАК Сумма |ИЗ | РегистрНакопления.ВзаиморасчетыСПокупателями.Остатки(&МоментВремени, Контрагент = &Контрагент) КАК ВзаиморасчетыСПокупателямиОстатки | |УПОРЯДОЧИТЬ ПО | Накладная"; РезультатЗапроса = Запрос.Выполнить(); Выборка = РезультатЗапроса.Выбрать(); Запрос.УстановитьПараметр("МоментВремени",МоментВремени()); Запрос.УстановитьПараметр("Контрагент",Контрагент); Оплата=Объект.Оплачено; Пока Выборка.Следующий() И Оплата>0 Цикл Если Выборка.Сумма<Оплата Тогда Движение = Движения.ВзаиморасчетыСПокупателями.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Контрагент = Контрагент; Движение.Документ = Выборка.Накладная; Оплата=оплата-выборка.сумма; Движение.Сумма=Выборка.Сумма; Иначе Движение = Движения.ВзаиморасчетыСПокупателями.Добавить(); Движение.ВидДвижения = ВидДвиженияНакопления.Расход; Движение.Период = Дата; Движение.Контрагент = Контрагент; Движение.Документ = Выборка.Накладная; Движение.Сумма=Выборка.Сумма-Оплата; Оплата=0; КонецЕсли; КонецЦикла; //}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ КонецПроцедуры |
|||
4
AneJIbcuH
14.09.16
✎
06:24
|
В обработке проведения вот это зачем: ДокументОбъект=РеквизитФормыВЗначение("Объект"); ?
|
|||
5
AneJIbcuH
14.09.16
✎
06:25
|
Задача в чем состоит? "как передать переменной значение реквизита оплачено? "
|
|||
6
ZloyRafa
14.09.16
✎
06:29
|
(4) это лишнее, код не тот скинул
Мне нужно узнать, как передать значение реквизита формы, в модуль объекта |
|||
7
AneJIbcuH
14.09.16
✎
06:32
|
Почему просто не создать реквизит объекта?
|
|||
8
ZloyRafa
14.09.16
✎
06:34
|
(7) Не понял
|
|||
9
AneJIbcuH
14.09.16
✎
06:39
|
Я так понял, тебе нужен реквизит Оплачено, но вот ты его же получил - Оплата=Объект.Оплачено
|
|||
10
ZloyRafa
14.09.16
✎
06:43
|
Ругается, Оплата=Оплачено не ругается, но теперь ругается на "не задано значение параметра момент времени"
|
|||
11
AneJIbcuH
14.09.16
✎
06:53
|
Ну попробуй момент передать как "Новый МоментВремени(Дата, Ссылка)"
|
|||
12
ZloyRafa
14.09.16
✎
07:00
|
Параметры надо было ставить после запроса, а не после выполнения его
|
|||
13
AneJIbcuH
14.09.16
✎
07:09
|
Естественно :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |