8.х И снова про остатки регистров накопления в разрезе периодов

Тема в разделе "Система компоновки данных (СКД)", создана пользователем vasiliy_oren, 30 сен 2019.

  1. TopicStarter Overlay
    vasiliy_oren
    Offline

    vasiliy_oren

    Регистрация:
    18 июн 2016
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток Дамы и Господа.
    Я понимаю, что тема уже изъезженная не то, что до дыр, а до дырищ, поэтому просьба не материть и помидорами не кидаться, просто уже всю голову сломал, где я ошибаюсь -Drowning-

    В принципе задание более чем стандартное:
    Получить нач. остатки, движения и кон. остатки по двум регистрам - Товары на складах и свободные остатки в разрезе периодов.

    Запрос взят из типового УТ 11 - "Ведомость по товарам на складах" и добавлено соединение по РН свободных остатков:

    ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПересчетТоваровТовары.Номенклатура КАК Номенклатура,
    ПересчетТоваровТовары.Характеристика КАК Характеристика,
    ПересчетТоваровТовары.Серия КАК Серия,
    ИСТИНА КАК ИспользуетсяОтборПересчетуТоваров
    ПОМЕСТИТЬ ОтборПоПересчетуТоваров
    ИЗ
    Документ.ПересчетТоваров.Товары КАК ПересчетТоваровТовары
    {ГДЕ
    ПересчетТоваровТовары.Ссылка.* КАК ПересчетТоваров}

    ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Характеристика,
    Серия,
    ИспользуетсяОтборПересчетуТоваров
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ
    Сегменты.Номенклатура КАК Номенклатура,
    Сегменты.Характеристика КАК Характеристика,
    ИСТИНА КАК ИспользуетсяОтборПоСегментуНоменклатуры
    ПОМЕСТИТЬ ОтборПоСегментуНоменклатуры
    ИЗ
    РегистрСведений.НоменклатураСегмента КАК Сегменты
    {ГДЕ
    Сегменты.Сегмент.* КАК СегментНоменклатуры,
    Сегменты.Номенклатура.* КАК Номенклатура,
    Сегменты.Характеристика.* КАК Характеристика}

    ИНДЕКСИРОВАТЬ ПО
    Номенклатура,
    Характеристика,
    ИспользуетсяОтборПоСегментуНоменклатуры
    ;

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

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

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

    Результат запроса:
    РезультатЗапроса.jpg

    То есть с результатом все ок, но когда начинаю заворачивать в СКД, обычная проблема с неправильно рассчитанными остатками:
    Отчет.jpg

    Не раз уже сталкивался с таким, и довольно быстро исправлял, сейчас что то застопорился и все :(
    В запрос естественно есть период секунда, роли все выставлены, но так и не могу получить верный отчет.
    Роли.jpg


    Прошу помощи, где я ошибся (явно простейшая ошибка), но вот никак не вижу свою ошибку.
    Еще раз несколько раз перечитал ИТС http://its.1c.ru/db/metod8dev/content/3093/hdoc, все перепроверил, но так и не могу понять в чем моя ошибка (видимо уже зарапартовался совсем :()

    Заранее всем спасибо!!!
  2. TopicStarter Overlay
    vasiliy_oren
    Offline

    vasiliy_oren

    Регистрация:
    18 июн 2016
    Сообщения:
    11
    Симпатии:
    0
    Баллы:
    1
    На всякий случай сам отчет

    Вложения: