Имя: Пароль:
1C
1С v8
Получение остатка на начало из регистра накопления
0 kasena
 
18.04.12
23:18
Доброго времени суток.
Столкнулась с проблемой при выборке из регистра накопления остатки и обороты: в случае отсутствия оборотов в заданном периоде остаток на начало не выбирается. Если же обороты в заданном периоде есть, то все прекрасно выбирается.
Собственно сам запрос:

ВЫБРАТЬ
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Регистратор КАК Регистратор,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.СтоимостьПриход КАК Приход,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.СтоимостьРасход КАК Расход,
   NULL КАК НачальныйОстаток,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Контрагент,
   NULL КАК КонечныйОстаток,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Период КАК Период
ИЗ
   РегистрНакопления.ВзаиморасчетыСПокупателями.ОстаткиИОбороты(
           &ДатаС,
           &ДатаПо,
           Регистратор,
           ,
           Контрагент = &Контрагент
               И Организация = &Организация
               И Валюта = &Валюта) КАК ВзаиморасчетыСПокупателямиОстаткиИОбороты

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ ПЕРВЫЕ 1
   NULL,
   NULL,
   NULL,
   ВзаиморасчетыСПокупателямиОстаткиИОборотыНач.СтоимостьНачальныйОстаток,
   ВзаиморасчетыСПокупателямиОстаткиИОборотыНач.Контрагент,
   NULL,
   NULL
ИЗ
   РегистрНакопления.ВзаиморасчетыСПокупателями.ОстаткиИОбороты(
           ,
           ,
           Месяц,
           ,
           Организация = &Организация
               И Контрагент = &Контрагент
               И Валюта = &Валюта) КАК ВзаиморасчетыСПокупателямиОстаткиИОборотыНач
ГДЕ
   ВзаиморасчетыСПокупателямиОстаткиИОборотыНач.Период >= &ДатаС
   И ВзаиморасчетыСПокупателямиОстаткиИОборотыНач.Период <= &ДатаПо

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ ПЕРВЫЕ 1
   NULL,
   NULL,
   NULL,
   NULL,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Контрагент,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.СтоимостьКонечныйОстаток,
   NULL
ИЗ
   РегистрНакопления.ВзаиморасчетыСПокупателями.ОстаткиИОбороты(
           ,
           ,
           Месяц,
           ,
           Организация = &Организация
               И Контрагент = &Контрагент
               И Валюта = &Валюта) КАК ВзаиморасчетыСПокупателямиОстаткиИОбороты
ГДЕ
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Период >= &ДатаС
   И ВзаиморасчетыСПокупателямиОстаткиИОбороты.Период <= &ДатаПо

УПОРЯДОЧИТЬ ПО
   КонечныйОстаток УБЫВ,
   Период
1 Ksandr
 
18.04.12
23:19
не выбирается так как не подходит под условие ВТ и условие в ГДЕ
2 Лефмихалыч
 
18.04.12
23:20

ОстаткиИОбороты
you're doing it wrong
3 Ksandr
 
18.04.12
23:20
4 Лефмихалыч
 
18.04.12
23:21
(1) запрос у тебя убог и крив. Не понятно вообще, почему он хоть что-то возвращает.
Начальный остаток ни как не зависит от оборотов в выбранном пеироде. Он зависит от оборотов в предыдущем периоде.
5 Ranger_83
 
18.04.12
23:23
Метод дополнения в виртуальной таблице поставь
6 zak555
 
18.04.12
23:32
зачем тебе регистраторы ?
7 zak555
 
18.04.12
23:39
получи сначала по каким был оборот в ВТ
а потом получи остатки из виртТаблицы, где номенклатура не в ВТ

и будет тебе счастье
8 kasena
 
18.04.12
23:39
Лефмихалыч, спасибо, я в курсе. нет предела совершенсту.)
zak555, в отчет для детальных записей.

спасибо всем, вопрос решен.
9 zak555
 
18.04.12
23:40
> спасибо всем, вопрос решен.

это как ?
10 kasena
 
18.04.12
23:42
включила мозг и переделала. все работает. =)
11 zak555
 
18.04.12
23:45
(10) это как же ?
12 vah1
 
18.04.12
23:46
(10) фигасе, научи если остатка нет - как сделать
13 kasena
 
18.04.12
23:47
vah1, с чего ты взял, что остатка нет? я писала, что нет оборотов и своим запросом не получала остаток. обороты были ранее. и остаток есть.

ВЫБРАТЬ
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Регистратор КАК Регистратор,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.СтоимостьПриход КАК Приход,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.СтоимостьРасход КАК Расход,
   NULL КАК НачальныйОстаток,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Контрагент,
   NULL КАК КонечныйОстаток,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Период КАК Период
ИЗ
   РегистрНакопления.ВзаиморасчетыСПокупателями.ОстаткиИОбороты(
           &ДатаС,
           &ДатаПо,
           Регистратор,
           ,
           Контрагент = &Контрагент
               И Организация = &Организация
               И Валюта = &Валюта) КАК ВзаиморасчетыСПокупателямиОстаткиИОбороты

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
   NULL,
   NULL,
   NULL,
   ВзаиморасчетыСПокупателямиОстаткиИОборотыНач.СтоимостьНачальныйОстаток,
   ВзаиморасчетыСПокупателямиОстаткиИОборотыНач.Контрагент,
   ВзаиморасчетыСПокупателямиОстаткиИОборотыНач.СтоимостьКонечныйОстаток,
   NULL
ИЗ
   РегистрНакопления.ВзаиморасчетыСПокупателями.ОстаткиИОбороты(
           &ДатаС,
           &ДатаПо,
           ,
           ,
           Организация = &Организация
               И Контрагент = &Контрагент
               И Валюта = &Валюта) КАК ВзаиморасчетыСПокупателямиОстаткиИОборотыНач

УПОРЯДОЧИТЬ ПО
   КонечныйОстаток УБЫВ,
   Период

фурычет
14 vah1
 
18.04.12
23:51
как это с чего взял, из жизни - нет оборотов может и остатков со времени не быть
15 kasena
 
18.04.12
23:54
нет оборотов в заданном периоде. никто не сказал, что не было оборотов в более раннее время. ДО начала заданного периода.
16 vah1
 
18.04.12
23:54
мосх не включай - один фик медленно работает
17 zak555
 
18.04.12
23:55
чем (13) будет отличаться от :


ВЫБРАТЬ
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Регистратор КАК Регистратор,
   ВзаиморасчетыСПокупателямиОстаткиИОборотыНач.СтоимостьНачальныйОстаток КАК НачальныйОстаток,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.СтоимостьПриход КАК Приход,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.СтоимостьРасход КАК Расход,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.СтоимостьКонечныйОстаток КАК КонечныйОстаток,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Контрагент    
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Период КАК Период
ИЗ
   РегистрНакопления.ВзаиморасчетыСПокупателями.ОстаткиИОбороты(
           &ДатаС,
           &ДатаПо,
           Регистратор,
           ,
           Контрагент = &Контрагент
               И Организация = &Организация
               И Валюта = &Валюта) КАК ВзаиморасчетыСПокупателямиОстаткиИОбороты

УПОРЯДОЧИТЬ ПО
   КонечныйОстаток УБЫВ,
   Период
18 vah1
 
18.04.12
23:57
в случае отсутствия оборотов в заданном периоде - Я правильно четал?
19 kasena
 
18.04.12
23:59
vah1, в заданном периоде оборотов нет. обороты были в более раннее время. отсюда и остаток на начало и остаток на конец, равный остатку на начало.
20 zak555
 
19.04.12
00:00
(19) смотри в (17)
21 kasena
 
19.04.12
00:03
тем, что остаток на начало и на конец у меня не будет пересчитываться с каждым новым оборотом. так я просто получаю 1 число остаток на начало и 1 число остаток на конец. но в целом, не принципиально.
22 zak555
 
19.04.12
00:04
(21) переведите пожалуйста
23 vah1
 
19.04.12
00:12
можно я?
у девушки остаток не будет пересчитываться
ЗЫ Я сказала - и все!
что неясно, лично я не возражаю
24 Ksandr
 
19.04.12
00:13
(5) Двойка Вам!
По умолчанию стоит ДвижениеИГраницыПериода
25 zak555
 
19.04.12
00:17
ВЫБРАТЬ
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Регистратор КАК Регистратор КАК Период,
   ВзаиморасчетыСПокупателямиОстаткиИОборотыНач.СтоимостьНачальныйОстаток КАК НачальныйОстаток,

  ВзаиморасчетыСПокупателямиОстаткиИОбороты.СтоимостьПриход КАК Приход,
  ВзаиморасчетыСПокупателямиОстаткиИОбороты.СтоимостьРасход КАК Расход,

   ВзаиморасчетыСПокупателямиОстаткиИОбороты.СтоимостьКонечныйОстаток КАК КонечныйОстаток,
   ВзаиморасчетыСПокупателямиОстаткиИОбороты.Контрагент    
   
ИЗ
   РегистрНакопления.ВзаиморасчетыСПокупателями.ОстаткиИОбороты(
           &ДатаС,
           &ДатаПо,
           Регистратор,
           ,
           Контрагент = &Контрагент
               И Организация = &Организация
               И Валюта = &Валюта) КАК ВзаиморасчетыСПокупателямиОстаткиИОбороты

Сгруппировать ПО Период, Контрагент


УПОРЯДОЧИТЬ ПО
   КонечныйОстаток УБЫВ,
   Период
26 kasena
 
19.04.12
00:27
vah1, следуя Вашей логике я сделала невозможное.)
27 zak555
 
19.04.12
01:02
(26) всё кипятишь ?
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс