комментария 2 на “Продвинутый курс. Занятие №8”

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

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ВТ_ОстаткиТоваров.Номенклатура,
    ВТ_ОстаткиТоваров.Период,
    ВТ_ОстаткиТоваров.КоличествоКонечныйОстаток
    ПОМЕСТИТЬ ВТ_ОстаткиРавныНулю
    ИЗ
    ВТ_ОстаткиТоваров КАК ВТ_ОстаткиТоваров
    ГДЕ
    ВТ_ОстаткиТоваров.КоличествоКонечныйОстаток = 0
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ВТ_ОстаткиРавныНулю.Номенклатура,
    ВЫБОР
    КОГДА ВТ_ОстаткиРавныНулю.Период = &ДаТаНачала
    ТОГДА ВТ_ОстаткиРавныНулю.Период
    ИНАЧЕ ДОБАВИТЬКДАТЕ(ВТ_ОстаткиРавныНулю.Период, ДЕНЬ, 1)
    КОНЕЦ КАК ПериодНачало,
    МИНИМУМ(ВЫБОР
    КОГДА ВТ_ОстаткиТоваров.Период = &ДатаОкончания
    ТОГДА ВТ_ОстаткиТоваров.Период
    ИНАЧЕ ДОБАВИТЬКДАТЕ(ВТ_ОстаткиТоваров.Период, СЕКУНДА, -1)
    КОНЕЦ) КАК ПериодОкончание
    ПОМЕСТИТЬ ВТ_ПериодыБезТоваров
    ИЗ
    ВТ_ОстаткиТоваров КАК ВТ_ОстаткиТоваров
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_ОстаткиРавныНулю КАК ВТ_ОстаткиРавныНулю
    ПО ВТ_ОстаткиТоваров.Номенклатура = ВТ_ОстаткиРавныНулю.Номенклатура
    И ВТ_ОстаткиТоваров.Период > ВТ_ОстаткиРавныНулю.Период

    СГРУППИРОВАТЬ ПО
    ВТ_ОстаткиРавныНулю.Номенклатура,
    ВЫБОР
    КОГДА ВТ_ОстаткиРавныНулю.Период = &ДаТаНачала
    ТОГДА ВТ_ОстаткиРавныНулю.Период
    ИНАЧЕ ДОБАВИТЬКДАТЕ(ВТ_ОстаткиРавныНулю.Период, ДЕНЬ, 1)
    КОНЕЦ
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    СУММА(ГрафикРаботы.Значение) КАК Значение
    ПОМЕСТИТЬ ВТ_РабочиеДние
    ИЗ
    РегистрСведений.ГрафикРаботы КАК ГрафикРаботы
    ГДЕ
    ГрафикРаботы.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
    И ГрафикРаботы.ТипГрафика = ЗНАЧЕНИЕ(Справочник.ТипыГрафиков.Пятидневка)
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ВТ_ПериодыБезТоваров.Номенклатура,
    ВТ_ПериодыБезТоваров.ПериодНачало,
    ВТ_ПериодыБезТоваров.ПериодОкончание,
    СУММА(ГрафикРаботы.Значение) КАК Значение
    ПОМЕСТИТЬ ВТ_ВТ_РабочиеДниеБезТовара
    ИЗ
    ВТ_ПериодыБезТоваров КАК ВТ_ПериодыБезТоваров
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ГрафикРаботы КАК ГрафикРаботы
    ПО (ГрафикРаботы.Дата МЕЖДУ ВТ_ПериодыБезТоваров.ПериодНачало И ВТ_ПериодыБезТоваров.ПериодОкончание)
    ГДЕ
    ГрафикРаботы.ТипГрафика = ЗНАЧЕНИЕ(Справочник.ТипыГрафиков.Пятидневка)

    СГРУППИРОВАТЬ ПО
    ВТ_ПериодыБезТоваров.ПериодОкончание,
    ВТ_ПериодыБезТоваров.Номенклатура,
    ВТ_ПериодыБезТоваров.ПериодНачало
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ВТ_ВТ_РабочиеДниеБезТовара.Номенклатура,
    ВТ_ВТ_РабочиеДниеБезТовара.Значение – ВТ_ВТ_РабочиеДниеБезТовара.Значение КАК ЧислоДней
    ПОМЕСТИТЬ ВТ_КоличествоДней
    ИЗ
    ВТ_РабочиеДние КАК ВТ_РабочиеДние,
    ВТ_ВТ_РабочиеДниеБезТовара КАК ВТ_ВТ_РабочиеДниеБезТовара
    ;

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

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ВТ_Взаиморасчеты.Контрагент,
    ВТ_Взаиморасчеты.Период КАК ПериодНачало,
    ВТ_Взаиморасчеты.СуммаКонечныйОстаток,
    МИНИМУМ(ВТ_Взаиморасчеты1.Период) КАК ПериодОкончания
    ПОМЕСТИТЬ ВТ_Периоды
    ИЗ
    ВТ_Взаиморасчеты КАК ВТ_Взаиморасчеты
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Взаиморасчеты КАК ВТ_Взаиморасчеты1
    ПО ВТ_Взаиморасчеты.Контрагент = ВТ_Взаиморасчеты1.Контрагент
    И ВТ_Взаиморасчеты.Период 0
    ТОГДА “Актив”
    ИНАЧЕ “Пассив”
    КОНЕЦ КАК АктивПассив
    ПОМЕСТИТЬ ВТ_актив
    ИЗ
    ВТ_Периоды КАК ВТ_Периоды
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ВТ_актив.Контрагент,
    СУММА(ВТ_актив.ЧислоДней * ВТ_актив.СуммаКонечныйОстаток) КАК Поле1,
    ВТ_актив.АктивПассив
    ИЗ
    ВТ_актив КАК ВТ_актив

    СГРУППИРОВАТЬ ПО
    ВТ_актив.Контрагент,
    ВТ_актив.АктивПассив

    • Татьяна Гужавина 04.05.2016 в 12:24

      Отчет принят. Ознакомьтесь с решением преподавателя на текущей странице для самоконтроля.