Страницы: 1
RSS
Работа с запросами к регистрам оборотов
 

Всем здравствуйте. Существует регистр накопления Обороты номенклатуры (вид обороты), с измерением «номенклатура» и ресурсами «количество» и «сумма».

ВЫБРАТЬ

ОборотыНоменклатурыОбороты.Номенклатура КАК Номенклатура,

ОборотыНоменклатурыОбороты.КоличествоОборот КАК КоличествоОборот,

ОборотыНоменклатурыОбороты.СуммаОборот КАК СуммаОборот

ИЗ

РегистрНакопления.ОборотыНоменклатуры.Обороты

КАК ОборотыНоменклатурыОбороты

Не понимаю, откуда должны подтягиваться данные в столбец Сумма, то есть в какой момент идет заполнение данного столбца? При этом надо создать простой отчёт с заполнением столбца Номенклатура, Сумма и Кол-во.

 

Ну, во-первых, для заполнения параметров макета ТД их имена должны совпадать с именами полей выборки, то есть

ОборотыНоменклатурыОбороты.КоличествоОборот КАК Количество,

ОборотыНоменклатурыОбороты.СуммаОборот КАК Сумма

Во-вторых, заполнение данного столбца идет в момент выполнения компоновки на основе данных полученных запросом. Этот ответ вам бесполезен.

Вас не смущает, что Количество у вас заполняется, а Сумма нет? Очевидно же, что дело не в отчете. У вас нулевые суммы в регистре. Откройте через "Все функции" список регистра и убедитесь сами. Либо в документах двигающих регистр эти суммы не заполнены, либо что-то не так в процедурах проведения.

 

Предлагаю для спокойствия автора сделать такой запрос в отчете:

ВЫБРАТЬ

ОборотыНоменклатурыОбороты.Номенклатура КАК Номенклатура,

ОборотыНоменклатурыОбороты.КоличествоОборот КАК КоличествоОборот,

ОборотыНоменклатурыОбороты.КоличествоОборот * ОборотыНоменклатурыОбороты.КоличествоОборот КАК СуммаОборот

ИЗ

РегистрНакопления.ОборотыНоменклатуры.Обороты КАК ОборотыНоменклатурыОбороты

Просто чтобы убедить, что отчёт у вас корректно работает, суммы выводятся. Разумеется, такой запрос оставлять нельзя, нужно использовать ваш запрос из вашего же вопроса.

Добавьте под вашей строкой с количеством строку Суммой!

Движение.Сумма = ТекСтрокаСписокНоменклатуры.Сумма;

 

Кстати, могу перечислить самые простые записи движений в оборотный регистр (но только при проведении документа), может пригодится вам тоже.

Метод Движение

Регистр.Товары.Движение (ПоступившийТовар, ТекСклад, КолвоПоНакладной, СуммаПоНакладной)

Метод ДвижениеВыполнить

Регистр.Товары.Товар = ПоступившийТовар;

Регистр.Товары.Склад = ТекСклад;

Регистр.Товары.Количество = КолвоПоНакладной;

Регистр.Товары.Стоимость = СуммаПоНакладной;

Регистр.Товары.ДвижениеВыполнить();

Если сумма или количество в движении будет отрицательным, то это движение будет расходом, иначе приходом.

Вообще обороты накапливаются в регистре оборотов, в регистре остатков содержатся только итоговые данные. По оборотному регистру нельзя узнать остатки, для его выражения есть только один формат виртуальной таблицы. Структура таблиц сама по себе схожа. Обороты хранятся с периодичностью месяц. Итоги формируются на каждую дату, когда было движение. Таблица оборотов использует информацию и из таблиц итогов, и из таблиц движений.

Эта таблица нужна для получения оборотов по счету, при этом можно получить оборот как общий по счету, так и в разрезе аналитики: измерений регистра (организация, валюта, подразделение и т.д.) или субконто счета. И, конечно же, можно получить обороты с учетом кор. счета и кор. аналитики по этому счету.

 

Да, а если вы делаете вот такие запросы на рабочей базе, то стоит подумать над тем, чтобы от такого отказаться:

ВЫБРАТЬ

           ХозрасчетныйОбороты.Счет КАК Счет,

           ХозрасчетныйОбороты.СуммаОборот КАК СуммаОборот,

           ХозрасчетныйОбороты.КоличествоОборот КАК КоличествоОборот

ИЗ

           РегистрБухгалтерии.Хозрасчетный.Обороты(, , , , , , , ) КАК ХозрасчетныйОбороты

Почему нет? Потому что платформа получает данные из основной таблицы регистра для получения оборотов по указанным ресурсам. Алгоритм такой:

Получаем обороты из основной таблицы по дебету

Получаем обороты из основной таблицы по кредиту

Объединяем полученные данные в единую таблицу и группируем по счету.

При этом в запросе не установлен отбор по периоду. Чтобы платформа 1С начала использовать таблицы итогов нужно установить фильтр по периоду, как минимум по началу периода, например, вот так:

ВЫБРАТЬ

           ХозрасчетныйОбороты.Счет КАК Счет,

           ХозрасчетныйОбороты.СуммаОборот КАК СуммаОборот,

           ХозрасчетныйОбороты.КоличествоОборот КАК КоличествоОборот

ИЗ

           РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, , , , , , , ) КАК ХозрасчетныйОбороты

То есть, если в базе установлен период рассчитанных итогов для регистра бухгалтерии с 01.01.2022 по 31.07.2023, то для начала использования итогов начало периода должно быть установлено больше или равным 01.01.2022.

Страницы: 1