Добрый день.
Возникла проблема с регистрами накопления.
У меня есть документ - ПриходДенежныхСредств (реквизиты:КошелекПоступления, Сумма, Отправитель). И есть Регистр накопления - РегистрОстатков (измерения: кошелек, ресурс: сумма). При проведении документа, мне нужно, чтобы в регистре накопления в колонке "сумма" отражался остаток по данному кошельку.
Например:
проведен документ1 на Кошелек1 сумма - 1000
в регистре запись - Кошелек1 1000
документ2 на Кошелек1 сумма - 500
в регистре запись - Кошелек1 1500
документ 3 на Кошелек1 сумма 300
в регистре запись - Кошелек1 1800 (а у меня выходит Кошелек1 2800, суммируются все значения колонки "сумма" по данному кошельку и добавляется сумма с документа и при каждом последующем проведении добавляется еще), не могу это исправить.
Вот код
Возникла проблема с регистрами накопления.
У меня есть документ - ПриходДенежныхСредств (реквизиты:КошелекПоступления, Сумма, Отправитель). И есть Регистр накопления - РегистрОстатков (измерения: кошелек, ресурс: сумма). При проведении документа, мне нужно, чтобы в регистре накопления в колонке "сумма" отражался остаток по данному кошельку.
Например:
проведен документ1 на Кошелек1 сумма - 1000
в регистре запись - Кошелек1 1000
документ2 на Кошелек1 сумма - 500
в регистре запись - Кошелек1 1500
документ 3 на Кошелек1 сумма 300
в регистре запись - Кошелек1 1800 (а у меня выходит Кошелек1 2800, суммируются все значения колонки "сумма" по данному кошельку и добавляется сумма с документа и при каждом последующем проведении добавляется еще), не могу это исправить.
Вот код
Процедура ОбработкаПроведения(Отказ, Режим)
// регистр РегистрОстатков
Движения.РегистрОстатков.Записывать = Истина;
Движение = Движения.РегистрОстатков.Добавить();
Движение.Период = Дата;
Движение.Кошелек = КошелекПоступления;
Фильтр = Новый Структура;
Фильтр.Вставить("Кошелек",Движение.Кошелек);
Движение.Сумма = Сумма + РегистрыНакопления.РегистрОстатков.Остатки(Дата,фильтр,"Кошелек","Сумма").Итог("Сумма");
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Корректировка остатков регистров накопления (обычные и управляемые формы)
- Виртуальная таблица «Остатки» регистра накопления и избыточные блокировки
- Закрытие остатков по регистрам накопления
- Корректировка остатков номенклатуры, сравнение остатков по регистрам накопления и бухгалтерии (проводкам), отчет и обработка
- Закрытие остатков по регистру накопления
Найденные решения
по хорошему надо оставлять так
потому что РегистрНакопления сам суммирует измерения.
http://programmist1s.ru/registryi-nakopleniya-v-1s/
Процедура ОбработкаПроведения(Отказ, Режим)
// регистр РегистрОстатков
Движения.РегистрОстатков.Записывать = Истина;
Движение = Движения.РегистрОстатков.Добавить();
Движение.Период = Дата;
Движение.Кошелек = КошелекПоступления;
Фильтр = Новый Структура;
Фильтр.Вставить("Кошелек",Движение.Кошелек);
Движение.Сумма = Сумма
КонецПроцедуры
Показатьпотому что РегистрНакопления сам суммирует измерения.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
по хорошему надо оставлять так
потому что РегистрНакопления сам суммирует измерения.
http://programmist1s.ru/registryi-nakopleniya-v-1s/
Процедура ОбработкаПроведения(Отказ, Режим)
// регистр РегистрОстатков
Движения.РегистрОстатков.Записывать = Истина;
Движение = Движения.РегистрОстатков.Добавить();
Движение.Период = Дата;
Движение.Кошелек = КошелекПоступления;
Фильтр = Новый Структура;
Фильтр.Вставить("Кошелек",Движение.Кошелек);
Движение.Сумма = Сумма
КонецПроцедуры
Показатьпотому что РегистрНакопления сам суммирует измерения.
Изначально так и было, просто хотел сделать чтобы можно было видеть остаток по конкретному кошельку в регистре, а не только в отчете.
Ну мне это не принципиально, оставлю тогда так, спасибо за ответ.
Ну мне это не принципиально, оставлю тогда так, спасибо за ответ.
(5) Не надо так делать. Во-первых, некорректное использование регистра остатков. Сразу незачет на сертификации 1С. Во-вторых, действия необратимы при отмене проведения. Хочется видеть остаток в регистре - нарисуйте ему свою форму. А механизмы 1С нужно по назначению использовать
ну если так хотите то примерно так
Процедура ОбработкаПроведения(Отказ, Режим)
// регистр РегистрОстатков
Движения.РегистрОстатков.Записывать = Истина;
Движение = Движения.РегистрОстатков.Добавить();
Движение.Период = Дата;
Движение.Кошелек = КошелекПоступления;
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ ПЕРВЫЕ 1
| РегистрОстатков.Сумма КАК Сумма
|ИЗ
| РегистрНакопления.РегистрОстатков КАК РегистрОстатков
|ГДЕ
| РегистрОстатков.ВидДвижения = &ВидДвижения
| И РегистрОстатков.Период <= &Период
| И РегистрОстатков.Кошелек = &Кошелек
|
|УПОРЯДОЧИТЬ ПО
| РегистрОстатков.Период УБЫВ"
Запрос.УстановитьПараметр("ВидДвижения",ВидДвиженияНакопления.Приход);
Запрос.УстановитьПараметр("Период",Дата);//тут надо использовать Границу()
Запрос.УстановитьПараметр("Кошелек",КошелекПоступления);
Выборка=Запрос.Выполнить().Выбрать();
если выборка.Следующий() тогда
ПоследняяСумма=Выборка.Сумма;
иначе
ПоследняяСумма=0;
конецесли;
Движение.Сумма=ПоследняяСумма+Сумма;
КонецПроцедуры
Показать
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот