| 
    
        
     
     | 
    
    
  | 
Расчет оплаты по документам. | ☑ | ||
|---|---|---|---|---|
| 
    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 
 | 
         
        Естественно :)     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |