Имя: Пароль:
1C
1С v8
Торг 29. Помогите с запросом
0 егаис
 
17.09.15
08:48
Необходимо реализовать формирование торг29 по типу цен. Переписал запрос, но почему-то сальдо начальное формируется только по последнему значению. По последнему значению чего я так и не понял. Возможно последнего регистратора+последняя номенклатура. Если запрос развернуть по номенклатуре, но значение есть только по последней строке.
По 41 счету на 01.03.15 остаток по складу 370К в закупочных ценах.
В торг29 - только по последнему значению. Смена типа цен отрабатывает, видно что сумма меняется, вопрос один - почему сальдо начальное генериться не по всем товарам?
Переписанный запрос
    "ВЫБРАТЬ РАЗРЕШЕННЫЕ
        |    ХозрасчетныйОбороты.Период КАК ДатаДок,
        |    ХозрасчетныйОбороты.Регистратор КАК Док,
        |    ХозрасчетныйОбороты.Регистратор.Номер КАК НомерДок,
        |    СУММА(ХозрасчетныйОбороты.СуммаОборотДт) КАК ПризнакПрихода,
        |    СУММА(ХозрасчетныйОбороты.СуммаОборотКт) КАК ПризнакРасхода,
        |    СУММА(ВЫБОР
        |            КОГДА ХозрасчетныйОбороты.Счет <> &СчетТары
        |                ТОГДА (ХозрасчетныйОбороты.КоличествоНачальныйОстатокДт - ХозрасчетныйОбороты.КоличествоНачальныйОстатокКт) * ЦеныНоменклатурыСрезПоследних.Цена
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК НачальныйОстаток,
        |    СУММА(ВЫБОР
        |            КОГДА ХозрасчетныйОбороты.Счет = &СчетТары
        |                ТОГДА ХозрасчетныйОбороты.СуммаНачальныйОстатокДт - ХозрасчетныйОбороты.СуммаНачальныйОстатокКт
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК НачальныйОстатокТары,
        |    СУММА(ВЫБОР
        |            КОГДА ХозрасчетныйОбороты.Счет <> &СчетТары
        |                ТОГДА ХозрасчетныйОбороты.КоличествоОборотДт * ЦеныНоменклатурыСрезПоследних.Цена
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК Приход,
        |    СУММА(ВЫБОР
        |            КОГДА ХозрасчетныйОбороты.Счет = &СчетТары
        |                ТОГДА ХозрасчетныйОбороты.СуммаОборотДт
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК ПриходТары,
        |    СУММА(ВЫБОР
        |            КОГДА ХозрасчетныйОбороты.Счет <> &СчетТары
        |                ТОГДА (ХозрасчетныйОбороты.КоличествоКонечныйОстатокДт - ХозрасчетныйОбороты.КоличествоКонечныйОстатокКт) * ЦеныНоменклатурыСрезПоследних.Цена
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК КонечныйОстаток,
        |    СУММА(ВЫБОР
        |            КОГДА ХозрасчетныйОбороты.Счет = &СчетТары
        |                ТОГДА ХозрасчетныйОбороты.СуммаКонечныйОстатокДт - ХозрасчетныйОбороты.СуммаКонечныйОстатокКт
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК КонечныйОстатокТары,
        |    СУММА(ВЫБОР
        |            КОГДА ХозрасчетныйОбороты.Счет <> &СчетТары
        |                ТОГДА ХозрасчетныйОбороты.КоличествоОборотКт * ЦеныНоменклатурыСрезПоследних.Цена
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК Расход,
        |    СУММА(ВЫБОР
        |            КОГДА ХозрасчетныйОбороты.Счет = &СчетТары
        |                ТОГДА ХозрасчетныйОбороты.СуммаОборотКт
        |            ИНАЧЕ 0
        |        КОНЕЦ) КАК РасходТары
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, , Счет В ИЕРАРХИИ (&Счета), , Организация = &Организация) КАК ХозрасчетныйОбороты
        |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаОкончания, ТипЦен = &ТипЦены) КАК ЦеныНоменклатурыСрезПоследних
        |        ПО ХозрасчетныйОбороты.Субконто1 = ЦеныНоменклатурыСрезПоследних.Номенклатура
        |ГДЕ
        |    ХозрасчетныйОбороты.Субконто2= &Склад
        |
        |СГРУППИРОВАТЬ ПО
        |    ХозрасчетныйОбороты.Период,
        |    ХозрасчетныйОбороты.Регистратор,
        |    ХозрасчетныйОбороты.Регистратор.Номер
        |
        |УПОРЯДОЧИТЬ ПО
        |    ДатаДок";


    РезультатЗапроса = Запрос.Выполнить();

    ТаблицаОстатков = РезультатЗапроса.Выгрузить();
    Если ТаблицаОстатков.Количество() = 0 Тогда
        НачОст = 0;
        КонОст = 0;
        НачОстТары = 0;
        КонОстТары = 0;
    Иначе
        НачальныйОстаток = ТаблицаОстатков[0].НачальныйОстаток;
        КонечныйОстаток = ТаблицаОстатков[ТаблицаОстатков.Количество() - 1].КонечныйОстаток;
        НачальныйОстатокТары = ТаблицаОстатков[0].НачальныйОстатокТары;
        КонечныйОстатокТары = ТаблицаОстатков[ТаблицаОстатков.Количество() - 1].КонечныйОстатокТары;
    КонецЕсли;
1 егаис
 
17.09.15
08:48
БП 3.0