Рассмотрим параметр виртуальной таблицы Метод дополнения. Он имеет смысл только в том случае если параметр Периодичность отлична от Период. Значение ДвиженияИГраницыПериода позволяет получить запись на период начала и запись на период конца получаемых данных, если на эти периоды не было оборотов(если обороты были, то эти записи выведутся в любом случае). Рассмотрим поподробнее.
Дано:
Документы прихода и расхода
Что будет если выбрать субконто по счету Товары без установки параметров
Запрос1
ВЫБРАТЬ
Счет,
Субконто1,
СуммаНачальныйОстаток,
СуммаОборотДт,
СуммаОборотКт,
СуммаКонечныйОстаток
ИЗ
РегистрБухгалтерии.Управленческий.ОстаткиИОбороты(, , , , Счет = &Товары, , ) КАК УправленческийОстаткиИОбороты
Результат запроса 1
Метод дополнения Движения
Сделаем такой же запрос, но укажем метод дополнения Движения, т.к. по умолчанию был ДвиженияИГраницыПериода
Запрос 2
РегистрБухгалтерии.Управленческий.ОстаткиИОбороты(, , ,Движения , Счет = &Товары, , ) КАК УправленческийОстаткиИОбороты
Результат запроса 2
Как видим разницы никакой, т.к. ключевым параметром является периодичность
Это будет хорошо видно при Периодичности - День
Периодичность - День, МетодДополнения - Движения
Добавим в запрос Периодичность "День", МетодДополнения - "Движения" и выведем в выбираемые поля Период
Запрос 3
ВЫБРАТЬ
Период,
Счет,
Субконто1,
СуммаНачальныйОстаток,
СуммаОборотДт,
СуммаОборотКт,
СуммаКонечныйОстаток
ИЗ
РегистрБухгалтерии.Управленческий.ОстаткиИОбороты(, , День, Движения, Счет = &Товары, , ) КАК УправленческийОстаткиИОбороты
Результат запроса 3
Метод дополнения - ДвиженияИГраницыПериода
Мы видим, что у нас вывелись разные сочетания Дата и Субконто1 т.е. Движения
Изменим метод дополнения и добавим порядок по полям Субконто1 и Период
Запрос 4
ВЫБРАТЬ
Период КАК Период,
УправленческийОстаткиИОбороты.Счет,
Субконто1 КАК Субконто1,
СуммаНачальныйОстаток,
СуммаОборотДт,
СуммаОборотКт,
СуммаКонечныйОстаток
ИЗ
РегистрБухгалтерии.Управленческий.ОстаткиИОбороты(, , День, ДвиженияИГраницыПериода, Счет = &Товары, , ) КАК УправленческийОстаткиИОбороты
УПОРЯДОЧИТЬ ПО
Субконто1,
Период
Результат запроса 4
У нас добавились даты актуальных итогов 01-11-3999, т.е. последняя граница. Мы ведь указали, что нам нужны движения и границы периода, хотя сами периоды мы не указывали. Почему-то не добавилась первая граница на дату 01-01-001.
Добавим даты периода
Давайте добавим параметры даты периода, в которых укажем текущий год
Запрос 5
РегистрБухгалтерии.Управленческий.ОстаткиИОбороты(&Дата1, &Дата2, День, ДвиженияИГраницыПериода, Счет = &Товары, , ) КАК УправленческийОстаткиИОбороты
Результат запроса 5
Последняя граница изменилась с 01-11-3999 на 31-12-2017, но всё равно почему-то не выводится первая граница отдельно. Предположительно это происходит из-за того, что нет остатков на начало года.
Исправим "Дано"
Давайте проверим это, вводим приходную на 01.01.2016 12:00:00 с количеством
№ | Номенклатура | Сумма |
1 | Big (капилярная) | 100,00 |
2 | Bosch KGS 3760 IE | 40,00 |
И при повторном формировании запроса 5 получаем результат
Добавились суммы на начало года для каждого субконто 1, т.е. предположение о том, что программа не выводит запись на начальную границу если нет данных подтвердилась.
Итак, метод дополнения ДвиженияИГраницыПериода работает только если периодичность отлична от Период, добавляет две строки и стоит по умолчанию. Если нужны обороты то нужно указывать "Движения" разницы в производительности не заметил, но не будет лишних строк на начало/конец периода. Стоит отметить, что сотрудники фирмы 1С рекомендуют её использовать только когда нужны сразу все 4 ресурса(Начальный остаток, Приход, Расход, Конечный остаток) в остальных случаях лучше использовать сочетания других виртуальных таблиц. Такая же виртуальная таблица есть и у регистра Накопления.