Имя: Пароль:
1C
1С v8
8.3 СКД соединение наборов
, , , , ,
0 an7man
 
11.03.16
16:09
Есть
регистр накопления Товары,
с измерениями Товар,Склад
и ресурсом Количество.

Движения по нему регистрируются документами Приход,Списание,Перемещение.

Нужен отчет по остаткам, расшифровка у которого по Регистратору должна выводить список документов за период от последнего момента "ноль" (нет товара на остатках) до даты отчета.  Важный ньюанс: расшифровка не должна учитывать измерение Склад родительского отчета, т.е. если тыкаемся в остаток Товар1 на Склад15 то должны увидеть все документы от прихода на СкладN до перемещения на Склад15.

Набор1:

ВЫБРАТЬ
    ТоварыОстатки.Склад,
    ТоварыОстатки.Товар,
    ТоварыОстатки.КоличествоОстаток
ИЗ
    РегистрНакопления.Товары.Остатки({&Период}, ) КАК ТоварыОстатки


Набор2:

ВЫБРАТЬ
    МАКСИМУМ(ВЫРАЗИТЬ(ТоварыОстаткиИОбороты.Регистратор КАК Документ.Списание).Дата) КАК НулеваяДата,
    ТоварыОстаткиИОбороты.Товар КАК Товар
ПОМЕСТИТЬ НулевыеДаты
ИЗ
    РегистрНакопления.Товары.ОстаткиИОбороты(, {(&Период)}, Авто, , ) КАК ТоварыОстаткиИОбороты

СГРУППИРОВАТЬ ПО
    ТоварыОстаткиИОбороты.Товар

ИМЕЮЩИЕ
    СУММА(ТоварыОстаткиИОбороты.КоличествоКонечныйОстаток) = 0

ИНДЕКСИРОВАТЬ ПО
    Товар
    ;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыОстатки.Товар,
    ТоварыОстаткиИОбороты.Регистратор
ИЗ
    РегистрНакопления.Товары.Остатки({(&Период)}, ) КАК ТоварыОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ НулевыеДаты КАК НулевыеДаты
        ПО ТоварыОстатки.Товар = НулевыеДаты.Товар
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Товары.ОстаткиИОбороты(, {(&Период)}, Регистратор, Движения, ) КАК ТоварыОстаткиИОбороты
        ПО ТоварыОстатки.Товар = ТоварыОстаткиИОбороты.Товар
            И (НулевыеДаты.НулеваяДата ЕСТЬ NULL
                ИЛИ НулевыеДаты.НулеваяДата < ТоварыОстаткиИОбороты.Регистратор.Дата)




Наборы связаны только по товару. Не получается добиться независимости в расшифровке от Склада родительского отчета. Т.е. если в структуре родительского отчета фигурирует измерение Склад, то расшифровка выдает только последнее перемещение на этот склад.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший