|
Компоновка данных в Динамическом списке | ☑ | ||
---|---|---|---|---|
0
cmex
14.11.13
✎
10:40
|
Доброго времени суток, господа.
Ситуация такая: Типовая БП 3.0. При подборе номенклатуры в документы поступления или реализации, вываливается список номенклатуры с остатками. Вот запрос ВЫБРАТЬ СправочникНоменклатура.Ссылка КАК Номенклатура, ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК Валюта, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, ХозрасчетныйОстатки.Счет КАК СчетУчета ИЗ Справочник.Номенклатура КАК СправочникНоменклатура {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ДатаЦены)}, {(Номенклатура).* КАК Ссылка, (ТипЦен) КАК ТипЦен, (Валюта) КАК Валюта}) КАК ЦеныНоменклатурыСрезПоследних ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура} {ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки({(&ДатаОстатки)}, {(Счет).* КАК Счет}, {(&ВидыСубконто)}, {(ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Номенклатура, (Субконто2)}) КАК ХозрасчетныйОстатки ПО СправочникНоменклатура.Ссылка = ХозрасчетныйОстатки.Субконто1 И (ХозрасчетныйОстатки.КоличествоОстаток > 0)} ГДЕ НЕ СправочникНоменклатура.ЭтоГруппа И ВЫБОР КОГДА &ПоказыватьТолькоОстатки ТОГДА ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) > 0 ИНАЧЕ ИСТИНА КОНЕЦ И СправочникНоменклатура.омкБлокировка = ЛОЖЬ {ГДЕ СправочникНоменклатура.Ссылка.* КАК Номенклатура} Тут как мы видим таблицы остатков и цен необязательные и параметры в них тоже, то есть если данных нет,то они не подключаются. Мне же нужно в этот запрос добавить Остаток с учетом движений НЕПРОВЕДЕННЫХ документов. То есть, я дописал запрос,вот что получилось ВЫБРАТЬ СправочникНоменклатура.Ссылка КАК Номенклатура, ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК Валюта, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, ХозрасчетныйОстатки.Счет КАК СчетУчета, ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) + ЕСТЬNULL(ВложенныйЗапрос.Количество, 0) КАК КоличествоОстатокПП ИЗ Справочник.Номенклатура КАК СправочникНоменклатура {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ДатаЦены)}, {(Номенклатура).* КАК Ссылка, (ТипЦен) КАК ТипЦен, (Валюта) КАК Валюта}) КАК ЦеныНоменклатурыСрезПоследних ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура} {ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки({(&ДатаОстатки)}, {(Счет).* КАК Счет}, {(&ВидыСубконто)}, {(ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Номенклатура, (Субконто2)}) КАК ХозрасчетныйОстатки {ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВложенныйЗапрос.Склад КАК Склад, ВложенныйЗапрос.Номенклатура КАК Номенклатура, СУММА(ВложенныйЗапрос.Количество) КАК Количество ИЗ (ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Ссылка.Склад КАК Склад, ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, ПоступлениеТоваровУслугТовары.Количество КАК Количество ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ГДЕ ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ЛОЖЬ И ПоступлениеТоваровУслугТовары.Ссылка.ПометкаУдаления = ЛОЖЬ И ПоступлениеТоваровУслугТовары.Ссылка.Дата > &ДатаЗапрета И ВЫБОР КОГДА &ПоМоментуВремени ТОГДА ПоступлениеТоваровУслугТовары.Ссылка.МоментВремени < &МоментВремени ИНАЧЕ ПоступлениеТоваровУслугТовары.Ссылка.Дата < &РабочаяДата КОНЕЦ) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.Склад) КАК ВложенныйЗапрос ПО ХозрасчетныйОстатки.Субконто1 = ВложенныйЗапрос.Номенклатура И ХозрасчетныйОстатки.Субконто2 = ВложенныйЗапрос.Склад} ПО СправочникНоменклатура.Ссылка = ХозрасчетныйОстатки.Субконто1 И (ХозрасчетныйОстатки.КоличествоОстаток > 0)} ГДЕ НЕ СправочникНоменклатура.ЭтоГруппа И ВЫБОР КОГДА &ПоказыватьТолькоОстатки ТОГДА ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) > 0 ИНАЧЕ ИСТИНА КОНЕЦ И СправочникНоменклатура.омкБлокировка = ЛОЖЬ {ГДЕ СправочникНоменклатура.Ссылка.* КАК Номенклатура} В итоге, если Склад выбран,то все ОК, если нет, то валится с ошибкой "Ошибка обработки представления "РегистрБухгалтерии.Хозрасчетный.Остатки:Поле не найдено (Субконто2)" ЛЕВОЕ СОЕДИНЕНИЕ <<?>>РегистрБухгалтерии.Хозрасчетный.Остатки(&П, Счет НЕ В ИЕРАРХИИ(&П6), &П2, (Организация = &П4) И ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура).Услуга = &П5) КАК ХозрасчетныйОстатки" Просветите, пожалуйста, как починить? |
|||
1
cmex
14.11.13
✎
11:33
|
самбади хелп!
|
|||
2
cmex
14.11.13
✎
11:48
|
Попытался закинуть связь по Складу в условие, типа
ПО ХозрасчетныйОстатки.Субконто1 = ВложенныйЗапрос.Номенклатура И (ВЫБОР КОГДА &ЕстьСклад ТОГДА ХозрасчетныйОстатки.Субконто2 = ВложенныйЗапрос.Склад ИНАЧЕ ЛОЖЬ КОНЕЦ)} Не помогло( |
|||
3
Ofizer
14.11.13
✎
12:03
|
(2) в переменную &ВидыСубконто что передается?
|
|||
4
cmex
14.11.13
✎
12:30
|
(3) Номенклатура
|
|||
5
Euguln
14.11.13
✎
12:33
|
(4) а откуда там второе субконто возьмется, если в параметрах ВТ одно?
|
|||
6
cmex
14.11.13
✎
12:37
|
Вот кусок кода, ктр добавляет еще одно
Если ИспользоватьОтборПоСкладу Тогда Если ЗначениеЗаполнено(Склад) И ВедетсяУчетПоСкладам Тогда ВидыСубконто.Добавить(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады); ОтборыСписковКлиентСервер.ИзменитьЭлементОтбораСписка(СписокНоменклатуры, "Субконто2", Склад, Истина); КонецЕсли; КонецЕсли; |
|||
7
zladenuw
14.11.13
✎
12:38
|
(2) а там разве не Истину надо на Иначе ?
|
|||
8
cmex
14.11.13
✎
12:39
|
(7) пробовал и так, и так - нет разницы(
|
|||
9
zladenuw
14.11.13
✎
12:47
|
а вот это кусок ты сам писал ? (ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Номенклатура
может надо так же и со вторым субконто ? |
|||
10
cmex
14.11.13
✎
12:48
|
(9) нет, это было
|
|||
11
cmex
14.11.13
✎
12:49
|
Каким образом можно связь отключить или сделать эту связь необязательной? То есть, если нет субконто2, то убрать эту связь?
|
|||
12
cmex
14.11.13
✎
13:29
|
Победил))
ВЫБРАТЬ СправочникНоменклатура.Ссылка КАК Номенклатура, ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК КоличествоОстаток, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Валюта, ЗНАЧЕНИЕ(Справочник.Валюты.ПустаяСсылка)) КАК Валюта, ЕСТЬNULL(ЦеныНоменклатурыСрезПоследних.Цена, 0) КАК Цена, ХозрасчетныйОстатки.Счет КАК СчетУчета, ЕСТЬNULL(ДвиженияДокументов.Количество, 0) + ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) КАК КоличествоОстатокПП ИЗ Справочник.Номенклатура КАК СправочникНоменклатура {ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних({(&ДатаЦены)}, {(Номенклатура).* КАК Ссылка, (ТипЦен) КАК ТипЦен, (Валюта) КАК Валюта}) КАК ЦеныНоменклатурыСрезПоследних ПО СправочникНоменклатура.Ссылка = ЦеныНоменклатурыСрезПоследних.Номенклатура} {ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Остатки({(&ДатаОстатки)}, {(Счет).* КАК Счет}, {(&ВидыСубконто)}, {(ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)).* КАК Номенклатура, (Субконто2)}) КАК ХозрасчетныйОстатки ПО СправочникНоменклатура.Ссылка = ХозрасчетныйОстатки.Субконто1 И (ХозрасчетныйОстатки.КоличествоОстаток > 0)} {ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ВложенныйЗапрос.Номенклатура КАК Номенклатура, ВложенныйЗапрос.Количество КАК Количество ИЗ (ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, СУММА(ПоступлениеТоваровУслугТовары.Количество) КАК Количество ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ГДЕ ПоступлениеТоваровУслугТовары.Ссылка.ПометкаУдаления = ЛОЖЬ И ПоступлениеТоваровУслугТовары.Ссылка.Проведен = ЛОЖЬ И ПоступлениеТоваровУслугТовары.Ссылка.Дата > &ДатаЗапрета И ВЫБОР КОГДА &ПоМоментуВремени ТОГДА ПоступлениеТоваровУслугТовары.Ссылка.МоментВремени < &МоментВремени ИНАЧЕ ПоступлениеТоваровУслугТовары.Ссылка.Дата < &ДатаДокумента КОНЕЦ {ГДЕ ПоступлениеТоваровУслугТовары.Ссылка.Склад.*} СГРУППИРОВАТЬ ПО ПоступлениеТоваровУслугТовары.Номенклатура) КАК ВложенныйЗапрос) КАК ДвиженияДокументов ПО СправочникНоменклатура.Ссылка = ДвиженияДокументов.Номенклатура} ГДЕ НЕ СправочникНоменклатура.ЭтоГруппа И ВЫБОР КОГДА &ПоказыватьТолькоОстатки ТОГДА ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстаток, 0) > 0 ИНАЧЕ ИСТИНА КОНЕЦ И СправочникНоменклатура.омкБлокировка = ЛОЖЬ {ГДЕ СправочникНоменклатура.Ссылка.* КАК Номенклатура} Не к остаткам надо было подцеплять движения документов, а к справочнику номенклатуры,а отбор по складу в КД закинуть и связываться только по номенклатуре. Теперь покажет даже потенциальные остатки, даже если остатков нет, а НЕПРОВЕДЕННЫЕ доки поступлений есть. Всем спасибо |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |