Имя: Пароль:
1C
1С v8
Виртуальная таблица ОстаткиИОбороты показывает лишние данные
,
0 slafor
 
18.12.21
16:42
Есть регистр накопление ПартииТоваровНаСкладах, хочу получить данные по определенному периоду, скажем, 01.02.2020 - 31.12.2020, а запрос мне почему-то возвращает данные и за 2019-й, и некоторые за 2021-й. Не все, а некоторые. Почему такое возможно?

ВЫБРАТЬ
    ПартииНаСкладахОстаткиИОборотыПриход.Номенклатура КАК Номенклатура,
    ПартииНаСкладахОстаткиИОборотыПриход.Партия КАК Партия,
    ПартииНаСкладахОстаткиИОборотыПриход.Партия.Дата КАК ДатаПрихода
ИЗ
    РегистрНакопления.ПартииНаСкладах.ОстаткиИОбороты(&НачалоПериодаПриход, &КонецПериодаПриход, , , ) КАК ПартииНаСкладахОстаткиИОборотыПриход
1 slafor
 
18.12.21
16:43
Захожу в документ партии - там стоит дата прошлого периода, смотрю движения - период тоже задан не тот.
2 acht
 
18.12.21
16:43
(0) Партия.Дата и период движения - это разные вещи
3 slafor
 
18.12.21
16:56
Партия.Дата можете убрать из списка выбираемых полей, это неважно.
Вот у меня заданы начало периода и конец периода в параметрах виртуальной таблицы - начало и конец 2020-го года. Но в резальтат почему-то попали НЕКОТОРЫЕ (не ВСЕ) записи из 2019-го и 2021-го годов. Открываю документ Партии - он 2019-го года, допустим, смотрю в записи регистра - там тоже стоит период 2019-го года. Вот в чем фишка.
Почему?
4 slafor
 
18.12.21
17:08
Такую же таблицу получил за 2021-й год, такая же ситуация, но теперь попадают НЕКОТОРЫЕ записи за 2020-й, за 2019-й уже не пападают. Дас ист
5 slafor
 
18.12.21
17:08
Дас ист фанстастиш!
6 acht
 
18.12.21
17:08
Ну, например:
"Если начало периода не совпадает с первой границей периодичности, то в результат запроса могут попасть записи с датой, совпадающей с началом периода, указанного в параметрах виртуальной таблицы."

Укажи там тип Граница и пересчитай итоги на всякий случай.
7 slafor
 
18.12.21
18:13
(6) Пересчет итогов ничего не дал.

А можно подробнее про Границу? Неужели ошибки могут быть такими, что из-за Границы (включая или не включая) могу браться документы на полмесяца раньше указанного периода?
8 timurhv
 
18.12.21
18:15
(3) ОстаткиИОбороты, первое слово является ключевым
9 slafor
 
18.12.21
18:31
(8) Из этого регистра мне нужны только начальный остаток на начало периода и приход за весь период. Не очень понял твою мысль.
10 slafor
 
18.12.21
18:35
(8) Ааа, все, теперь понял. Посмотрел на результат - действительно, если в результат попадают партии прошлого периода, то значит, что по ним есть остаток, и неважно, есть ли обороты. Так?
11 slafor
 
18.12.21
18:37
Тогда, наверное, имеет смысл сначала сделать запрос к регистру оборотов, а потом левым соединением привязать к нему таблицу остатков на начало периода. Правильно?
12 slafor
 
18.12.21
18:38
Просто это часть общего запроса, там уже столько левых соединений, боюсь, как бы отчет не рухнул )

А так, спасибо, теперь знаю, где копать.
13 ДедМорроз
 
18.12.21
18:41
(11) да.
Если нужны только те,по которым есть обороты за период,то или собирать самим или поверх виртуальной таблицв наложить условие на поля оборотов.
14 slafor
 
18.12.21
19:30
(13) А вот интересно, если мне нужны только приходы, а окажется, что в этом периоде были и приходы, и расходы, то такая позиция тоже ведь попадет в результат? Тогда получается, что без последующих отборов ГДЕ никак иначе это решить невозможно.
15 ДедМорроз
 
18.12.21
20:08
Имеющие
Вполне позволяет.
16 slafor
 
18.12.21
21:03
(8) Я бы сказал, что ключевым в ОстаткиИОбороты является именно второе слово. Давно уже, столкнулся с тем, что остатки по регистру не показываются, если в данном периоде не было оборотов. Не знаю, может, я плохо читал, но по-моему, в ЖК этого нигде не написано, я только через форум нашел.
17 acht
 
18.12.21
21:08
(16) > остатки по регистру не показываются, если в данном периоде не было оборотов.
Там вроде параметр метода дополнения периодо весть, который за это отвечает.
18 timurhv
 
19.12.21
08:26
(17) если сторнировать, то в оборотах не выведется запись если приход и сторно в этом периоде
19 timurhv
 
19.12.21
08:29
Это если остатков не было