![]() |
![]() |
![]() |
|
Заполнеие документа БГУ | ☑ | ||
---|---|---|---|---|
0
Woiager1984
24.10.11
✎
13:28
|
Подскажите как можно сделать следующее?Есль справочник номенклатура,в этом справочнике есть группа номенклтуры "ПРОЧИЕ /105.06/",в ней есть еще группа "1".Задача выбрать все элементы из группы "ПРОЧИЕ /105.06/".На форму документа кинул реквизит для выбора родителя "ГруппаНоменклатура",т.е выбираешь группу из которой нужно выбрать элементы.Прописал отбор "Если ГруппаНоменклатура=СтрокаОстатков.Номенклатура.Родитель Тогда
".Все нормально если выбирать конечную подгруппу,но если выбираешь верхний подуровень то элементы не выбираются?Может кто что подскажет? |
|||
1
vicof
24.10.11
✎
13:32
|
Если ГруппаНоменклатура=СтрокаОстатков.Номенклатура.Родитель.Родитель или ...РОдитель.Родитель.Родитель пока уровни не кончатся
|
|||
2
Woiager1984
24.10.11
✎
13:34
|
Это я понимаю,просто уровней может быть 3,а может 4 и как предугадать сколько их,не напишешь же для каждой группы выбор.
|
|||
3
vicof
24.10.11
✎
13:47
|
Рекурсия, как вариант.
|
|||
4
Woiager1984
24.10.11
✎
13:55
|
А что за рекурсия?
|
|||
5
vicof
24.10.11
✎
14:07
|
пербирать группы в выбранной, пока количество элементов в них > 0, и добавлять в отбор с условием В ГРУППЕ ИЗ СПИСКА.
|
|||
6
Woiager1984
24.10.11
✎
14:10
|
А может быть есть какая процедура в которой определяется принадлежность подгруппы верхней группе?
|
|||
7
vicof
24.10.11
✎
14:27
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка В ИЕРАРХИИ(&Номенклатура) | И Номенклатура.ЭтоГруппа"; Запрос.УстановитьПараметр("Номенклатура", ГруппаНоменклатуры); ТЗ = Запрос.Выбрать().Выгрузить(); Дальше сообразишь? |
|||
8
Woiager1984
24.10.11
✎
14:48
|
Ага!Спасибо!
|
|||
9
Woiager1984
24.10.11
✎
15:45
|
Не не получается!)Нужно подправить запрос в документе Инвентаризация.Где условие прописать не знаю,вот текст запроса:
Функция ПолучитьОстатки() ТекстЗапроса = "ВЫБРАТЬ РАЗРЕШЕННЫЕ | ЕПСБУОстатки.Баланс, | ЕПСБУОстатки.КВД, | ЕПСБУОстатки.КБК, | ЕПСБУОстатки.Счет, | ЕПСБУОстатки.Субконто2 КАК Номенклатура, | ЕПСБУОстатки.Субконто2.Наименование КАК НоменклатураПредставление, | ЕПСБУОстатки.Субконто2.ЕдиницаИзмерения КАК ЕдиницаИзмерения, | ЕПСБУОстатки.КоличествоОстаток КАК КоличествоБУпоМОЛ, | ПРЕДСТАВЛЕНИЕ(ЕПСБУОстатки.КВД) КАК КВДПредставление, | ПРЕДСТАВЛЕНИЕ(ЕПСБУОстатки.КБК) КАК КБКПредставление, | ПРЕДСТАВЛЕНИЕ(ЕПСБУОстатки.Счет) КАК СчетПредставление |ПОМЕСТИТЬ ТабПоМОЛ |ИЗ | РегистрБухгалтерии.ЕПСБУ.Остатки( | &ДатаЗапроса, | Счет.Ссылка В ИЕРАРХИИ (&Счет105), | , | Учреждение = &Учреждение | И Субконто3 = &ЦМО | И ВЫБОР | КОГДА &БалансОтбор = НЕОПРЕДЕЛЕНО | ТОГДА ИСТИНА | ИНАЧЕ Баланс = &БалансОтбор | КОНЕЦ) КАК ЕПСБУОстатки |ГДЕ | ЕПСБУОстатки.КоличествоОстаток <> 0 |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ЕПСБУОстатки.Баланс, | ЕПСБУОстатки.КВД, | ЕПСБУОстатки.КБК, | ЕПСБУОстатки.Счет, | ЕПСБУОстатки.Субконто2 КАК Номенклатура, | ЕПСБУОстатки.КоличествоОстаток КАК КоличествоБУбезМОЛ, | ЕПСБУОстатки.СуммаОстаток КАК СуммаБУбезМОЛ |ПОМЕСТИТЬ ТабБезМОЛ |ИЗ | РегистрБухгалтерии.ЕПСБУ.Остатки( | &ДатаЗапроса, | Счет.Ссылка В ИЕРАРХИИ (&Счет105), | , | Учреждение = &Учреждение | И ВЫБОР | КОГДА &БалансОтбор = НЕОПРЕДЕЛЕНО | ТОГДА ИСТИНА | ИНАЧЕ Баланс = &БалансОтбор | КОНЕЦ) КАК ЕПСБУОстатки |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗРЕШЕННЫЕ | ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура, | ЦеныНоменклатурыСрезПоследних.Цена КАК Цена |ПОМЕСТИТЬ ТабЦен |ИЗ | РегистрСведений.ЦеныНоменклатуры.СрезПоследних( | &ДатаЗапроса, | Учреждение = &Учреждение | И ТипЦен = &ТипЦены) КАК ЦеныНоменклатурыСрезПоследних |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТаблицаПоМОЛ.Баланс, | ТаблицаПоМОЛ.КВД, | ТаблицаПоМОЛ.КБК, | ТаблицаПоМОЛ.Счет, | ТаблицаПоМОЛ.Номенклатура, | ТаблицаПоМОЛ.НоменклатураПредставление КАК НоменклатураПредставление, | ТаблицаПоМОЛ.ЕдиницаИзмерения, | ТаблицаПоМОЛ.КоличествоБУпоМОЛ КАК КоличествоБУ, | ВЫБОР | КОГДА ТаблицаБезМОЛ.КоличествоБУбезМОЛ = 0 | ТОГДА 0 | ИНАЧЕ ТаблицаПоМОЛ.КоличествоБУпоМОЛ * ТаблицаБезМОЛ.СуммаБУбезМОЛ / ТаблицаБезМОЛ.КоличествоБУбезМОЛ | КОНЕЦ КАК СтоимостьБалансовая, | ТаблицаЦен.Цена КАК Цена, | ТаблицаПоМОЛ.КВДПредставление, | ТаблицаПоМОЛ.КБКПредставление, | ТаблицаПоМОЛ.СчетПредставление |ИЗ | ТабПоМОЛ КАК ТаблицаПоМОЛ | ЛЕВОЕ СОЕДИНЕНИЕ ТабБезМОЛ КАК ТаблицаБезМОЛ | ПО ТаблицаПоМОЛ.КВД = ТаблицаБезМОЛ.КВД | И ТаблицаПоМОЛ.КБК = ТаблицаБезМОЛ.КБК | И ТаблицаПоМОЛ.Номенклатура = ТаблицаБезМОЛ.Номенклатура | И ТаблицаПоМОЛ.Баланс = ТаблицаБезМОЛ.Баланс | И ТаблицаПоМОЛ.Счет = ТаблицаБезМОЛ.Счет | ЛЕВОЕ СОЕДИНЕНИЕ ТабЦен КАК ТаблицаЦен | ПО ТаблицаПоМОЛ.Номенклатура = ТаблицаЦен.Номенклатура | |УПОРЯДОЧИТЬ ПО | НоменклатураПредставление"; Запрос = Новый Запрос(ТекстЗапроса); Запрос.УстановитьПараметр("ДатаЗапроса", МоментВремени()); Запрос.УстановитьПараметр("Учреждение", Учреждение); Запрос.УстановитьПараметр("ТипЦены", ТипЦены); Запрос.УстановитьПараметр("Счет105", ?(ЗначениеЗаполнено(СчетУчета), СчетУчета, ПолучитьЛокальнуюПеременную("Счет10500"))); Запрос.УстановитьПараметр("ЦМО", ЦМО); Запрос.УстановитьПараметр("БалансОтбор", ?(НЕ УчитыватьБаланс,Неопределено,БалансОтбор)); ТаблицаОстатков = Запрос.Выполнить().Выгрузить(); Возврат ТаблицаОстатков; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |