СКД Соединение РН ОстаткиИОбороты Итоги по остаткам
Добрый день, помогите парни, никак не могу победить остатки, чтобы корректно их показывала СКД, делаю отчет для КА1:
Мне в общем необходимо получить начальный остаток, приход по условию, расход по условию, прочее по условию и конечный остаток. Взял типовой отчет товары на складах, где все настроено в СКД, роли, измерения, остатки. Получается добавляются только ресурсы. Но при выводе получается ерунда в остатках. Может я и запрос шняговский написал?
ВЫБРАТЬ
ТоварыНаСкладахОстаткиИОбороты.НомерСтроки,
ТоварыНаСкладахОстаткиИОбороты.Регистратор,
ТоварыНаСкладахОстаткиИОбороты.ПериодСекунда,
ТоварыНаСкладахОстаткиИОбороты.ПериодМинута,
ТоварыНаСкладахОстаткиИОбороты.ПериодЧас,
ТоварыНаСкладахОстаткиИОбороты.ПериодДень,
ТоварыНаСкладахОстаткиИОбороты.ПериодНеделя,
ТоварыНаСкладахОстаткиИОбороты.ПериодДекада,
ТоварыНаСкладахОстаткиИОбороты.ПериодМесяц,
ТоварыНаСкладахОстаткиИОбороты.ПериодКвартал,
ТоварыНаСкладахОстаткиИОбороты.ПериодПолугодие,
ТоварыНаСкладахОстаткиИОбороты.ПериодГод,
ТоварыНаСкладахОстаткиИОбороты.Склад,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.Качество,
ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
ТоварыНаСкладахОстаткиИОбороты.СерияНоменклатуры,
ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот,
ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход КАК Приход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход КАК Расход
ПОМЕСТИТЬ ВТ_ОстаткиОбороты
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Авто, , Склад = &Склад) КАК ТоварыНаСкладахОстаткиИОбороты
ИНДЕКСИРОВАТЬ ПО
ТоварыНаСкладахОстаткиИОбороты.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ОстаткиОбороты.Регистратор,
ВТ_ОстаткиОбороты.Номенклатура КАК Номенклатура,
ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
ВТ_ОстаткиОбороты.СерияНоменклатуры,
ВТ_ОстаткиОбороты.Приход,
ВТ_ОстаткиОбороты.Расход,
ВТ_ОстаткиОбороты.КоличествоОборот КАК ОборотПрихода
ПОМЕСТИТЬ ВТ_Приход
ИЗ
ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
ГДЕ
ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
И ВТ_ОстаткиОбороты.Регистратор.СкладОрдер = &Склад
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ_ОстаткиОбороты.Регистратор,
ВТ_ОстаткиОбороты.Номенклатура,
ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
ВТ_ОстаткиОбороты.СерияНоменклатуры,
ВТ_ОстаткиОбороты.Приход,
ВТ_ОстаткиОбороты.Расход,
ВТ_ОстаткиОбороты.КоличествоОборот
ИЗ
ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
ГДЕ
ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.ПриходныйОрдерНаТовары
И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад
И (ВТ_ОстаткиОбороты.Регистратор.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПриходныйОрдер.ОтПоставщика)
ИЛИ ВТ_ОстаткиОбороты.Регистратор.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПриходныйОрдер.Перемещение))
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ_ОстаткиОбороты.Регистратор,
ВТ_ОстаткиОбороты.Номенклатура,
ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
ВТ_ОстаткиОбороты.СерияНоменклатуры,
ВТ_ОстаткиОбороты.Приход,
ВТ_ОстаткиОбороты.Расход,
ВТ_ОстаткиОбороты.КоличествоОборот
ИЗ
ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
ГДЕ
ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.ВыпускПродукции
И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ_ОстаткиОбороты.Регистратор,
ВТ_ОстаткиОбороты.Номенклатура,
ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
ВТ_ОстаткиОбороты.СерияНоменклатуры,
ВТ_ОстаткиОбороты.Приход,
ВТ_ОстаткиОбороты.Расход,
ВТ_ОстаткиОбороты.КоличествоОборот
ИЗ
ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
ГДЕ
ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
И ВТ_ОстаткиОбороты.Регистратор.СкладПолучатель = &Склад
И ВТ_ОстаткиОбороты.Регистратор.СкладОтправитель В(&СкладОтправитель)
ИНДЕКСИРОВАТЬ ПО
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ОстаткиОбороты.Регистратор,
ВТ_ОстаткиОбороты.Номенклатура КАК Номенклатура,
ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
ВТ_ОстаткиОбороты.СерияНоменклатуры,
ВТ_ОстаткиОбороты.Приход,
ВТ_ОстаткиОбороты.Расход,
ВТ_ОстаткиОбороты.КоличествоОборот КАК ОборотРасхода
ПОМЕСТИТЬ ВТ_Расход
ИЗ
ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
ГДЕ
ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ_ОстаткиОбороты.Регистратор,
ВТ_ОстаткиОбороты.Номенклатура,
ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
ВТ_ОстаткиОбороты.СерияНоменклатуры,
ВТ_ОстаткиОбороты.Приход,
ВТ_ОстаткиОбороты.Расход,
ВТ_ОстаткиОбороты.КоличествоОборот
ИЗ
ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
ГДЕ
ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.ВозвратТоваровОтПокупателя
И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ_ОстаткиОбороты.Регистратор,
ВТ_ОстаткиОбороты.Номенклатура,
ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
ВТ_ОстаткиОбороты.СерияНоменклатуры,
ВТ_ОстаткиОбороты.Приход,
ВТ_ОстаткиОбороты.Расход,
ВТ_ОстаткиОбороты.КоличествоОборот
ИЗ
ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
ГДЕ
ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.РасходныйОрдерНаТовары
И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ_ОстаткиОбороты.Регистратор,
ВТ_ОстаткиОбороты.Номенклатура,
ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
ВТ_ОстаткиОбороты.СерияНоменклатуры,
ВТ_ОстаткиОбороты.Приход,
ВТ_ОстаткиОбороты.Расход,
ВТ_ОстаткиОбороты.КоличествоОборот
ИЗ
ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
ГДЕ
ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.КорректировкаРеализации
И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ_ОстаткиОбороты.Регистратор,
ВТ_ОстаткиОбороты.Номенклатура,
ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
ВТ_ОстаткиОбороты.СерияНоменклатуры,
ВТ_ОстаткиОбороты.Приход,
ВТ_ОстаткиОбороты.Расход,
ВТ_ОстаткиОбороты.КоличествоОборот
ИЗ
ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
ГДЕ
ВТ_ОстаткиОбороты.Регистратор ССЫЛКА Документ.ПриходныйОрдерНаТовары
И ВТ_ОстаткиОбороты.Регистратор.Склад = &Склад
И ВТ_ОстаткиОбороты.Регистратор.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПриходныйОрдер.ОтПокупателя)
ИНДЕКСИРОВАТЬ ПО
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ОстаткиОбороты.Регистратор,
ВТ_ОстаткиОбороты.Номенклатура КАК Номенклатура,
ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
ВТ_ОстаткиОбороты.СерияНоменклатуры,
ВТ_ОстаткиОбороты.Приход,
ВТ_ОстаткиОбороты.Расход,
ВТ_ОстаткиОбороты.КоличествоОборот КАК ОборотПрочее
ПОМЕСТИТЬ ВТ_Прочее
ИЗ
ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
ГДЕ
НЕ ВТ_ОстаткиОбороты.Регистратор В
(ВЫБРАТЬ
ВТ_Приход.Регистратор
ИЗ
ВТ_Приход КАК ВТ_Приход
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
ВТ_Расход.Регистратор
ИЗ
ВТ_Расход КАК ВТ_Расход)
И ВТ_ОстаткиОбороты.Склад = &Склад
ИНДЕКСИРОВАТЬ ПО
Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТ_ОстаткиОбороты.НомерСтроки,
ВТ_ОстаткиОбороты.Регистратор,
ВТ_ОстаткиОбороты.ПериодСекунда,
ВТ_ОстаткиОбороты.ПериодМинута,
ВТ_ОстаткиОбороты.ПериодЧас,
ВТ_ОстаткиОбороты.ПериодДень,
ВТ_ОстаткиОбороты.ПериодНеделя,
ВТ_ОстаткиОбороты.ПериодДекада,
ВТ_ОстаткиОбороты.ПериодМесяц,
ВТ_ОстаткиОбороты.ПериодКвартал,
ВТ_ОстаткиОбороты.ПериодПолугодие,
ВТ_ОстаткиОбороты.ПериодГод,
ВТ_ОстаткиОбороты.Склад,
ВТ_ОстаткиОбороты.Номенклатура,
ВТ_ОстаткиОбороты.Качество,
ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры,
ВТ_ОстаткиОбороты.СерияНоменклатуры,
ВТ_ОстаткиОбороты.НачальныйОстаток,
ВТ_Приход.ОборотПрихода,
ВТ_Расход.ОборотРасхода,
ВТ_Прочее.ОборотПрочее,
ВТ_ОстаткиОбороты.КонечныйОстаток
ИЗ
ВТ_ОстаткиОбороты КАК ВТ_ОстаткиОбороты
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Приход КАК ВТ_Приход
ПО ВТ_ОстаткиОбороты.Номенклатура = ВТ_Приход.Номенклатура
И ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры = ВТ_Приход.ХарактеристикаНоменклатуры
И ВТ_ОстаткиОбороты.СерияНоменклатуры = ВТ_Приход.СерияНоменклатуры
И ВТ_ОстаткиОбороты.Регистратор = ВТ_Приход.Регистратор
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Расход КАК ВТ_Расход
ПО ВТ_ОстаткиОбороты.Номенклатура = ВТ_Расход.Номенклатура
И ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры = ВТ_Расход.ХарактеристикаНоменклатуры
И ВТ_ОстаткиОбороты.СерияНоменклатуры = ВТ_Расход.СерияНоменклатуры
И ВТ_ОстаткиОбороты.Регистратор = ВТ_Расход.Регистратор
ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Прочее КАК ВТ_Прочее
ПО ВТ_ОстаткиОбороты.Номенклатура = ВТ_Прочее.Номенклатура
И ВТ_ОстаткиОбороты.ХарактеристикаНоменклатуры = ВТ_Прочее.ХарактеристикаНоменклатуры
И ВТ_ОстаткиОбороты.СерияНоменклатуры = ВТ_Прочее.СерияНоменклатуры
И ВТ_ОстаткиОбороты.Регистратор = ВТ_Прочее.Регистратор
ПоказатьМне в общем необходимо получить начальный остаток, приход по условию, расход по условию, прочее по условию и конечный остаток. Взял типовой отчет товары на складах, где все настроено в СКД, роли, измерения, остатки. Получается добавляются только ресурсы. Но при выводе получается ерунда в остатках. Может я и запрос шняговский написал?
По теме из базы знаний
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
левые соединения по регистратору оборотов мне кажутся подозрительными
когда подозрения будут развеяны - тогда и остатки будут ок.
Из практики: в наборах данных СКД с временными таблицами и отборами на номенклатуру меняйте синоним Номенклатура на что-то вроде ТоварОтбора чтобы умная СКД не накидала своих отборов в регистры оборотов.
когда подозрения будут развеяны - тогда и остатки будут ок.
Из практики: в наборах данных СКД с временными таблицами и отборами на номенклатуру меняйте синоним Номенклатура на что-то вроде ТоварОтбора чтобы умная СКД не накидала своих отборов в регистры оборотов.
а зачем так много объединений?
можно же проще - КоличествоОборот > 0 - расход, КоличествоОборот < 0 - приход
раз так в пять запрос сократится
а чтобы не именовать в СКД одинаковые поля по разному во временных таблицах, можно выполнить запрос отдельно, а в СКД уже передать готовый результат для пост обработки
можно же проще - КоличествоОборот > 0 - расход, КоличествоОборот < 0 - приход
раз так в пять запрос сократится
а чтобы не именовать в СКД одинаковые поля по разному во временных таблицах, можно выполнить запрос отдельно, а в СКД уже передать готовый результат для пост обработки
(3) Мне необходимо не по всем документам выводить результат, много нюансов по ведению документооборота в предприятии, что считают приходом от поставщика иностранного, русского, что возвратами, поэтому разбил так.
Можно было конечно условия в поля затолкать, типа взять типовой и добавить поле, так:
То есть до моего поля остатки корректно рассчитываются по группировке "Номенклатура", стоит добавить мое поле "ОборотПриход" как тут же остатки летят. Вот мне и интересно, что еще надо донастроить.
На счет
Можно было конечно условия в поля затолкать, типа взять типовой и добавить поле, так:
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ТоварыНаСкладахОстаткиИОбороты.НомерСтроки,
ТоварыНаСкладахОстаткиИОбороты.Регистратор,
ТоварыНаСкладахОстаткиИОбороты.ПериодСекунда,
ТоварыНаСкладахОстаткиИОбороты.ПериодМинута,
ТоварыНаСкладахОстаткиИОбороты.ПериодЧас,
ТоварыНаСкладахОстаткиИОбороты.ПериодДень,
ТоварыНаСкладахОстаткиИОбороты.ПериодНеделя,
ТоварыНаСкладахОстаткиИОбороты.ПериодДекада,
ТоварыНаСкладахОстаткиИОбороты.ПериодМесяц,
ТоварыНаСкладахОстаткиИОбороты.ПериодКвартал,
ТоварыНаСкладахОстаткиИОбороты.ПериодПолугодие,
ТоварыНаСкладахОстаткиИОбороты.ПериодГод,
ТоварыНаСкладахОстаткиИОбороты.Склад,
ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
ТоварыНаСкладахОстаткиИОбороты.Качество,
ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
ТоварыНаСкладахОстаткиИОбороты.СерияНоменклатуры,
ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток,
ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот,
ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход,
ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход,
ВЫБОР
КОГДА ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
И ТоварыНаСкладахОбороты.Регистратор.СкладОрдер = &Склад
ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПриходныйОрдерНаТовары
И ТоварыНаСкладахОбороты.Регистратор.Склад = &Склад
И (ТоварыНаСкладахОбороты.Регистратор.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПриходныйОрдер.ОтПоставщика)
ИЛИ ТоварыНаСкладахОбороты.Регистратор.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПриходныйОрдер.Перемещение))
ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ВыпускПродукции
И ТоварыНаСкладахОбороты.Регистратор.Склад = &Склад
ИЛИ ТоварыНаСкладахОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
И ТоварыНаСкладахОбороты.Регистратор.СкладПолучатель = &Склад
И ТоварыНаСкладахОбороты.Регистратор.СкладОтправитель В (&СкладОтправитель)
ТОГДА ТоварыНаСкладахОбороты.КоличествоОборот
ИНАЧЕ 0
КОНЕЦ КАК ОборотПриход
ИЗ
РегистрНакопления.ТоварыНаСкладах.Обороты(, , Авто, ) КАК ТоварыНаСкладахОбороты
ПоказатьТо есть до моего поля остатки корректно рассчитываются по группировке "Номенклатура", стоит добавить мое поле "ОборотПриход" как тут же остатки летят. Вот мне и интересно, что еще надо донастроить.
На счет
а чтобы не именовать в СКД одинаковые поля по разному во временных таблицах, можно выполнить запрос отдельно, а в СКД уже передать готовый результат для пост обработки
это вы про набор данных - объект?
(4) да
мне в некоторых случаях сильно выручало, основной запрос без обработки его СКД выполняется отдельно, а в СКД передается результат в виде таблицы
правда при этом нужно все условия запроса, включая отборы наложить на основной запрос, а установить их через СКД, что немного муторно, но результат стоит того
мне в некоторых случаях сильно выручало, основной запрос без обработки его СКД выполняется отдельно, а в СКД передается результат в виде таблицы
правда при этом нужно все условия запроса, включая отборы наложить на основной запрос, а установить их через СКД, что немного муторно, но результат стоит того
Начать надо наверное с проверки в какой-нибудь консоли запросов. Может быть два исхода
- в консоли все нормально - тогда смотрим уже в другой консоли (компоновки данных). СКД умеет "испортить" запрос по своему усмотрению
- в консоли все плохо - тогда нужно пройтись по типовым ошибкам связанным с получением данных из регистров (на диске ИТС). на 1й взгляд вроде таковых нет - но мало ли что.
- в консоли все нормально - тогда смотрим уже в другой консоли (компоновки данных). СКД умеет "испортить" запрос по своему усмотрению
- в консоли все плохо - тогда нужно пройтись по типовым ошибкам связанным с получением данных из регистров (на диске ИТС). на 1й взгляд вроде таковых нет - но мало ли что.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот