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