Конфигурация самописная. Представляет собой что то вроде простого торгового учета.
Делаю отчет по остаткам товара на складе с расшифровкой по резервам заказов
В отчета как я думаю участвуют 3 регистра:
1) остатки по складам(измерения:Номенклатура,Склад; ресурсы: количество), документа движения: поступление товаров на склад, реализация
2) остатки товаров(измерения:Номеклатура, партия; ресурсы: количество, стоимость) документа движения: поступление товаров на склад, реализация
3) свободные остатки (измерения:Номенклатура,Склад; ресурсы: ВНаличии, ВРезерве) документа движения: реализация, заказ клиента
Не могу понять - почему в отчет не попаает последний документ реализации(отругзка товаров)
Делаю 2 набора данных:
1 набор -
ВЫБРАТЬ
ОстаткиПоСкладамОстаткиИОбороты.Номенклатура,
ОстаткиПоСкладамОстаткиИОбороты.Склад,
СУММА(ОстаткиПоСкладамОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоОстаток,
СвободныеОстаткиОстаткиИОбороты.Регистратор КАК Заказ,
СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииПриход) КАК ВНаличииПриход,
СУММА(СвободныеОстаткиОстаткиИОбороты.ВРезервеПриход) КАК ВРезервеПриход
ИЗ
РегистрНакопления.ОстаткиПоСкладам.ОстаткиИОбороты(, , , ДвиженияИГраницыПериода, ) КАК ОстаткиПоСкладамОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(, , Регистратор, ДвиженияИГраницыПериода, ) КАК СвободныеОстаткиОстаткиИОбороты
ПО ОстаткиПоСкладамОстаткиИОбороты.Номенклатура = СвободныеОстаткиОстаткиИОбороты.Номенклатура
И ОстаткиПоСкладамОстаткиИОбороты.Склад = СвободныеОстаткиОстаткиИОбороты.Склад
СГРУППИРОВАТЬ ПО
ОстаткиПоСкладамОстаткиИОбороты.Номенклатура,
ОстаткиПоСкладамОстаткиИОбороты.Склад,
СвободныеОстаткиОстаткиИОбороты.Регистратор
Показать
2 набор-
ВЫБРАТЬ
ОстаткиТоваровОстатки.Номенклатура,
ОстаткиТоваровОстатки.КоличествоОстаток КАК КоличествоОбщ,
ОстаткиТоваровОстатки.СтоимостьОстаток КАК СтоимостьОбщ
ИЗ
РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваровОстатки
ещё вот что заметил, для первого набора данных предлагаю запрос наподобие следующего, он обе отгрузки выводит
суть в наличии поля ВНаличииНачальныйОстаток из СвободныеОстаткиОстаткиИОбороты
ВЫБРАТЬ
ОстаткиПоСкладамОстаткиИОбороты.Номенклатура,
ОстаткиПоСкладамОстаткиИОбороты.Склад,
СУММА(ОстаткиПоСкладамОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоОстаток,
СвободныеОстаткиОстаткиИОбороты.Регистратор КАК Заказ,
СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииПриход) КАК ВНаличииПриход,
СУММА(СвободныеОстаткиОстаткиИОбороты.ВРезервеПриход) КАК ВРезервеПриход,
СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииНачальныйОстаток) ВНаличииНачальныйОстаток
ИЗ
РегистрНакопления.ОстаткиПоСкладам.ОстаткиИОбороты(, , , ДвиженияИГраницыПериода, ) КАК ОстаткиПоСкладамОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(, , Регистратор, ДвиженияИГраницыПериода, ) КАК СвободныеОстаткиОстаткиИОбороты
ПО ОстаткиПоСкладамОстаткиИОбороты.Номенклатура = СвободныеОстаткиОстаткиИОбороты.Номенклатура
И ОстаткиПоСкладамОстаткиИОбороты.Склад = СвободныеОстаткиОстаткиИОбороты.Склад
СГРУППИРОВАТЬ ПО
ОстаткиПоСкладамОстаткиИОбороты.Номенклатура,
ОстаткиПоСкладамОстаткиИОбороты.Склад,
СвободныеОстаткиОстаткиИОбороты.Регистратор
а так более детально надо разбираться, может быть упростить всё сильно и получить одним набором данных
соединения СКД не всегда оч.хороши (мне кажется если будет где-то NULL, они забьют на данные)
(9) Ёпрст, если я ставлю для регистра РегистрНакопления.ОстаткиПоСкладам.ОстаткиИОбороты периодичность - РЕГИТСРАТОР + метод дополнения ДвиженияИГраницыПериода - то выводятся нереальные даные ни по остаткам, ни по резервам(.
попробуй текст запроса (включая * ) в консоле запросов обыграть
мы видим, что в этом случае есть вторая отгрузка (верней 0001)
пока причину не пойму, но где-то здесь причина
ВЫБРАТЬ
ОстаткиПоСкладамОстаткиИОбороты.Номенклатура,
ОстаткиПоСкладамОстаткиИОбороты.Склад,
ОстаткиПоСкладамОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоОстаток,
СвободныеОстаткиОстаткиИОбороты.Регистратор КАК Заказ,
СвободныеОстаткиОстаткиИОбороты.ВНаличииПриход КАК ВНаличииПриход,
СвободныеОстаткиОстаткиИОбороты.ВРезервеПриход КАК ВРезервеПриход,
СвободныеОстаткиОстаткиИОбороты.*
ИЗ
РегистрНакопления.ОстаткиПоСкладам.ОстаткиИОбороты(, , , ДвиженияИГраницыПериода, ) КАК ОстаткиПоСкладамОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(, , Регистратор, ДвиженияИГраницыПериода, ) КАК СвободныеОстаткиОстаткиИОбороты
ПО ОстаткиПоСкладамОстаткиИОбороты.Номенклатура = СвободныеОстаткиОстаткиИОбороты.Номенклатура
И ОстаткиПоСкладамОстаткиИОбороты.Склад = СвободныеОстаткиОстаткиИОбороты.Склад
ещё вот что заметил, для первого набора данных предлагаю запрос наподобие следующего, он обе отгрузки выводит
суть в наличии поля ВНаличииНачальныйОстаток из СвободныеОстаткиОстаткиИОбороты
ВЫБРАТЬ
ОстаткиПоСкладамОстаткиИОбороты.Номенклатура,
ОстаткиПоСкладамОстаткиИОбороты.Склад,
СУММА(ОстаткиПоСкладамОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоОстаток,
СвободныеОстаткиОстаткиИОбороты.Регистратор КАК Заказ,
СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииПриход) КАК ВНаличииПриход,
СУММА(СвободныеОстаткиОстаткиИОбороты.ВРезервеПриход) КАК ВРезервеПриход,
СУММА(СвободныеОстаткиОстаткиИОбороты.ВНаличииНачальныйОстаток) ВНаличииНачальныйОстаток
ИЗ
РегистрНакопления.ОстаткиПоСкладам.ОстаткиИОбороты(, , , ДвиженияИГраницыПериода, ) КАК ОстаткиПоСкладамОстаткиИОбороты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.ОстаткиИОбороты(, , Регистратор, ДвиженияИГраницыПериода, ) КАК СвободныеОстаткиОстаткиИОбороты
ПО ОстаткиПоСкладамОстаткиИОбороты.Номенклатура = СвободныеОстаткиОстаткиИОбороты.Номенклатура
И ОстаткиПоСкладамОстаткиИОбороты.Склад = СвободныеОстаткиОстаткиИОбороты.Склад
СГРУППИРОВАТЬ ПО
ОстаткиПоСкладамОстаткиИОбороты.Номенклатура,
ОстаткиПоСкладамОстаткиИОбороты.Склад,
СвободныеОстаткиОстаткиИОбороты.Регистратор
а так более детально надо разбираться, может быть упростить всё сильно и получить одним набором данных
соединения СКД не всегда оч.хороши (мне кажется если будет где-то NULL, они забьют на данные)