|
Получить остатки по регистру накопления на дату | ☑ | ||
---|---|---|---|---|
0
Альбатрос
22.11.11
✎
10:29
|
Здрасьте!!! Вот простенький запрос:
| ВЫБРАТЬ | ПартииТоваровНаСкладахОстатки.Номенклатура, | ПартииТоваровНаСкладахОстатки.Склад КАК Склад, | ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК Колво |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах.Остатки КАК ПартииТоваровНаСкладахОстатки |ГДЕ | ПартииТоваровНаСкладахОстатки.Номенклатура = &ном"; Дает остатки на последнюю запись регистра. Не могу разобраться, что и куда добавить, чтобы получать остатки на конкретную дату. Заранее спасибо! |
|||
1
golden-pack
22.11.11
✎
10:31
|
| ВЫБРАТЬ
| ПартииТоваровНаСкладахОстатки.Номенклатура, | ПартииТоваровНаСкладахОстатки.Склад КАК Склад, | ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК Колво |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дата) КАК ПартииТоваровНаСкладахОстатки |ГДЕ | ПартииТоваровНаСкладахОстатки.Номенклатура = &ном"; Запрос.установитьпараметр("Дата",ТекущаяДата()); |
|||
2
golden-pack
22.11.11
✎
10:32
|
| ВЫБРАТЬ
| ПартииТоваровНаСкладахОстатки.Номенклатура, | ПартииТоваровНаСкладахОстатки.Склад КАК Склад, | ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК Колво |ИЗ | РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&Дата, Номенклатура = &ном) КАК ПартииТоваровНаСкладахОстатки"; Запрос.установитьпараметр("Дата",ТекущаяДата()); |
|||
3
Sulimov
22.11.11
✎
10:33
|
И номенклатуру лучше тоже туда же в параметры вирт. таблицы...
|
|||
4
Sulimov
22.11.11
✎
10:33
|
Блин, не успел..))
|
|||
5
Альбатрос
22.11.11
✎
10:42
|
(2) Огромное спасибо!
(2)(3) Еще вопросик: Вы говорите, лучше в виртуальную таблицу. А разница какая по сравнению с тем, как у меня в (0)? То есть в вашем варианте отбор идет непосредственно в записях, а в моем сначала получаю все записи, и только потом отбор? Я правильно понял? |
|||
6
hhhh
22.11.11
✎
10:50
|
(5) да, допустим у тебя 150000 записей справочник. У тебя в (0) в оперативную память грузится 150000 строк остатков по всей номенклатуре, потом ты применяешь ГДЕ, система удаляет 149999 строк и оставляет одну. А так как в (2) система грузит только одну строку сразу, потому что уже в параметрах виртуальной таблицы написано Номенклатура = &ном.
|
|||
7
FIXXXL
22.11.11
✎
10:52
|
(6)чет не верится
|
|||
8
hhhh
22.11.11
✎
10:58
|
(7) если база файловая, то 100%, на SQL-ной не проверял.
|
|||
9
Ненавижу 1С
гуру
22.11.11
✎
11:00
|
в SQL все это на сервере, единственное что, промежуточная таблица делается уже с отбором или нет
я за отбор в параметрах виртуальной таблицы |
|||
10
Нуф-Нуф
22.11.11
✎
11:01
|
тут был чей то обзор на тему что параметры вирутальных это зло, но я не согласен. я за официальную позицию 1с за использование этих параметров
|
|||
11
unregistered
22.11.11
✎
11:13
|
(5) >> А разница какая
Виртуальная таблица в большинстве случаев - результат соединения или объединения нескольких реальных физических таблиц. В нашем примере - физическая таблица итогов регистра (итоги хранятся с периодичностью месяц, а нам надо на день) будет дополнена данными из физической таблицы движений регистра (основной таблицы записей регистра). Условия отбора по измерениям, указанные в разделе "ГДЕ" приведут к тому, что отбор будет накладываться уже на записи в "собранной" виртуальной таблице. А условия отбора, указанные в параметрах виртуальной таблицы будут накладываться еще на этапе выборки записей из физических таблиц. Как-то так... Хотя, если берутся остатки на оперативную отметку или на границу месяца (итоги хранятся по месяцам), то разницы особой не будет, т.к. такой запрос будет только к одной таблице - таблице итогов регистра. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |