Имя: Пароль:
1C
1С v8
Вопрос по РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты
0 sanyaka
 
02.10.24
14:17
Всем привет.

Подскажите, есть такой запрос. В результате есть такие строки в которых в качестве регистратора - документ РТУ, а котгрузкеПриход и кОтгрузкеРасход равны по 10. Почему так получается?
Я думал заказ клиента генерирует приход, рту - расход.
  
ВЫБРАТЬ          
  ТоварыКОтгрузке.Регистратор как регистратор,
    ТоварыКОтгрузке.Номенклатура КАК Номенклатура,
    ТоварыКОтгрузке.КОтгрузкеПриход как котгрузке1,    
    ТоварыКОтгрузке.КОтгрузкеРасход как котгрузке2,
    ТоварыКОтгрузке.ВРезервеПриход как врезерве,
    ТоварыКОтгрузке.КОтгрузкеКонечныйОстаток как котгрузкеОст,
    ТоварыКОтгрузке.ВРезервеКонечныйОстаток как врезервеОст
    ИЗ
    РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(ДАТАВРЕМЯ(2024,9,1),ДАТАВРЕМЯ(2024,10,1) ,Регистратор , ) КАК ТоварыКОтгрузке;
1 Волшебник
 
02.10.24
14:19
Это же Ваша база. Вот и разбирайтесь, откуда взялись такие цифры
2 shuhard
 
02.10.24
14:19
(0) дык РТиУ не по заказу
3 sanyaka
 
02.10.24
14:55
(2) спасибо, проверю, думаю вы правы.

Можно ли получить конечный остаток по номенклатуре  кОтгрузуке и вРезерве на дату конца периода в этом же запросе не используя РегистрНакопления.ТоварыКОтгрузке.Остатки ?
4 Мультук
 
02.10.24
15:03
(3)

Найдите разницу между

Регистратор, Номенклатура

и

ДокументОтгрузки,  Номенклатура
5 sanyaka
 
02.10.24
15:25
(4) ведете к тому, что остатки нельзя вычислить в этом запросе ?
6 Мультук
 
02.10.24
15:29
(5)

Остатки чего ?

Вы показываете некий запрос, но не пишите что и зачем вы хотите посчитать
7 sanyaka
 
02.10.24
15:34
Остатки вРезерве и кОтгрузке на дату конца периода по номенклатуре.

Вообщем нужно получить за период список номенклатуры по которым был приход вРезерве/кОтгрузке и конечный остаток на конец периода.

С помощью первого запроса можно сгруппировать по номенклатуре и сделать отбор что сумма приход >0 (+ выбросить лишнее где рту не по заказу).
Дальше отдельным запросом получить остатки и объединить два запроса нужным пересечением.

Просто думаю может проще можно сделать.
8 sanyaka
 
02.10.24
17:47
как-то так:

ВЫБРАТЬ т1.Номенклатура,
т2.Врезерве
  из
(ВЫБРАТЬ        
    ТоварыКОтгрузке.Номенклатура КАК Номенклатура
       ИЗ  РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты(ДАТАВРЕМЯ(2024,9,1),ДАТАВРЕМЯ(2024,9,3) ,Регистратор , )
        КАК ТоварыКОтгрузке                            
        ГДЕ ТоварыКОтгрузке.КОтгрузкеПриход > ТоварыКОтгрузке.КОтгрузкеРасход ИЛИ
        ТоварыКОтгрузке.ВРезервеПриход > ТоварыКОтгрузке.ВРезервеРасход      
   СГРУППИРОВАТЬ ПО  ТоварыКОтгрузке.Номенклатура) как т1
   ЛЕВОЕ СОЕДИНЕНИЕ                                                  
       (ВЫБРАТЬ
    ТоварыКОтгрузке2.Номенклатура КАК Номенклатура,  
    (ТоварыКОтгрузке2.КОтгрузкеОстаток + ТоварыКОтгрузке2.ВРезервеОстаток) как Врезерве
    ИЗ   РегистрНакопления.ТоварыКОтгрузке.Остатки(ДАТАВРЕМЯ(2024,9,3),) КАК ТоварыКОтгрузке2) как т2
    ПО  т1.Номенклатура =  т2.Номенклатура;
9 sanyaka
 
02.10.24
19:30
вроде все получилось как задумывал.

интересно, что если использовать ДАТАВРЕМЯ(2024,9,3) то РегистрНакопления.ТоварыКОтгрузке.ОстаткиИОбороты вернут за 3 число движения, а РегистрНакопления.ТоварыКОтгрузке.Остатки остатки вернут на конец 2 числа.

в коде использовал ТекущаяДата() для подстановки в запрос, там помимо даты время получается подставляется, пока проблем не заметил.