|
Поле "СуммаОстаток" не возвращает значение. Запрос отрабатывает верно. | ☑ | ||
---|---|---|---|---|
0
nickname1c
12.11.14
✎
17:04
|
Процедура ОбработкаПроведения(Отказ, Режим)
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВзаиморасчетыОстатки.Проект, | ВзаиморасчетыОстатки.СуммаОстаток КАК СуммаОстаток |ИЗ | РегистрНакопления.Взаиморасчеты.Остатки(&МоментВремени, Контрагент = &Контрагент) КАК ВзаиморасчетыОстатки | |УПОРЯДОЧИТЬ ПО | ВзаиморасчетыОстатки.Проект.ДатаОплаты"; Запрос.УстановитьПараметр("Контрагент", Контрагент); Запрос.УстановитьПараметр("МоментВремени", МоментВремени()); Запрос.УстановитьПараметр("Проект", Проект); Результат = Запрос.Выполнить(); Выборка= Результат.Выбрать(); Движения.Взаиморасчеты.Записывать = Истина; Движения.Взаиморасчеты.Очистить(); СуммаОплаты=Сумма; Сумма1=Выборка.СуммаОстаток; Пока Выборка.Следующий() И СуммаОплаты>0 Цикл Движение = Движения.Взаиморасчеты.ДобавитьПриход(); Движение.Период = Дата; Движение.Контрагент = Контрагент; Движение.Проект = Выборка.Проект; Движение.Сумма = Мин(СуммаОплаты,Выборка.СуммаОстаток); СуммаОплаты = СуммаОплаты - Движение.Сумма; КонецЦикла; Если СуммаОплаты Тогда // регистр Взаиморасчеты Приход Движения.Взаиморасчеты.Записать(); Движение = Движения.Взаиморасчеты.ДобавитьПриход(); Движение.ВидДвижения = ВидДвиженияНакопления.Приход; Движение.Период = Дата; Движение.Контрагент = Контрагент; Движение.Сумма = СуммаОплаты; Движения.Взаиморасчеты.Записать(); КонецЕсли; // СуммаДвижения=МИН(Выборка.СуммаОстаток, СуммаВсего); // // Движение = Движения.Взаиморасчеты.Добавить(); // Движение.ВидДвижения = ВидДвиженияНакопления.Расход; // Движение.Период = Дата; // Движение.Проект = Выборка.Проект; // Движение.Контрагент = Контрагент; // Движение.Сумма = СуммаДвижения; // // СуммаВсего=СуммаВсего-СуммаДвижения; // Движения.Взаиморасчеты.Записать(); // Если ЗначениеЗаполнено(Выборка.Проект) Тогда // Прервать; // КонецЕсли; //КонецЦикла; // //Если СуммаВсего>0 Тогда //если сумма дока еще не равна нулю, то создается Аванс на контрагента // // Движение = Движения.Взаиморасчеты.Добавить(); // Движение.ВидДвижения = ВидДвиженияНакопления.Приход; // Движение.Период = Дата; // Движение.Аванс = "Аванс"; // Движение.Контрагент = Контрагент; // Движение.Сумма = СуммаВсего; //КонецЕсли; // Движения.Взаиморасчеты.Записать(); КонецПроцедуры Поле "СуммаОстаток" не возвращает значение. Запрос отрабатывает верно, проверял в консоле. При отладке в программе поле СуммаОстаток не чему не равно...неопределенно. Накиньте вариантов |
|||
1
Wobland
12.11.14
✎
17:06
|
Пока не Выборка.Следующий(), хрен тебе что будет
|
|||
2
nickname1c
12.11.14
✎
17:06
|
(1) поподробнее...не понял
|
|||
3
Эмбеддер
12.11.14
✎
17:09
|
Выборка= Результат.Выбрать();
... Сумма1=Выборка.СуммаОстаток; вот это неправильно, т.к. итога нет надо написать в запросе для этого хотя бы ИТОГИ СУММА(...) ОБЩИЕ |
|||
4
Wobland
12.11.14
✎
17:09
|
(2) Пока не сработает Выборка.Следующий(), хрен тебе что будет
|
|||
5
Эмбеддер
12.11.14
✎
17:09
|
ну или выборка.следующий сделать
|
|||
6
nickname1c
12.11.14
✎
17:11
|
(4) что предлагаешь ? как исправить?
|
|||
7
nickname1c
12.11.14
✎
17:11
|
(3) то я убрал....то лишнее
|
|||
8
Эмбеддер
12.11.14
✎
17:15
|
чтобы сразу все увидеть, выгрузи в таблицу
ТЗ=Результат.Выгрузить(); а потом вместо Выборка.Следующий() пройди по строкам таблицы |
|||
9
lefthander
12.11.14
✎
17:24
|
Я бы вот так в запросе написал, там где нет суммы, получил бы 0
|СУММА(ЕСТЬNULL(ВзаиморасчетыОстатки.СуммаОстаток, 0)) КАК СуммаОстаток, |
|||
10
nickname1c
12.11.14
✎
17:25
|
(8) спасибо помогло
|
|||
11
nickname1c
12.11.14
✎
17:25
|
Исправил....только теперь другие ошибки...пошел поиграю с ними
|
|||
12
Эмбеддер
12.11.14
✎
17:30
|
(9) в данном случае значений NULL не будет
|
|||
13
lefthander
12.11.14
✎
17:32
|
СуммаОплаты=Сумма;
Сумма1=Выборка.СуммаОстаток; Пока Выборка.Следующий() И СуммаОплаты>0 Цикл Что такое Сумма в данном коде и откуда она берется? И должно быть так Пока Выборка.Следующий() И СуммаОплаты>0 Цикл Сумма1=Выборка.СуммаОстаток; и так далее |
|||
14
lefthander
12.11.14
✎
17:34
|
(12) если не будет это хорошо, а если вдруг, то приведется к нулю и можно будет проверить на ноль.
|
|||
15
lefthander
12.11.14
✎
17:38
|
Если СуммаОплаты Тогда
СуммаОплаты это число, а используется как булево Может так - Если СуммаОплаты > 0 Тогда |
|||
16
Эмбеддер
12.11.14
✎
17:47
|
(14) просто код становится более громоздким
|
|||
17
Enders
12.11.14
✎
17:54
|
(14) А откуда там NULL появится? Соединений нет, получения данных через точку тоже нет
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |