|
ПостроительОтчета | ☑ | ||
---|---|---|---|---|
0
first_may
30.11.13
✎
00:41
|
Добрый вечер.
Из отчета ВедомостьПартииТоваровНаСкладах сделал внешний отчет. В процедуре УстановитьНачальныеНастройкиУпр изменил запрос. Если выполнить его в консоле запросов, то результат будет отличаться от результата, который дает сам отчет. Подскажите пожалуйста, почему такое происходит? |
|||
1
Ksandr
30.11.13
✎
01:21
|
Давайте призовем экстрасенсов в ветку :)
|
|||
2
first_may
30.11.13
✎
01:29
|
(1) Это нормально, но я даже и незнаю как объяснить :). Если на пальцах, то есть документы ПоступлениеТоваровУслуг. На их основании делается ПеремещениеТоваров. Вот в ведомости партий товаров на складах надо вместо тех поступлений, на основании которых есть перемещение, выводить их, а иначе оставить поступления (сделать замену документов).
|
|||
3
Ksandr
30.11.13
✎
01:35
|
я бы отладчиком смотрел. После вызова Построитель.Выполнить() shift+F9 и там "Построитель.Результат.Выгрузить()"
|
|||
4
Ksandr
30.11.13
✎
01:35
|
Не видя конфигурации и отчета сложно что то определенное сказать
|
|||
5
first_may
30.11.13
✎
01:42
|
(4) я прекрасно это понимаю. Вот на рисунке:
http://yadi.sk/d/arDr4qLUDYPtH видно что информация замножается :). Не могу понять в чем проблема. |
|||
6
Ksandr
30.11.13
✎
01:45
|
(5) Предполагаю что в соединениях запроса. Возможно в "необязательных" соединениях {...} которые в консоли могут не обрабатываться, например
|
|||
7
first_may
30.11.13
✎
01:48
|
(6) Точно. Я упустил это. Вот запрос, но я не знаю как добавить туда соединение:
ВЫБРАТЬ РАЗРЕШЕННЫЕ РАЗЛИЧНЫЕ ИсточникДанных.Номенклатура КАК Номенклатура, ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Номенклатура), ИсточникДанных.Склад КАК Склад, ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Склад), ИсточникДанных.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, ПРЕДСТАВЛЕНИЕ(ИсточникДанных.ХарактеристикаНоменклатуры), ИсточникДанных.СерияНоменклатуры КАК СерияНоменклатуры, ПРЕДСТАВЛЕНИЕ(ИсточникДанных.СерияНоменклатуры), ВЫБОР КОГДА ВложенныйЗапрос.ПеремещениеТоваров ЕСТЬ NULL ТОГДА ИсточникДанных.ДокументОприходования ИНАЧЕ ВложенныйЗапрос.ПеремещениеТоваров КОНЕЦ КАК ДокументОприходования, ВЫБОР КОГДА ВложенныйЗапрос.ПеремещениеТоваров ЕСТЬ NULL ТОГДА ПРЕДСТАВЛЕНИЕ(ИсточникДанных.ДокументОприходования) ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ПеремещениеТоваров) КОНЕЦ КАК ДокументОприходованияПредставление, ИсточникДанных.СтатусПартии КАК СтатусПартии, ПРЕДСТАВЛЕНИЕ(ИсточникДанных.СтатусПартии), ИсточникДанных.Заказ КАК Заказ, ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Заказ), ИсточникДанных.Качество КАК Качество, ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Качество), ИсточникДанных.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоНачальныйОстатокВЕдиницахДляОтчетов, ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоНачальныйОстатокВБазовыхЕдиницах, ИсточникДанных.КоличествоПриход КАК КоличествоПриход, ИсточникДанных.КоличествоПриход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоПриходВЕдиницахДляОтчетов, ИсточникДанных.КоличествоПриход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоПриходВБазовыхЕдиницах, ИсточникДанных.КоличествоРасход КАК КоличествоРасход, ИсточникДанных.КоличествоРасход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоРасходВЕдиницахДляОтчетов, ИсточникДанных.КоличествоРасход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоРасходВБазовыхЕдиницах, ИсточникДанных.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток, ИсточникДанных.КоличествоКонечныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК КоличествоКонечныйОстатокВЕдиницахДляОтчетов, ИсточникДанных.КоличествоКонечныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК КоличествоКонечныйОстатокВБазовыхЕдиницах, ИсточникДанных.СтоимостьНачальныйОстаток КАК СтоимостьНачальныйОстаток, ИсточникДанных.СтоимостьПриход КАК СтоимостьПриход, ИсточникДанных.СтоимостьРасход КАК СтоимостьРасход, ИсточникДанных.СтоимостьКонечныйОстаток КАК СтоимостьКонечныйОстаток, ВЫБОР КОГДА ВложенныйЗапрос.ПеремещениеТоваров ЕСТЬ NULL ТОГДА ИсточникДанных.Регистратор ИНАЧЕ ВложенныйЗапрос.ПеремещениеТоваров КОНЕЦ КАК Регистратор, ВЫБОР КОГДА ВложенныйЗапрос.ПеремещениеТоваров ЕСТЬ NULL ТОГДА ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Регистратор) ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.ПеремещениеТоваров) КОНЕЦ КАК РегистраторПредставление, ВЫБОР КОГДА ВложенныйЗапрос.ПеремещениеТоваров ЕСТЬ NULL ТОГДА ИсточникДанных.Период ИНАЧЕ ВложенныйЗапрос.Дата КОНЕЦ КАК Период, ВЫБОР КОГДА ВложенныйЗапрос.ПеремещениеТоваров ЕСТЬ NULL ТОГДА НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ДЕНЬ) ИНАЧЕ НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Дата, ДЕНЬ) КОНЕЦ КАК ПериодДень, ВЫБОР КОГДА ВложенныйЗапрос.ПеремещениеТоваров ЕСТЬ NULL ТОГДА НАЧАЛОПЕРИОДА(ИсточникДанных.Период, НЕДЕЛЯ) ИНАЧЕ НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Дата, НЕДЕЛЯ) КОНЕЦ КАК ПериодНеделя, ВЫБОР КОГДА ВложенныйЗапрос.ПеремещениеТоваров ЕСТЬ NULL ТОГДА НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ДЕКАДА) ИНАЧЕ НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Дата, ДЕКАДА) КОНЕЦ КАК ПериодДекада, ВЫБОР КОГДА ВложенныйЗапрос.ПеремещениеТоваров ЕСТЬ NULL ТОГДА НАЧАЛОПЕРИОДА(ИсточникДанных.Период, МЕСЯЦ) ИНАЧЕ НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Дата, МЕСЯЦ) КОНЕЦ КАК ПериодМесяц, ВЫБОР КОГДА ВложенныйЗапрос.ПеремещениеТоваров ЕСТЬ NULL ТОГДА НАЧАЛОПЕРИОДА(ИсточникДанных.Период, КВАРТАЛ) ИНАЧЕ НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Дата, КВАРТАЛ) КОНЕЦ КАК ПериодКвартал, ВЫБОР КОГДА ВложенныйЗапрос.ПеремещениеТоваров ЕСТЬ NULL ТОГДА НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ПОЛУГОДИЕ) ИНАЧЕ НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Дата, ПОЛУГОДИЕ) КОНЕЦ КАК ПериодПолугодие, ВЫБОР КОГДА ВложенныйЗапрос.ПеремещениеТоваров ЕСТЬ NULL ТОГДА НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ГОД) ИНАЧЕ НАЧАЛОПЕРИОДА(ВложенныйЗапрос.Дата, ГОД) КОНЕЦ КАК ПериодГод, ВложенныйЗапрос.ПеремещениеТоваров {ВЫБРАТЬ Номенклатура.*, Склад.*, ХарактеристикаНоменклатуры.*, СерияНоменклатуры.*, ДокументОприходования.*, СтатусПартии.*, Заказ.*, Качество.*, КоличествоНачальныйОстаток, КоличествоНачальныйОстатокВЕдиницахДляОтчетов, КоличествоНачальныйОстатокВБазовыхЕдиницах, КоличествоПриход, КоличествоПриходВЕдиницахДляОтчетов, КоличествоПриходВБазовыхЕдиницах, КоличествоРасход, КоличествоРасходВЕдиницахДляОтчетов, КоличествоРасходВБазовыхЕдиницах, КоличествоКонечныйОстаток, КоличествоКонечныйОстатокВЕдиницахДляОтчетов, КоличествоКонечныйОстатокВБазовыхЕдиницах, СтоимостьНачальныйОстаток, СтоимостьПриход, СтоимостьРасход, СтоимостьКонечныйОстаток, Регистратор.*, Период, ПериодДень, ПериодНеделя, ПериодДекада, ПериодМесяц, ПериодКвартал, ПериодПолугодие, ПериодГод} ИЗ РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(&ДатаНач, &ДатаКон, Регистратор {(&Периодичность)}, , {(Номенклатура).* КАК Номенклатура, (Склад).* КАК Склад, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры, (СерияНоменклатуры).* КАК СерияНоменклатуры, (ДокументОприходования).* КАК ДокументОприходования, (СтатусПартии).* КАК СтатусПартии, (Заказ).* КАК Заказ, (Качество).* КАК Качество}) КАК ИсточникДанных ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РАЗЛИЧНЫЕ ПоступлениеТоваровУслугТовары.Ссылка КАК ПоступлениеТоваровУслуг, ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, ПеремещениеТоваровТовары.Ссылка КАК ПеремещениеТоваров, МИНИМУМ(ПеремещениеТоваровТовары.Ссылка.Дата) КАК Дата ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары ПО ПоступлениеТоваровУслугТовары.Ссылка.Ссылка = ПеремещениеТоваровТовары.Ссылка.ДокументОприходования.Ссылка И ПоступлениеТоваровУслугТовары.Номенклатура = ПеремещениеТоваровТовары.Номенклатура СГРУППИРОВАТЬ ПО ПоступлениеТоваровУслугТовары.Ссылка, ПоступлениеТоваровУслугТовары.Номенклатура, ПеремещениеТоваровТовары.Ссылка ИМЕЮЩИЕ КОЛИЧЕСТВО(ПеремещениеТоваровТовары.Ссылка) > 0) КАК ВложенныйЗапрос ПО ИсточникДанных.Регистратор.Ссылка = ВложенныйЗапрос.ПоступлениеТоваровУслуг.Ссылка И ИсточникДанных.Номенклатура = ВложенныйЗапрос.Номенклатура {ГДЕ ИсточникДанных.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток, (ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент) КАК КоличествоНачальныйОстатокВЕдиницахДляОтчетов, (ИсточникДанных.КоличествоНачальныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК КоличествоНачальныйОстатокВБазовыхЕдиницах, ИсточникДанных.КоличествоПриход КАК КоличествоПриход, (ИсточникДанных.КоличествоПриход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент) КАК КоличествоПриходВЕдиницахДляОтчетов, (ИсточникДанных.КоличествоПриход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК КоличествоПриходВБазовыхЕдиницах, ИсточникДанных.КоличествоРасход КАК КоличествоРасход, (ИсточникДанных.КоличествоРасход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент) КАК КоличествоРасходВЕдиницахДляОтчетов, (ИсточникДанных.КоличествоРасход * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК КоличествоРасходВБазовыхЕдиницах, ИсточникДанных.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток, (ИсточникДанных.КоличествоКонечныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ИсточникДанных.Номенклатура.ЕдиницаДляОтчетов.Коэффициент) КАК КоличествоКонечныйОстатокВЕдиницахДляОтчетов, (ИсточникДанных.КоличествоКонечныйОстаток * ИсточникДанных.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК КоличествоКонечныйОстатокВБазовыхЕдиницах, ИсточникДанных.СтоимостьНачальныйОстаток КАК СтоимостьНачальныйОстаток, ИсточникДанных.СтоимостьПриход КАК СтоимостьПриход, ИсточникДанных.СтоимостьРасход КАК СтоимостьРасход, ИсточникДанных.СтоимостьКонечныйОстаток КАК СтоимостьКонечныйОстаток, ИсточникДанных.Регистратор.* КАК Регистратор, ИсточникДанных.Период КАК Период, (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ДЕНЬ)) КАК ПериодДень, (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, НЕДЕЛЯ)) КАК ПериодНеделя, (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ДЕКАДА)) КАК ПериодДекада, (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, МЕСЯЦ)) КАК ПериодМесяц, (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, КВАРТАЛ)) КАК ПериодКвартал, (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ПОЛУГОДИЕ)) КАК ПериодПолугодие, (НАЧАЛОПЕРИОДА(ИсточникДанных.Период, ГОД)) КАК ПериодГод} {УПОРЯДОЧИТЬ ПО Номенклатура.*, Склад.*, ХарактеристикаНоменклатуры.*, СерияНоменклатуры.*, ДокументОприходования.*, СтатусПартии.*, Заказ.*, Качество.*, КоличествоНачальныйОстаток, КоличествоНачальныйОстатокВЕдиницахДляОтчетов, КоличествоНачальныйОстатокВБазовыхЕдиницах, КоличествоПриход, КоличествоПриходВЕдиницахДляОтчетов, КоличествоПриходВБазовыхЕдиницах, КоличествоРасход, КоличествоРасходВЕдиницахДляОтчетов, КоличествоРасходВБазовыхЕдиницах, КоличествоКонечныйОстаток, КоличествоКонечныйОстатокВЕдиницахДляОтчетов, КоличествоКонечныйОстатокВБазовыхЕдиницах, СтоимостьНачальныйОстаток, СтоимостьПриход, СтоимостьРасход, СтоимостьКонечныйОстаток, Регистратор.*, Период, ПериодДень, ПериодНеделя, ПериодДекада, ПериодМесяц, ПериодКвартал, ПериодПолугодие, ПериодГод} ИТОГИ СУММА(КоличествоНачальныйОстаток), СУММА(КоличествоНачальныйОстатокВЕдиницахДляОтчетов), СУММА(КоличествоНачальныйОстатокВБазовыхЕдиницах), СУММА(КоличествоПриход), СУММА(КоличествоПриходВЕдиницахДляОтчетов), СУММА(КоличествоПриходВБазовыхЕдиницах), СУММА(КоличествоРасход), СУММА(КоличествоРасходВЕдиницахДляОтчетов), СУММА(КоличествоРасходВБазовыхЕдиницах), СУММА(КоличествоКонечныйОстаток), СУММА(КоличествоКонечныйОстатокВЕдиницахДляОтчетов), СУММА(КоличествоКонечныйОстатокВБазовыхЕдиницах), СУММА(СтоимостьНачальныйОстаток), СУММА(СтоимостьПриход), СУММА(СтоимостьРасход), СУММА(СтоимостьКонечныйОстаток) ПО ОБЩИЕ {ИТОГИ ПО Номенклатура.*, Склад.*, ХарактеристикаНоменклатуры.*, СерияНоменклатуры.*, ДокументОприходования.*, СтатусПартии.*, Заказ.*, Качество.*, Регистратор.*, Период, ПериодДень, ПериодНеделя, ПериодДекада, ПериодМесяц, ПериодКвартал, ПериодПолугодие, ПериодГод} |
|||
8
first_may
30.11.13
✎
01:51
|
(6) я использую левое соединение к регистру, а как внести это соединение в
{ГДЕ ... } незнаю :(. |
|||
9
first_may
30.11.13
✎
01:53
|
(6) повторить в {} то, что я использую в основном запросе?
|
|||
10
sanja26
30.11.13
✎
02:03
|
начал сразу на скд отчеты писать, к построителю стойкое неприятие почему-то
можно добавить группировку в запрос |
|||
11
France
30.11.13
✎
02:04
|
(10) ++
|
|||
12
first_may
30.11.13
✎
02:08
|
(10) сам использую СКД, но тут подумал, что изменить запрос и все, а оказалось не совсем. Но писать новое нет времени, поэтому хотелось бы этот вариант доделать. Так что, мне повторить в {} то, что я использую в основном запросе?
|
|||
13
hhhh
30.11.13
✎
03:07
|
(12) размножение бывает, когда в ПО чего-то забыл вставить
например у вас ПО ИсточникДанных.Регистратор.Ссылка = ВложенныйЗапрос.ПоступлениеТоваровУслуг.Ссылка И ИсточникДанных.Номенклатура = ВложенныйЗапрос.Номенклатура соединение по регистратору и номенклатуре. значит этого недостаточно, что-то еще забыл, по чему соединяется |
|||
14
first_may
30.11.13
✎
17:30
|
(13) я знаю про это, но в консоле запросов, выполняя этот запрос, получаю нужный результат. Мне кажется, что в (6) сказано то, из за чего может быть "размножение", но как добавить соединениев {} я не знаю. Подскажите пожалуйста как это сделать?
|
|||
15
m-serg74
30.11.13
✎
17:44
|
(14)
группируешь по ПеремещениеТоваровТовары.Ссылка? а получаешь МИНИМУМ(ПеремещениеТоваровТовары.Ссылка.Дата)? сколько будет перемещений на столько и размножится левая часть |
|||
16
first_may
30.11.13
✎
17:50
|
(15) А как сделать правильно следующее: на основании ПоступлениеТоваровУслуг делаются ПеремещениеТоваров. Вот в ведомости партий товаров на складах надо вместо тех поступлений, на основании которых есть перемещение, выводить ПЕРВОЕ из них по времени, а иначе оставить поступления.
|
|||
17
m-serg74
30.11.13
✎
17:54
|
(16) /ПЕРВОЕ из них по времени/
правую часть группировать по другому |
|||
18
first_may
30.11.13
✎
17:58
|
(17) да, первое по времени. как группировать по другому?
|
|||
19
m-serg74
30.11.13
✎
18:01
|
(18)
как то вот так: ВЫБРАТЬ
|
|||
20
m-serg74
30.11.13
✎
18:03
|
ПеремещениеТоваровТовары.ДокументОприходования
здесь наверное .Ссылка пропустил просто у меня нету в Перемещениях ни в ТЧ ни в шапке ДокументОприходования ПеремещениеТоваровТовары.Ссылка.ДокументОприходования |
|||
21
m-serg74
30.11.13
✎
18:15
|
(18) блин Дату в соединение забыл вставить
|
|||
22
first_may
30.11.13
✎
18:35
|
(20) да, это мой реквизит. сейчас адаптирую под себя.
|
|||
23
first_may
30.11.13
✎
20:43
|
(21) да, получилось с перемещениями, но в ведомости все равно много задвоений. может надо добавить условие в "необязательных" соединениях {...}
|
|||
24
m-serg74
30.11.13
✎
21:10
|
(23) /но в ведомости все равно много задвоений/
что задваивает выясни |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |