Продвинутый курс. Домашнее задание №8

Третье задание по 1-му блоку продвинутого курса.

Для выполнения рекомендуется изучить следующие главы 1-го блока.
Глава 6. Построитель отчета и построитель запроса.
Глава 7. Запросы.

В этой же теме необходимо написать отчет о выполнении задания.

К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь. Если Вы оплачивали курс, у Вас активирован токен доступа, Вы залогинены, но Вы видите эту запись — напишите нам на e-mail поддержки.

комментариев 85 на “Продвинутый курс. Домашнее задание №8”

  1. Задание выполнил  с помощью видео решения.

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

  3. Андрей Антипенко 11.02.2011 в 08:14

    Задание выполнил с подглядывание в постановку задачи с видео решения.

  4. ДЗ № 8 сделала

  5. CreativeGroup 03.01.2011 в 13:47

    Домашнее задание выполнено.
    Задача №1
    С запросом пришлось голову поломать. Идею по получению дней наличия на складе пришлось подглядеть у участников, сделавших данную задачу. В 5 запросе пакета подправил проверку на случай когда в один день было и поступление и продажа.
     
    ВЫБРАТЬ РАЗРЕШЕННЫЕ
    СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот,
    ПродажиОбороты.Номенклатура
    ПОМЕСТИТЬ ПродажиЗаПериод
    ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК ПродажиОбороты
     
    СГРУППИРОВАТЬ ПО
    ПродажиОбороты.Номенклатура
    ;
     
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ГрафикиРаботы.Дата
    ПОМЕСТИТЬ РабочиеДни
    ИЗ
    РегистрСведений.ГрафикиРаботы КАК ГрафикиРаботы
    ГДЕ
    ГрафикиРаботы.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    И ГрафикиРаботы.ТипГрафика = &ТипГрафика
    И ГрафикиРаботы.Значение = 1
    ;
     
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ОстаткиТоваровОстаткиИОбороты.Период КАК Период,
    ОстаткиТоваровОстаткиИОбороты.Номенклатура КАК Номенклатура,
    ОстаткиТоваровОстаткиИОбороты.КоличествоНачальныйОстаток,
    ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток,
    ОстаткиТоваровОстаткиИОбороты.КоличествоОборот,
    ОстаткиТоваровОстаткиИОбороты.КоличествоПриход,
    ОстаткиТоваровОстаткиИОбороты.КоличествоРасход
    ПОМЕСТИТЬ ОстаткиИОбороты
    ИЗ
    РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(
    &НачалоПериода,
    &КонецПериода,
    День,
    ,
    Номенклатура В
    (ВЫБРАТЬ РАЗЛИЧНЫЕ
    ПродажиЗаПериод.Номенклатура
    ИЗ
    ПродажиЗаПериод КАК ПродажиЗаПериод)) КАК ОстаткиТоваровОстаткиИОбороты
    ;
     
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    РабочиеДни.Дата КАК РабочаяДата,
    МАКСИМУМ(ОстаткиИОбороты.Период) КАК Период,
    ОстаткиИОбороты.Номенклатура
    ПОМЕСТИТЬ Периоды
    ИЗ
    РабочиеДни КАК РабочиеДни
    ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиИОбороты КАК ОстаткиИОбороты
    ПО РабочиеДни.Дата >= ОстаткиИОбороты.Период
     
    СГРУППИРОВАТЬ ПО
    РабочиеДни.Дата,
    ОстаткиИОбороты.Номенклатура
    ;
     
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    Периоды.Номенклатура,
    СУММА(ВЫБОР
    КОГДА ОстаткиИОбороты.КоличествоКонечныйОстаток > 0
    ИЛИ ОстаткиИОбороты.КоличествоНачальныйОстаток > 0
    ИЛИ ОстаткиИОбороты.Период = Периоды.РабочаяДата
    И ОстаткиИОбороты.КоличествоПриход = ОстаткиИОбороты.КоличествоРасход
    ТОГДА 1
    ИНАЧЕ 0
    КОНЕЦ) КАК КолвоДнейНаличияНаСкладе
    ПОМЕСТИТЬ ДнейНаличия
    ИЗ
    ОстаткиИОбороты КАК ОстаткиИОбороты
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ Периоды КАК Периоды
    ПО ОстаткиИОбороты.Номенклатура = Периоды.Номенклатура
    И ОстаткиИОбороты.Период = Периоды.Период
     
    СГРУППИРОВАТЬ ПО
    Периоды.Номенклатура
    ;
     
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ДнейНаличия.Номенклатура,
    ПродажиЗаПериод.КоличествоОборот / ДнейНаличия.КолвоДнейНаличияНаСкладе КАК СкоростьПродажи
    ИЗ
    ПродажиЗаПериод КАК ПродажиЗаПериод
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ДнейНаличия КАК ДнейНаличия
    ПО ПродажиЗаПериод.Номенклатура = ДнейНаличия.Номенклатура
     
     
    Задача № 2
     
    Регистр Взаиморасчеты и документы ПКО и РКО взял из конфигурации после 1 блока.
    Немножко смутил момент по первой задаче «А уровень полученных кредитов = 5 0000 руб. *
    11 дней = 55 000. Поскольку аванс 5 000 рублей учитываем за период с 20 по 31 января». Просто если взять в расчет и 31 января, то получаем 12 чистых дней кредита ?! В своем запросе я учел этот момент и в итоге получился пакет из 3 запросов:
     
    ВЫБРАТЬ
    ВзаиморасчетыОстаткиИОбороты.Период,
    ВзаиморасчетыОстаткиИОбороты.Контрагент,
    ВзаиморасчетыОстаткиИОбороты.СуммаНачальныйОстаток,
    ВзаиморасчетыОстаткиИОбороты.СуммаКонечныйОстаток,
    ВзаиморасчетыОстаткиИОбороты.СуммаОборот,
    ВзаиморасчетыОстаткиИОбороты.СуммаПриход,
    ВзаиморасчетыОстаткиИОбороты.СуммаРасход
    ПОМЕСТИТЬ Взаиморасчеты
    ИЗ
    РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, Движения, ) КАК ВзаиморасчетыОстаткиИОбороты
    ;
     
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    Взаиморасчеты.Период КАК Период,
    Взаиморасчеты.Контрагент КАК Контрагент,
    ВЫБОР
    КОГДА МИНИМУМ(ВзаиморасчетыОстаткиИОбороты.Период) = НАЧАЛОПЕРИОДА(&КонецПериода, ДЕНЬ)
    ТОГДА РАЗНОСТЬДАТ(Взаиморасчеты.Период, МИНИМУМ(ВзаиморасчетыОстаткиИОбороты.Период), ДЕНЬ) + 1
    ИНАЧЕ РАЗНОСТЬДАТ(Взаиморасчеты.Период, МИНИМУМ(ВзаиморасчетыОстаткиИОбороты.Период), ДЕНЬ)
    КОНЕЦ КАК КоличествоДней,
    Взаиморасчеты.СуммаКонечныйОстаток
    ПОМЕСТИТЬ ОтносительныеПоказателиПоПериодам
    ИЗ
    Взаиморасчеты КАК Взаиморасчеты
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Взаиморасчеты.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК ВзаиморасчетыОстаткиИОбороты
    ПО Взаиморасчеты.Контрагент = ВзаиморасчетыОстаткиИОбороты.Контрагент
    И Взаиморасчеты.Период < ВзаиморасчетыОстаткиИОбороты.Период
     
    СГРУППИРОВАТЬ ПО
    Взаиморасчеты.Период,
    Взаиморасчеты.Контрагент,
    ВзаиморасчетыОстаткиИОбороты.Контрагент,
    Взаиморасчеты.СуммаКонечныйОстаток
    ;
     
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ОтносительныеПоказателиПоПериодам.Контрагент,
    ВЫБОР
    КОГДА ОтносительныеПоказателиПоПериодам.СуммаКонечныйОстаток > 0
    ТОГДА “Дебиторка”
    ИНАЧЕ “Кредиторка”
    КОНЕЦ КАК Вид,
    СУММА(ВЫБОР
    КОГДА ОтносительныеПоказателиПоПериодам.СуммаКонечныйОстаток > 0
    ТОГДА ОтносительныеПоказателиПоПериодам.СуммаКонечныйОстаток * ОтносительныеПоказателиПоПериодам.КоличествоДней
    ИНАЧЕ -ОтносительныеПоказателиПоПериодам.СуммаКонечныйОстаток * ОтносительныеПоказателиПоПериодам.КоличествоДней
    КОНЕЦ) КАК Сумма
    ИЗ
    ОтносительныеПоказателиПоПериодам КАК ОтносительныеПоказателиПоПериодам
     
    СГРУППИРОВАТЬ ПО         ОтносительныеПоказателиПоПериодам.Контрагент,
    ВЫБОР
    КОГДА ОтносительныеПоказателиПоПериодам.СуммаКонечныйОстаток > 0
    ТОГДА “Дебиторка”
    ИНАЧЕ “Кредиторка”
    КОНЕЦ
     
    УПОРЯДОЧИТЬ ПО
    Сумма
    ИТОГИ ПО
    Вид

  6. Добрый вечер! Задание выполнил. Делал на типовой конфигурации, используя пакетные запросы.

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

  8.  1. часть готова – получился 6 этажный пакет..
    ВЫБРАТЬ
     ОстаткиТоваровОбороты.Номенклатура,
     ОстаткиТоваровОбороты.КоличествоПриход,
     ОстаткиТоваровОбороты.Период
    ПОМЕСТИТЬ Поступление
    ИЗ
     РегистрНакопления.ОстаткиТоваров.Обороты(, , День, {(Номенклатура)}) КАК ОстаткиТоваровОбороты
    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ
     ОстаткиТоваровОстатки.Номенклатура,
     0,
     &НачалоПериода
    ИЗ
     РегистрНакопления.ОстаткиТоваров.Остатки(&НачалоПериода, {(Номенклатура)}) КАК ОстаткиТоваровОстатки
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
     ОстаткиТоваровОстаткиИОбороты.Номенклатура,
     ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток,
     ОстаткиТоваровОстаткиИОбороты.Период
    ПОМЕСТИТЬ Реализация
    ИЗ
     РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(, , День, , {(Номенклатура)}) КАК ОстаткиТоваровОстаткиИОбороты
    ГДЕ
     ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток = 0
    ОБЪЕДИНИТЬ ВСЕ
    ВЫБРАТЬ
     ОстаткиТоваровОстатки.Номенклатура,
     0,
     &КонецПериода
    ИЗ
     РегистрНакопления.ОстаткиТоваров.Остатки(&КонецПериода, {(Номенклатура)}) КАК ОстаткиТоваровОстатки
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
     Поступление.Номенклатура,
     Поступление.Период КАК НачПериод,
     МИНИМУМ(Реализация.Период) КАК КонПериод
    ПОМЕСТИТЬ Остатки
    ИЗ
     Поступление КАК Поступление
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Реализация КАК Реализация
      ПО Поступление.Номенклатура = Реализация.Номенклатура
       И Поступление.Период <= Реализация.Период
    СГРУППИРОВАТЬ ПО
     Поступление.Номенклатура,
     Поступление.Период
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
     Остатки.Номенклатура,
     МИНИМУМ(Остатки.НачПериод) КАК НачПериод,
     Остатки.КонПериод
    ПОМЕСТИТЬ Периоды
    ИЗ
     Остатки КАК Остатки
    СГРУППИРОВАТЬ ПО
     Остатки.Номенклатура,
     Остатки.КонПериод
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
     Данные.Номенклатура,
     СУММА(ГрафикиРаботы.Значение) КАК Значение
    ПОМЕСТИТЬ Данные
    ИЗ
     РегистрСведений.ГрафикиРаботы КАК ГрафикиРаботы
      ЛЕВОЕ СОЕДИНЕНИЕ Периоды КАК Данные
      ПО ГрафикиРаботы.Дата >= Данные.НачПериод
       И ГрафикиРаботы.Дата <= Данные.КонПериод
    ГДЕ
     ГрафикиРаботы.ТипГрафика = &ТипГрафика
     И ГрафикиРаботы.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    СГРУППИРОВАТЬ ПО
     Данные.Номенклатура
    ;
    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
     Данные.Номенклатура,
     ПродажиОбороты.КоличествоОборот / Данные.Значение КАК Скорость
    ИЗ
     Данные КАК Данные
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(, , , ) КАК ПродажиОбороты
      ПО Данные.Номенклатура = ПродажиОбороты.Номенклатура

    •  Евгений, сколько не смотрел запросов – ни оди не пошел проверку..
      Может я – того, может это у меня – кривой запрос – можите прокомментировать?!..
      Проверял на данных:
      Приход 20.11 – 25, расход 10.12 – 20, расход 15.12 – 5 (на 16.12 – ноль)
      Приход 17.12 – 5, расход 17 – 5 (18.12 – ноль, выходной)
      Приход 19
      Судя по данным, нулевой остаток – только 16 – 1 день, в декабре 23 раб. дня..
      Результат: Оборот 30/22 = 1.36 !!!

      P.S.: Или я не прав – и не умею считать?!..

      • Судя по всему результат у вас правильный.

        •  Спасибо, за обнадеживающий ответ – бедем ждать эталонного решения, надеюсь с изюминкой!..  ;)

    • 2. часть готова – получилась 3 этажка..
      Как сделать отбор по контрагенту на закладке компоновка данных в конструкторе – ХЗ..
      ВЫБРАТЬ
      РегистрУправленческийОстаткиИОбороты.Период КАК Дата,
      РегистрУправленческийОстаткиИОбороты.Субконто1 КАК Контрагент,
      РегистрУправленческийОстаткиИОбороты.СуммаКонечныйОстаток КАК Сумма
      ПОМЕСТИТЬ Остатки
      ИЗ
      РегистрБухгалтерии.РегистрУправленческий.ОстаткиИОбороты(, , День, , Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Управленческий.Взаиморасчеты)), ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконто.Контрагенты), ) КАК РегистрУправленческийОстаткиИОбороты

      СГРУППИРОВАТЬ ПО
      РегистрУправленческийОстаткиИОбороты.Субконто1,
      РегистрУправленческийОстаткиИОбороты.СуммаКонечныйОстаток,
      РегистрУправленческийОстаткиИОбороты.Период
      ;

      ////////////////////////////////////////////////////////////////////////////////
      ВЫБРАТЬ
      Остатки.Дата КАК НачПериод,
      МИНИМУМ(Остатки1.Дата) КАК КонПериод,
      Остатки.Контрагент,
      Остатки.Сумма
      ПОМЕСТИТЬ Данные
      ИЗ
      Остатки КАК Остатки
      ВНУТРЕННЕЕ СОЕДИНЕНИЕ Остатки КАК Остатки1
      ПО Остатки.Контрагент = Остатки1.Контрагент
      И Остатки.Дата < Остатки1.Дата

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

      ////////////////////////////////////////////////////////////////////////////////
      ВЫБРАТЬ
      Данные.Контрагент,
      СУММА(ВЫБОР
      КОГДА РАЗНОСТЬДАТ(Данные.НачПериод, Данные.КонПериод, ДЕНЬ) * Данные.Сумма < 0
      ТОГДА -РАЗНОСТЬДАТ(Данные.НачПериод, Данные.КонПериод, ДЕНЬ) * Данные.Сумма
      ИНАЧЕ 0
      КОНЕЦ) КАК Дебиторка,
      СУММА(ВЫБОР
      КОГДА РАЗНОСТЬДАТ(Данные.НачПериод, Данные.КонПериод, ДЕНЬ) * Данные.Сумма > 0
      ТОГДА РАЗНОСТЬДАТ(Данные.НачПериод, Данные.КонПериод, ДЕНЬ) * Данные.Сумма
      ИНАЧЕ 0
      КОНЕЦ) КАК Кредиторка
      ИЗ
      Данные КАК Данные

      СГРУППИРОВАТЬ ПО
      Данные.Контрагент

      УПОРЯДОЧИТЬ ПО
      Данные.Контрагент

  9. ДЗ 8 выполнил. Пока самое сложное для меня задание из всех. Над первым запросом ломал голову неделю, второй уже было намного проще сделать.
    Запрос №1
    ВЫБРАТЬ
    ГрафикиРаботы.Дата КАК Дата
    ПОМЕСТИТЬ График
    ИЗ
    РегистрСведений.ГрафикиРаботы КАК ГрафикиРаботы
    ГДЕ
    ГрафикиРаботы.Дата МЕЖДУ &ДатаНачало И &ДатаОкончание
    И ГрафикиРаботы.Значение = 1
    И ГрафикиРаботы.ТипГрафика = &ТипГрафика
    ;

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

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    График.Дата,
    МАКСИМУМ(Остатки.Период) КАК Период,
    Остатки.Номенклатура
    ПОМЕСТИТЬ ДатыОстатков
    ИЗ
    График КАК График
    ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки
    ПО График.Дата >= Остатки.Период

    СГРУППИРОВАТЬ ПО
    График.Дата,
    Остатки.Номенклатура
    ;

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

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ДляИтогов.Номенклатура,
    СУММА(ДляИтогов.ЕстьОстаток) КАК КолвоДней
    ПОМЕСТИТЬ СуммаДней
    ИЗ
    ДляИтогов КАК ДляИтогов

    СГРУППИРОВАТЬ ПО
    ДляИтогов.Номенклатура
    ;

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

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    0 КАК Поле1
    ПОМЕСТИТЬ цифры

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    1

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    2

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    3

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    4

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    5

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    6

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    7

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    8

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    9
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&ДатаНачало, ДЕНЬ, цифры.Поле1 * 100 + цифры1.Поле1 * 10 + цифры2.Поле1) КАК Поле2
    ПОМЕСТИТЬ ВсеДаты
    ИЗ
    цифры КАК цифры,
    цифры КАК цифры1,
    цифры КАК цифры2
    ГДЕ
    ДОБАВИТЬКДАТЕ(&ДатаНачало, ДЕНЬ, цифры.Поле1 * 100 + цифры1.Поле1 * 10 + цифры2.Поле1) <= &ДатаОкончание
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ВсеДаты.Поле2 КАК Дата,
    МАКСИМУМ(Расчеты.Период) КАК Период,
    Расчеты.Контрагент КАК Контрагент
    ПОМЕСТИТЬ КонтрДаты
    ИЗ
    ВсеДаты КАК ВсеДаты
    ЛЕВОЕ СОЕДИНЕНИЕ Расчеты КАК Расчеты
    ПО ВсеДаты.Поле2 >= Расчеты.Период

    СГРУППИРОВАТЬ ПО
    Расчеты.Контрагент,
    ВсеДаты.Поле2
    ;

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

    СГРУППИРОВАТЬ ПО
    КонтрДаты.Контрагент,
    ВЫБОР
    КОГДА Расчеты.СуммаКонечныйОстаток >= 0
    ТОГДА Расчеты.СуммаКонечныйОстаток
    ИНАЧЕ 0
    КОНЕЦ,
    ВЫБОР
    КОГДА Расчеты.СуммаКонечныйОстаток < 0
    ТОГДА -Расчеты.СуммаКонечныйОстаток
    ИНАЧЕ 0
    КОНЕЦ
    ;

    ////////////////////////////////////////////////////////////////////////////////
    ВЫБРАТЬ
    ДляИтогов.Контрагент КАК Контрагент,
    СУММА(ДляИтогов.Поле1 * ДляИтогов.Дата) КАК Дебет,
    СУММА(ДляИтогов.Поле2 * ДляИтогов.Дата) КАК Кредит
    ИЗ
    ДляИтогов КАК ДляИтогов

    СГРУППИРОВАТЬ ПО
    ДляИтогов.Контрагент
    ИТОГИ
    СУММА(Дебет),
    СУММА(Кредит)
    ПО
    ОБЩИЕ

  10. Готово.