powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Почему запрос возвращает неправильный результат?
2 сообщений из 2, страница 1 из 1
Почему запрос возвращает неправильный результат?
    #38999850
LittleLoya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Подскажите, пожалуйста, где косяк?
Есть документ КорректировкаСчетаДенежныхСредств, реквизиты:

* Счет
* СуммаОстаток
* СуммаФактическая

Документ делает такие движения:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
Процедура ОбработкаПроведения(Отказ, Режим)
	//{{__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
	// Данный фрагмент построен конструктором.
	// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

	Если Остаток > ФактическийОстаток Тогда
		// регистр РасходДенежныхСредств 
		Движения.РасходДенежныхСредств.Записывать = Истина;
		Движение = Движения.РасходДенежныхСредств.Добавить();
		Движение.Период = Дата;
		Движение.СчетДенежныхСредств = СчетДенежныхСредств;
		Движение.Сумма = Остаток - ФактическийОстаток;			
		// регистр ОстатокПоСчетамДенежныхСредств Расход	
		Движения.ОстатокПоСчетамДенежныхСредств.Записывать = Истина;
		Движение = Движения.ОстатокПоСчетамДенежныхСредств.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
		Движение.Период = Дата;
		Движение.СчетДенежныхСредств = СчетДенежныхСредств;
		Движение.Сумма = ФактическийОстаток;
	ИначеЕсли Остаток < ФактическийОстаток Тогда
		// регистр ДоходДенежныхСредств
		Движения.ДоходДенежныхСредств.Записывать = Истина;
		Движение = Движения.ДоходДенежныхСредств.Добавить();
		Движение.Период = Дата;
		Движение.СчетДенежныхСредств = СчетДенежныхСредств;
		Движение.Сумма = ФактическийОстаток - Остаток;	
		// регистр ОстатокПоСчетамДенежныхСредств Приход
		Движения.ОстатокПоСчетамДенежныхСредств.Записывать = Истина;
		Движение = Движения.ОстатокПоСчетамДенежныхСредств.Добавить();
		Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
		Движение.Период = Дата;
		Движение.СчетДенежныхСредств = СчетДенежныхСредств;
		Движение.Сумма = ФактическийОстаток;		
	Иначе	
		Отказ = Истина;
		Сообщить("Суммы остатка и фактического остатка совпадают!" + Символы.ПС + "Корректировка не требуется.");
	КонецЕсли;
		
	//}}__КОНСТРУКТОР_ДВИЖЕНИЙ_РЕГИСТРОВ
КонецПроцедуры


В форме документа есть проверка на остаток по счету:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
&НаКлиенте
Процедура СчетДенежныхСредствПриИзменении(Элемент)
	
    Счет = Объект.СчетДенежныхСредств;	
	Объект.Остаток = ВернутьОстатокПоСчету(Счет);
	
КонецПроцедуры

&НаСервере
Функция ВернутьОстатокПоСчету(Счет)
	
	Запрос = Новый Запрос;
	Запрос.Текст =  "ВЫБРАТЬ
	                |	ЕСТЬNULL(ОстатокПоСчетамДенежныхСредствОстатки.СуммаОстаток, 0) КАК СуммаОстаток
	                |ИЗ
	                |	РегистрНакопления.ОстатокПоСчетамДенежныхСредств.Остатки(&НаДату, СчетДенежныхСредств = &Счет) КАК ОстатокПоСчетамДенежныхСредствОстатки";
	Запрос.УстановитьПараметр("НаДату", ТекущаяДата());
	Запрос.УстановитьПараметр("Счет", Счет);

	Результат = Запрос.Выполнить();
	
	Остаток = Результат.Выгрузить()[0].СуммаОстаток;
	Возврат Остаток;
	
КонецФункции


Создаю документ, заношу в остаток фактический 1000, всё нормально, создаю второй, вношу в остаток фактический 200, смотрю по регистрам, в расходе 800, в остатках 200, вроде всё верно, но когда создаю третий документ, то в форме в остатке почему-то 800. Что не так делаю?

Заранее благодарна за ответы.

Конфа самописная, могу выложить, если надо.
...
Рейтинг: 0 / 0
Почему запрос возвращает неправильный результат?
    #38999964
rigus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в обоих случаях (приход/расход) Вы добавляете ФактическийОстаток
Движение.Сумма = ФактическийОстаток;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Почему запрос возвращает неправильный результат?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]