База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как сделать запрос к РегистрНакопления для получения только расходных движений? › RE: Как сделать запрос к РегистрНакопления для получения только расходных движений?

Иван, чтобы сделать запрос к регистру накопления с использованием представления ОстаткиИОбороты и получить данные только по движениям с регистратором расхода, нужно в запросе добавить условие по виду движения — “Расход”. В 1С 8 (8.2, 8.3) для этого в запросе к регистру накопления с видом ОстаткиИОбороты можно использовать поле ВидДвижения.
Пример запроса на языке запросов 1С для получения остатков и оборотов по регистру ТоварыНаСкладах за период с фильтром по расходным движениям:
1 2 3 4 5 6 7 8 9 10 11 12 |
1C ВЫБРАТЬ ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад, СУММА(ТоварыНаСкладахОстаткиИОбороты.Количество) КАК Количество ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон) КАК ТоварыНаСкладахОстаткиИОбороты ГДЕ ТоварыНаСкладахОстаткиИОбороты.ВидДвижения = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийНакопления.Расход) СГРУППИРОВАТЬ ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура, ТоварыНаСкладахОстаткиИОбороты.Склад |
Объяснение:
– РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон)
— выборка по периоду.
– В условии ГДЕ
фильтруем по ВидДвижения = Расход
.
– Группируем по измерениям (например, Номенклатура и Склад).
– Суммируем количество по расходным движениям.
Если нужно получить только обороты расхода, то такой запрос подойдет. Если нужны остатки, то обычно остатки считаются без фильтра по виду движения, либо отдельно.
Если вы используете встроенный механизм запроса в 1С 7.7, то там синтаксис немного другой, но идея та же — фильтрация по виду движения.
—
Если нужно пример кода на 1С 7.7:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
1C ТекстЗапр = " |Период С &ДатаНач По &ДатаКон; |Номенклатура = Регистр.ТоварыНаСкладах.Номенклатура; |Склад = Регистр.ТоварыНаСкладах.Склад; |Количество = Регистр.ТоварыНаСкладах.Количество; |ВидДвижения = Регистр.ТоварыНаСкладах.ВидДвижения; |Условие (ВидДвижения = &ВидРасход); |Группировка Номенклатура, Склад; |Функция СуммаКоличество = Сумма(Количество); "; Запрос = Новый Запрос; Запрос.Текст = ТекстЗапр; Запрос.УстановитьПараметр("ДатаНач", ДатаНач); Запрос.УстановитьПараметр("ДатаКон", ДатаКон); Запрос.УстановитьПараметр("ВидРасход", Перечисления.ВидыДвиженийНакопления.Расход); Результат = Запрос.Выполнить(); |
—
Итог: для выборки по регистру накопления с использованием ОстаткиИОбороты и фильтрацией по расходным движениям — в запросе указывайте условие по полю ВидДвижения = Расход.
Рекомендую посмотреть здесь:
https://helpf.pro/faq/view/288.html
https://helpf.pro/faq/view/252.html