Имя: Пароль:
1C
1С v8
Заполнеие документа БГУ
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")));
   Запрос.УстановитьПараметр("ЦМО", ЦМО);
   Запрос.УстановитьПараметр("БалансОтбор", ?(НЕ УчитыватьБаланс,Неопределено,БалансОтбор));
   ТаблицаОстатков = Запрос.Выполнить().Выгрузить();
   
   Возврат ТаблицаОстатков;
КонецФункции