База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как написать формулу расчета суммы проводки в 1С с учетом остатков?
- В этой теме 1 ответ, 2 участника, последнее обновление 1 час, 33 минуты назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
24 февраля 2026 в 14:45 #35930
нужно в коде написать формулу расчета суммы проводки:
суммовой остаток по счету 130001.1006 на момент времени документа делим на количественный остаток по счету 130001.1006 на момент времени документа и умножаем на количество в этой же проводке. -
24 февраля 2026 в 14:45 #35931
Для расчёта суммы проводки по формуле:
Сумма = (Суммовой остаток по счету 130001.1006 на момент времени документа) / (Количественный остаток по счету 130001.1006 на момент времени документа) * Количество в проводке
нужно получить остатки по счету на дату документа и умножить на количество из текущей записи.
Пример кода на 1С (8.3), который можно использовать в обработке документа или общем модуле:
1С (Код)123456789101112131415161718192021222324252627282930313233343536Функция РассчитатьСуммуПроводки(ДатаДокумента, КоличествоПроводки) Экспорт// Получаем суммовой остаток по счету 130001.1006 на дату документаЗапросСумма = Новый Запрос;ЗапросСумма.Текст ="ВЫБРАТЬ| Остатки.Счет КАК Счет,| СУММА(Остатки.Сумма) КАК СуммовойОстаток,| СУММА(Остатки.Количество) КАК КоличественныйОстаток|ИЗ| РегистрНакопления.ОстаткиПоСчету КАК Остатки|ГДЕ| Остатки.Счет = &Счет| И Остатки.Период <= &Дата|СГРУППИРОВАТЬ ПО| Остатки.Счет";ЗапросСумма.УстановитьПараметр("Счет", "130001.1006");ЗапросСумма.УстановитьПараметр("Дата", ДатаДокумента);Результат = ЗапросСумма.Выполнить();Выборка = Результат.Выбрать();Если Выборка.Следующий() ТогдаЕсли Выборка.КоличественныйОстаток = 0 Тогда// Чтобы избежать деления на нольВозврат 0;КонецЕсли;// Формула расчёта суммыСуммаПроводки = (Выборка.СуммовойОстаток / Выборка.КоличественныйОстаток) * КоличествоПроводки;Возврат СуммаПроводки;Иначе// Если остатков нет, возвращаем 0Возврат 0;КонецЕсли;КонецФункцииОбъяснение:
- В запросе берём суммовой и количественный остаток по счету 130001.1006 на дату документа (или на момент времени документа).
- Делим суммовой остаток на количественный, получаем среднюю цену.
- Умножаем на количество в текущей проводке.
- Обрабатываем случай деления на ноль.Если у вас остатки хранятся в другом регистре или структуре, замените имя регистра и поля соответственно.
Если нужно использовать в обработчике документа, то вызов будет примерно так:
1С (Код)1234Количество = ТекущаяСтрокаТабличнойЧасти.Количество;ДатаДокумента = ДокументОбъект.Дата;Сумма = РассчитатьСуммуПроводки(ДатаДокумента, Количество);ТекущаяСтрокаТабличнойЧасти.Сумма = Сумма;Если нужна помощь с конкретным регистром или деталями, уточните структуру данных.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.