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