Продвинутый курс. Домашнее задание №8
Третье задание по 1-му блоку продвинутого курса.
Для выполнения рекомендуется изучить следующие главы 1-го блока.
Глава 6. Построитель отчета и построитель запроса.
Глава 7. Запросы.
В этой же теме необходимо написать отчет о выполнении задания.
К сожалению, у Вас недостаточно прав для просмотра этой записи. Если Вы еще не залогинены на сайте — залогиньтесь. Если Вы оплачивали курс, у Вас активирован токен доступа, Вы залогинены, но Вы видите эту запись — напишите нам на e-mail поддержки.
Задание выполнил с помощью видео решения.
Выполнила. Долго-долго вникала в решение..
Запрос по первому заданию у меня получился немного по-другому:
ВЫБРАТЬ
ОстаткиТоваровОстаткиИОбороты.Период,
ОстаткиТоваровОстаткиИОбороты.Номенклатура,
ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток
ПОМЕСТИТЬ ОстаткиТоваров
ИЗ
РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(&Начало, &Окончание, День, ДвиженияИГраницыПериода, ) КАК ОстаткиТоваровОстаткиИОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ОстаткиТоваров.Номенклатура,
ОстаткиТоваров.Период КАК Период,
МИНИМУМ(ОстаткиТоваров1.Период) КАК Период1
ПОМЕСТИТЬ ПериодыНаличия
ИЗ
ОстаткиТоваров КАК ОстаткиТоваров
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиТоваров КАК ОстаткиТоваров1
ПО ОстаткиТоваров.Номенклатура = ОстаткиТоваров1.Номенклатура
И (ОстаткиТоваров.Период < ОстаткиТоваров1.Период
И ОстаткиТоваров.КоличествоКонечныйОстаток <> 0
И (ОстаткиТоваров1.КоличествоКонечныйОстаток = 0
ИЛИ ОстаткиТоваров1.Период = НАЧАЛОПЕРИОДА(&Окончание, ДЕНЬ))
ИЛИ ОстаткиТоваров.Период = ОстаткиТоваров1.Период
И ОстаткиТоваров1.КоличествоКонечныйОстаток = 0)
СГРУППИРОВАТЬ ПО
ОстаткиТоваров.Номенклатура,
ОстаткиТоваров.Период
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПериодыНаличия.Номенклатура,
МИНИМУМ(ПериодыНаличия.Период) КАК Период,
ПериодыНаличия.Период1
ПОМЕСТИТЬ ПериодыНаличияНоменклатуры
ИЗ
ПериодыНаличия КАК ПериодыНаличия
СГРУППИРОВАТЬ ПО
ПериодыНаличия.Номенклатура,
ПериодыНаличия.Период1
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
СУММА(ГрафикиРаботы.Значение) КАК Значение,
ПериодыНаличияНоменклатуры.Номенклатура
ПОМЕСТИТЬ РабочиеДниНаличия
ИЗ
РегистрСведений.ГрафикиРаботы КАК ГрафикиРаботы
ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПериодыНаличияНоменклатуры КАК ПериодыНаличияНоменклатуры
ПО (ГрафикиРаботы.Дата МЕЖДУ ПериодыНаличияНоменклатуры.Период И ПериодыНаличияНоменклатуры.Период1)
ГДЕ
ГрафикиРаботы.ТипГрафика = &ТипГрафика
СГРУППИРОВАТЬ ПО
ПериодыНаличияНоменклатуры.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ПродажиОбороты.Номенклатура,
ПродажиОбороты.КоличествоОборот / РабочиеДниНаличия.Значение КАК СкоростьПродажи
ИЗ
РегистрНакопления.Продажи.Обороты(&Начало, &Окончание, , ) КАК ПродажиОбороты
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РабочиеДниНаличия КАК РабочиеДниНаличия
ПО ПродажиОбороты.Номенклатура = РабочиеДниНаличия.Номенклатура
Задание выполнил с подглядывание в постановку задачи с видео решения.
ДЗ № 8 сделала
Домашнее задание выполнено.
Задача №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
ТОГДА “Дебиторка”
ИНАЧЕ “Кредиторка”
КОНЕЦ
УПОРЯДОЧИТЬ ПО
Сумма
ИТОГИ ПО
Вид
Добрый вечер! Задание выполнил. Делал на типовой конфигурации, используя пакетные запросы.
ДЗ 8. Часть 1 – готово. 6-ти этажка получилась..
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ГрафикиРаботы.Дата
ПОМЕСТИТЬ РабочиеДни
ИЗ
РегистрСведений.ГрафикиРаботы КАК ГрафикиРаботы
ГДЕ
ГрафикиРаботы.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
И ГрафикиРаботы.Значение = 1
И ГрафикиРаботы.ТипГрафика = &ТипГрафика
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ОстаткиТоваровОстаткиИОбороты.Период,
ОстаткиТоваровОстаткиИОбороты.Номенклатура,
ОстаткиТоваровОстаткиИОбороты.КоличествоКонечныйОстаток
ПОМЕСТИТЬ ОстаткиТоваров
ИЗ
РегистрНакопления.ОстаткиТоваров.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, День, ДвиженияИГраницыПериода, ) КАК ОстаткиТоваровОстаткиИОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ПродажиОбороты.Номенклатура,
ПродажиОбороты.КоличествоОборот
ПОМЕСТИТЬ Продажи
ИЗ
РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ПродажиОбороты
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
РабочиеДни.Дата КАК РабочийДень,
МАКСИМУМ(ОстаткиТоваров.Период) КАК ДатаОстатка,
ОстаткиТоваров.Номенклатура КАК Номенклатура
ПОМЕСТИТЬ ДатыОстатковНоменклатуры
ИЗ
ОстаткиТоваров КАК ОстаткиТоваров
ЛЕВОЕ СОЕДИНЕНИЕ РабочиеДни КАК РабочиеДни
ПО ОстаткиТоваров.Период <= РабочиеДни.Дата
СГРУППИРОВАТЬ ПО
РабочиеДни.Дата,
ОстаткиТоваров.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ДатыОстатковНоменклатуры.Номенклатура КАК Номенклатура,
СУММА(ВЫБОР
КОГДА ОстаткиТоваров.КоличествоКонечныйОстаток > 0
ТОГДА 1
ИНАЧЕ 0
КОНЕЦ) КАК НаличиеТовара
ПОМЕСТИТЬ НаличиеНаСкладеДней
ИЗ
ДатыОстатковНоменклатуры КАК ДатыОстатковНоменклатуры
ЛЕВОЕ СОЕДИНЕНИЕ ОстаткиТоваров КАК ОстаткиТоваров
ПО ДатыОстатковНоменклатуры.ДатаОстатка = ОстаткиТоваров.Период
И ДатыОстатковНоменклатуры.Номенклатура = ОстаткиТоваров.Номенклатура
СГРУППИРОВАТЬ ПО
ДатыОстатковНоменклатуры.Номенклатура
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
НаличиеНаСкладеДней.Номенклатура,
НаличиеНаСкладеДней.НаличиеТовара КАК ДнейПрисутствияНаСкладе,
СУММА(Продажи.КоличествоОборот) КАК Продано,
СУММА(Продажи.КоличествоОборот / НаличиеНаСкладеДней.НаличиеТовара) КАК СкоростьПродаж
ИЗ
НаличиеНаСкладеДней КАК НаличиеНаСкладеДней
ЛЕВОЕ СОЕДИНЕНИЕ Продажи КАК Продажи
ПО НаличиеНаСкладеДней.Номенклатура = Продажи.Номенклатура
СГРУППИРОВАТЬ ПО
НаличиеНаСкладеДней.Номенклатура,
НаличиеНаСкладеДней.НаличиеТовара
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
КОНЕЦ) КАК Кредиторка
ИЗ
Данные КАК Данные
СГРУППИРОВАТЬ ПО
Данные.Контрагент
УПОРЯДОЧИТЬ ПО
Данные.Контрагент
ДЗ 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 * ДляИтогов.Дата) КАК Кредит
ИЗ
ДляИтогов КАК ДляИтогов
СГРУППИРОВАТЬ ПО
ДляИтогов.Контрагент
ИТОГИ
СУММА(Дебет),
СУММА(Кредит)
ПО
ОБЩИЕ
Готово.