Имя: Пароль:
1C
1С v8
УТ 10.2. Переделанная. Регистр накоплений «Заказы покупателей»
0 sol
 
03.10.11
09:39
Уважаемые форумчане!



Есть отчет, который выдает состояние количества регистра накопления ЗаказыПокупателей на текущую дату, а не на дату окончания периода отчета. Например, сегодня 03.10.2011, а в отчете задан период на 1 полугодие 2011. Так отчет будет выдавать количество не на 30.06.2011, а на сегодняшний день. А мне нужны данные на конец заданного периода.


Ниже привожу текст запроса:



Текст = "ВЫБРАТЬ

| СУММА(ТаблицаРегистра.КоличествоОборот) КАК Количество,
| СУММА(ТаблицаРегистра.КоличествоОборот * ТаблицаРегистра.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК КоличествоБазовыхЕд,
| СУММА(ТаблицаРегистра.СтоимостьОборот) КАК Стоимость,
| СУММА(ЕСТЬNULL(ТаблицаРегистраСебестоимость.СтоимостьОборот, 0) + ЕСТЬNULL(ТаблицаРегистраСебестоимостьКорректировка.СтоимостьОборот, 0)) КАК Себестоимость,
| СУММА(ТаблицаРегистра.СтоимостьОборот - ЕСТЬNULL(ТаблицаРегистраСебестоимость.СтоимостьОборот, 0) - ЕСТЬNULL(ТаблицаРегистраСебестоимостьКорректировка.СтоимостьОборот, 0)) КАК ВаловаяПрибыль,
| ВЫРАЗИТЬ(ВЫБОР
| КОГДА СУММА(ТаблицаРегистра.КоличествоОборот) <> 0
| ТОГДА СУММА(ТаблицаРегистра.СтоимостьОборот) / СУММА(ТаблицаРегистра.КоличествоОборот)
| ИНАЧЕ ""-""
| КОНЕЦ КАК ЧИСЛО(15, 2)) КАК ЦенаПрод,
| ВЫРАЗИТЬ(ВЫБОР
| КОГДА СУММА(ТаблицаРегистра.КоличествоОборот) <> 0
| ТОГДА СУММА(ЕСТЬNULL(ТаблицаРегистраСебестоимость.СтоимостьОборот, 0) + ЕСТЬNULL(ТаблицаРегистраСебестоимостьКорректировка.СтоимостьОборот, 0)) / СУММА(ТаблицаРегистра.КоличествоОборот)
| ИНАЧЕ ""-""
| КОНЕЦ КАК ЧИСЛО(15, 2)) КАК ЦенаСеб,
| ВЫРАЗИТЬ(ВЫБОР
| КОГДА СУММА(ТаблицаРегистра.СтоимостьОборот) <> 0
| ТОГДА СУММА(100 * (ТаблицаРегистра.СтоимостьОборот - ЕСТЬNULL(ТаблицаРегистраСебестоимость.СтоимостьОборот, 0) - ЕСТЬNULL(ТаблицаРегистраСебестоимостьКорректировка.СтоимостьОборот, 0))) / СУММА(ТаблицаРегистра.СтоимостьОборот)
| ИНАЧЕ ""-""
| КОНЕЦ КАК ЧИСЛО(15, 2)) КАК РентабельностьПродаж,
| ТаблицаРегистра.ДоговорКонтрагента.Владелец КАК Покупатель,
| ТаблицаРегистра.Номенклатура КАК Номенклатура,
| ТаблицаРегистра.Номенклатура.БазоваяЕдиницаИзмерения КАК НоменклатураБазоваяЕдиницаИзмерения,
| ВЫБОР
| КОГДА РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток = РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ТОГДА ""Не оплачено""
| КОГДА РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток > 0
| ТОГДА ""Оплачено частично""
| КОГДА РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток = 0
| ИЛИ РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток ЕСТЬ NULL
| ТОГДА ""Оплачено полностью""
| ИНАЧЕ ""Переплата""
| КОНЕЦ КАК СостояниеОплаты,
| ВЫБОР
| КОГДА ЗаказыПокупателейОстатки.КоличествоОстаток = 0
| ИЛИ ЗаказыПокупателейОстатки.КоличествоОстаток ЕСТЬ NULL
| ТОГДА ""Отгружено полностью""
| ИНАЧЕ ВЫБОР
| КОГДА ЗаказыПокупателейОстатки.КоличествоОстаток > 0
| ТОГДА ""Отгружено частично""
| ИНАЧЕ ""Отгружен излишек""
| КОНЕЦ
| КОНЕЦ КАК СостояниеОтгрузки,
| ВЫБОР
| КОГДА ТаблицаРегистра.ЗаказПокупателя.ВалютаДокумента = &Рубли
| ТОГДА ТаблицаРегистра.ЗаказПокупателя.СуммаДокумента
| ИНАЧЕ ВЫРАЗИТЬ(ТаблицаРегистра.ЗаказПокупателя.СуммаДокумента * ТаблицаРегистра.ЗаказПокупателя.КурсВзаиморасчетов КАК ЧИСЛО(15, 2))
| КОНЕЦ КАК СуммаЗаказаУпр
|{ВЫБРАТЬ
| ТаблицаРегистра.ДоговорКонтрагента.Владелец.* КАК Покупатель,
| ТаблицаРегистра.ДоговорКонтрагента.* КАК ДоговорКонтрагента,
| ТаблицаРегистра.ЗаказПокупателя.* КАК ЗаказПокупателя,
| ТаблицаРегистра.Номенклатура.* КАК Номенклатура,
| ТаблицаРегистра.Номенклатура.БазоваяЕдиницаИзмерения.* КАК НоменклатураБазоваяЕдиницаИзмерения,
| ТаблицаРегистра.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
| ТаблицаРегистра.ДокументПродажи.* КАК ДокументПродажи,
| ТаблицаРегистра.Подразделение.* КАК Подразделение,
| ТаблицаРегистра.Период,
| ТаблицаРегистра.Регистратор.* КАК Регистратор,
| (НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ДЕНЬ)) КАК ПериодДень,
| (НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, НЕДЕЛЯ)) КАК ПериодНеделя,
| (НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, МЕСЯЦ)) КАК ПериодМесяц,
| (НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, КВАРТАЛ)) КАК ПериодКвартал,
| (НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ГОД)) КАК ПериодГод,
| СостояниеОтгрузки,
| СостояниеОплаты,
| СуммаЗаказаУпр}
|ИЗ
| РегистрНакопления.Продажи.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК ТаблицаРегистра
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость.Обороты(&ДатаНач, &ДатаКон, Регистратор, ) КАК ТаблицаРегистраСебестоимость
| ПО ТаблицаРегистра.Номенклатура = ТаблицаРегистраСебестоимость.Номенклатура
| И ТаблицаРегистра.ХарактеристикаНоменклатуры = ТаблицаРегистраСебестоимость.ХарактеристикаНоменклатуры
| И ТаблицаРегистра.ЗаказПокупателя = ТаблицаРегистраСебестоимость.ЗаказПокупателя
| И ТаблицаРегистра.Подразделение = ТаблицаРегистраСебестоимость.Подразделение
| И ТаблицаРегистра.Регистратор = ТаблицаРегистраСебестоимость.Регистратор
| ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| СУММА(ПродажиСебестоимость.Стоимость) КАК СтоимостьОборот,
| ПродажиСебестоимость.Номенклатура КАК Номенклатура,
| ПродажиСебестоимость.ДокументДвижения КАК ДокументДвижения,
| ПродажиСебестоимость.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ПродажиСебестоимость.ЗаказПокупателя КАК ЗаказПокупателя,
| ПродажиСебестоимость.Подразделение КАК Подразделение
| ИЗ
| РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость
|
| СГРУППИРОВАТЬ ПО
| ПродажиСебестоимость.Номенклатура,
| ПродажиСебестоимость.ДокументДвижения,
| ПродажиСебестоимость.ХарактеристикаНоменклатуры,
| ПродажиСебестоимость.ЗаказПокупателя,
| ПродажиСебестоимость.Подразделение) КАК ТаблицаРегистраСебестоимостьКорректировка
| ПО (ТаблицаРегистраСебестоимостьКорректировка.Номенклатура = ТаблицаРегистра.Номенклатура)
| И (ТаблицаРегистраСебестоимостьКорректировка.ХарактеристикаНоменклатуры = ТаблицаРегистра.ХарактеристикаНоменклатуры)
| И (ТаблицаРегистраСебестоимостьКорректировка.ЗаказПокупателя = ТаблицаРегистра.ЗаказПокупателя)
| И (ТаблицаРегистраСебестоимостьКорректировка.Подразделение = ТаблицаРегистра.Подразделение)
| И (ТаблицаРегистраСебестоимостьКорректировка.ДокументДвижения = ТаблицаРегистра.Регистратор)
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПокупателей.Остатки(&ДатаКон, ) КАК ЗаказыПокупателейОстатки
| ПО ТаблицаРегистра.ЗаказПокупателя = ЗаказыПокупателейОстатки.ЗаказПокупателя
| И ТаблицаРегистра.Номенклатура = ЗаказыПокупателейОстатки.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКонтрагентами.ОстаткиИОбороты КАК РасчетыСКонтрагентамиОстаткиИОбороты
| ПО ТаблицаРегистра.ЗаказПокупателя = РасчетыСКонтрагентамиОстаткиИОбороты.Сделка
| И ТаблицаРегистра.ДоговорКонтрагента = РасчетыСКонтрагентамиОстаткиИОбороты.ДоговорКонтрагента
|{ГДЕ
| ТаблицаРегистра.ДоговорКонтрагента.Владелец.* КАК Покупатель,
| ТаблицаРегистра.ДоговорКонтрагента.* КАК ДоговорКонтрагента,
| ТаблицаРегистра.ЗаказПокупателя.* КАК ЗаказПокупателя,
| ТаблицаРегистра.Номенклатура.* КАК Номенклатура,
| ТаблицаРегистра.Номенклатура.БазоваяЕдиницаИзмерения.* КАК НоменклатураБазоваяЕдиницаИзмерения,
| ТаблицаРегистра.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
| ТаблицаРегистра.ДокументПродажи.* КАК ДокументПродажи,
| ТаблицаРегистра.Подразделение.* КАК Подразделение,
| ТаблицаРегистра.Период,
| ТаблицаРегистра.Регистратор.* КАК Регистратор,
| (ВЫБОР
| КОГДА ЗаказыПокупателейОстатки.КоличествоОстаток = 0
| ИЛИ ЗаказыПокупателейОстатки.КоличествоОстаток ЕСТЬ NULL
| ТОГДА ""Отгружено полностью""
| ИНАЧЕ ""Отгружено частично""
| КОНЕЦ) КАК СостояниеОтгрузки,
| (ВЫБОР
| КОГДА РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток = РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ТОГДА ""Не оплачено""
| КОГДА РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток > 0
| ТОГДА ""Оплачено частично""
| КОГДА РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток = 0
| ИЛИ РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток ЕСТЬ NULL
| ТОГДА ""Оплачено полностью""
| ИНАЧЕ ""Переплата""
| КОНЕЦ) КАК СостояниеОплаты}
|
|СГРУППИРОВАТЬ ПО
| ТаблицаРегистра.ДоговорКонтрагента.Владелец,
| ТаблицаРегистра.Номенклатура,
| ТаблицаРегистра.Номенклатура.БазоваяЕдиницаИзмерения,
| ВЫБОР
| КОГДА ЗаказыПокупателейОстатки.КоличествоОстаток = 0
| ИЛИ ЗаказыПокупателейОстатки.КоличествоОстаток ЕСТЬ NULL
| ТОГДА ""Отгружено полностью""
| ИНАЧЕ ВЫБОР
| КОГДА ЗаказыПокупателейОстатки.КоличествоОстаток > 0
| ТОГДА ""Отгружено частично""
| ИНАЧЕ ""Отгружен излишек""
| КОНЕЦ
| КОНЕЦ,
| ВЫБОР
| КОГДА РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток = 0
| ИЛИ РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток ЕСТЬ NULL
| ТОГДА ""Оплачено полностью""
| ИНАЧЕ ВЫБОР
| КОГДА РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток > 0
| ТОГДА ""Оплачено частично""
| ИНАЧЕ ""Переплата""
| КОНЕЦ
| КОНЕЦ,
| ВЫБОР
| КОГДА РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток = РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход
| ТОГДА ""Не оплачено""
| КОГДА РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток > 0
| ТОГДА ""Оплачено частично""
| КОГДА РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток = 0
| ИЛИ РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток ЕСТЬ NULL
| ТОГДА ""Оплачено полностью""
| ИНАЧЕ ""Переплата""
| КОНЕЦ,
| ВЫБОР
| КОГДА ТаблицаРегистра.ЗаказПокупателя.ВалютаДокумента = &Рубли
| ТОГДА ТаблицаРегистра.ЗаказПокупателя.СуммаДокумента
| ИНАЧЕ ВЫРАЗИТЬ(ТаблицаРегистра.ЗаказПокупателя.СуммаДокумента * ТаблицаРегистра.ЗаказПокупателя.КурсВзаиморасчетов КАК ЧИСЛО(15, 2))
| КОНЕЦ
|{УПОРЯДОЧИТЬ ПО
| ТаблицаРегистра.ДоговорКонтрагента.Владелец.* КАК Покупатель,
| ТаблицаРегистра.ДоговорКонтрагента.* КАК ДоговорКонтрагента,
| ТаблицаРегистра.ЗаказПокупателя.* КАК ЗаказПокупателя,
| ТаблицаРегистра.Номенклатура.* КАК Номенклатура,
| ТаблицаРегистра.Номенклатура.БазоваяЕдиницаИзмерения.* КАК НоменклатураБазоваяЕдиницаИзмерения,
| ТаблицаРегистра.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
| ТаблицаРегистра.ДокументПродажи.* КАК ДокументПродажи,
| ТаблицаРегистра.Подразделение.* КАК Подразделение,
| ТаблицаРегистра.Период,
| ТаблицаРегистра.Регистратор.* КАК Регистратор,
| СостояниеОтгрузки,
| СостояниеОплаты}
|ИТОГИ
| СУММА(Количество),
| СУММА(КоличествоБазовыхЕд),
| СУММА(Стоимость),
| СУММА(Себестоимость),
| СУММА(ВаловаяПрибыль),
| ВЫБОР
| КОГДА СУММА(Количество) <> 0
| ТОГДА СУММА(Стоимость) / СУММА(Количество)
| ИНАЧЕ ""-""
| КОНЕЦ КАК ЦенаПрод,
| ВЫБОР
| КОГДА СУММА(Количество) <> 0
| ТОГДА СУММА(Себестоимость) / СУММА(Количество)
| ИНАЧЕ ""-""
| КОНЕЦ КАК ЦенаСеб,
| ВЫБОР
| КОГДА СУММА(Стоимость) <> 0
| ТОГДА 100 * (СУММА(Стоимость) - СУММА(Себестоимость)) / СУММА(Стоимость)
| ИНАЧЕ ""-""
| КОНЕЦ КАК РентабельностьПродаж
|ПО
| ОБЩИЕ,
| Покупатель,
| Номенклатура
|{ИТОГИ ПО
| Покупатель.* КАК Покупатель,
| ТаблицаРегистра.ДоговорКонтрагента.* КАК ДоговорКонтрагента,
| ТаблицаРегистра.ЗаказПокупателя.* КАК ЗаказПокупателя,
| Номенклатура.* КАК Номенклатура,
| НоменклатураБазоваяЕдиницаИзмерения.* КАК НоменклатураБазоваяЕдиницаИзмерения,
| ТаблицаРегистра.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
| ТаблицаРегистра.ДокументПродажи.* КАК ДокументПродажи,
| ТаблицаРегистра.Подразделение.* КАК Подразделение,
| (НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ДЕНЬ)) КАК ПериодДень,
| (НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, НЕДЕЛЯ)) КАК ПериодНеделя,
| (НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, МЕСЯЦ)) КАК ПериодМесяц,
| (НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, КВАРТАЛ)) КАК ПериодКвартал,
| (НАЧАЛОПЕРИОДА(ТаблицаРегистра.Период, ГОД)) КАК ПериодГод,
| СостояниеОтгрузки,
| СостояниеОплаты}
|АВТОУПОРЯДОЧИВАНИЕ";
1 ZOMI
 
03.10.11
09:48
как параметр &ДатаКон устанавливается ?
2 sol
 
03.10.11
09:56
(1) &ДатаКон соответствует концу заданного периода. Проверил в отладчике.
3 sol
 
03.10.11
11:07
(2) + Посмотрел в конструкторе запросов конструктор выражений. Слишком мало средств для маневра.
Может быть кто-нибудь намекнет хотя бы средства для решения этой проблемы?
4 sol
 
03.10.11
11:38
Или это может быть связано со свойствами данного регистра накопления?
5 poligraf
 
03.10.11
11:41
ИЗ
| РегистрНакопления.ПродажиСебестоимость КАК  ПродажиСебестоимость

Нашел одну таблицу, у которой период не задан
Может и другие есть
6 sol
 
03.10.11
13:03
(5) Посмотри в конструкторе запроса. Период для данной таблицы задан.
7 poligraf
 
03.10.11
14:56
(6) 1. Не буду я твой запрос в конструктор пихать, не хочется.
2. В тексте я вижу, что период не задан
3. Наши мнения не обязаны совпадать