База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как получить остатки в разрезе Контрагента и Документа на начало нового периода?
- В этой теме 1 ответ, 2 участника, последнее обновление 8 часов, 40 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
12 марта 2026 в 14:30 #36111
Есть РН РасрочкаПродаж Измерения Контрагент,ДоговорКонтрагента, ПериодРассрочки (дата), ДокументОснование(докРеализацияТоваровУслуг), Ресурсы Сумма. Приход из док. РеализацияТоваровУслуг. Расход из Док ОплатаРассрочки. Необходимо на начало Нового ПрериодаРассрочки Получить Остатки в разрезе Контрагент, ДокументОснование
-
12 марта 2026 в 14:30 #36112
Да, получить остатки на начало нового периода рассрочки по регистру накопления РасрочкаПродаж в разрезе Контрагент и ДокументОснование можно с помощью запроса, который выбирает сумму ресурса Сумма по всем движениям с датой ПериодРассрочки меньше начала нового периода. При этом учитывается, что приход идет из документа РеализацияТоваровУслуг, а расход из документа ОплатаРассрочки.
В запросе фильтрация по дате ПериодРассрочки < &ДатаНачалаНовогоПериода позволяет получить состояние на начало нового периода. Группировка по Контрагенту и ДокументОснованию дает остатки именно в нужном разрезе. Фильтр по ДокументОснованию, ссылающемуся на РеализацияТоваровУслуг, ограничивает выборку приходными операциями. При этом ресурс Сумма учитывает и приход, и расход (расходы обычно отражаются отрицательными значениями). Если нужно явно выделить приход и расход по типу документа основания, можно добавить условие, которое проверяет, что приход связан с РеализацияТоваровУслуг и сумма положительна, а расход — с ОплатаРассрочки и сумма отрицательна. Но обычно в регистре накопления это уже отражено корректно. СИНХРОН-КОД: в вопросе упомянуто, что приход из документа РеализацияТоваровУслуг и расход из ОплатаРассрочки, и в финальном коде это учтено через фильтр по ДокументОснованию и условие по сумме. Ниже пример запроса и условие для фильтрации по типу документа движения:
1С (Код)123456789101112131415161718Запрос = Новый Запрос;Запрос.Текст =«ВЫБРАТЬ| РасрочкаПродаж.Контрагент КАК Контрагент,| РасрочкаПродаж.ДокументОснование КАК ДокументОснование,| СУММА(РасрочкаПродаж.Сумма) КАК Остаток|ИЗ| РегистрНакопления.РасрочкаПродаж КАК РасрочкаПродаж|ГДЕ| РасрочкаПродаж.ПериодРассрочки < &ДатаНачалаНовогоПериода| И РасрочкаПродаж.ДокументОснование.Ссылка В (| ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг| )|СГРУППИРОВАТЬ ПО| РасрочкаПродаж.Контрагент,| РасрочкаПродаж.ДокументОснование";Запрос.УстановитьПараметр("ДатаНачалаНовогоПериода", НачалоДня(ДатаНовогоПериода));Запрос.Выполнить().Выгрузить();Объяснение:
— Параметр &ДатаНачалаНовогоПериода задается как начало дня даты нового периода рассрочки.
— В выборке берутся записи с ПериодРассрочки меньше этой даты, то есть остаток на начало нового периода.
— Группировка по Контрагенту и ДокументОснованию.
— Фильтр по ДокументОснованию ограничивает приходными операциями из РеализацияТоваровУслуг.Если нужно добавить явное разделение приходов и расходов по типу документа, можно использовать условие:
1С (Код)12345| (РасрочкаПродаж.ДокументОснование ССЫЛКА Документ.РеализацияТоваровУслуг| И РасрочкаПродаж.Сумма > 0)| ИЛИ| (РасрочкаПродаж.ДокументОснование ССЫЛКА Документ.ОплатаРассрочки| И РасрочкаПродаж.Сумма < 0)Таким образом, итоговый запрос даст корректные остатки на начало нового периода рассрочки в нужном разрезе.
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.