Запрос к Иерархическому справочнику

Тема в разделе "1C и всё что с ней связано", создана пользователем Gorobec, 10 май 2010.

  1. Gorobec

    Gorobec Гость

    Доброго времени суток!
    Вопрос такого плана. Есть Иерархический справочник «Фирмы» структура:
    «Фирмы»
    ---- Фирма «А»
    ------ Фотоаппараты
    ----------- Элемент Модель
    ----------- Элемент Модель
    ------ Плеера
    ----------- Элемент Модель
    - Фирма «Б»
    ------ Фотоаппараты
    ------------Элемент Модель
    ------ Плеера
    ----------- Элемент Модель
    И Документ «Б» с ТЧ1 и ТЧ2.
    Код ( (Unknown Language)):
    Запрос на «Фотоаппараты» из «Фирмы А»
    стк = " Фотоаппараты ";
    скл = "Фирма А";
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("скл", скл);
    Запрос.УстановитьПараметр("стк ", стк);
    Запрос.Текст ="ВЫБРАТЬ
    |   Фирмы.Ссылка
    |ИЗ
    |   Справочник.Фирмы КАК Фирмы
    |ГДЕ
    |   Фирмы.Родитель.Наименование = & стк
    |   И Фирмы.Наименование = &скл";

    Результат = Запрос.Выполнить().Выбрать();
    ТабличнаяЧасть1.Очистить();
    Пока Результат.Следующий()=1 цикл
    новаястрока = ТабличнаяЧасть1.Добавить();
    Новаястрока.элементы = Результат.Ссылка;
    КонецЦикла;
    Если установить один параметр Специальность.Родитель.Наименование = & стк, тогда выбирает «Фотоаппараты» из всех «Фирм». Как сделать запрос? чтобы при заполнение текстового поля на форме документа фирмы, в ТЧ1 выбиралось из иерархического справочника фотоаппараты с «фирмы А»???
     
  2. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    стк = Справочники.Фирмы.НайтиПоНаименованию(" Фотоаппараты ");
    скл = Справочники.Фирмы.НайтиПоНаименованию("Фирма А");
    Запрос = Новый Запрос;
    Если ЗначениеЗаполнено(Скл)Тогда
    Запрос.УстановитьПараметр("скл", скл);
    КОнецЕсли;
    Запрос.УстановитьПараметр("стк ", стк);
    Запрос.Текст ="ВЫБРАТЬ
    | Фирмы.Ссылка
    |ИЗ
    | Справочник.Фирмы КАК Фирмы
    |ГДЕ
    | Фирмы В ИЕРАРХИИ (& стк) "+
    ?( ЗначениеЗаполнено(Скл)," И Фирмы В ИЕРАРХИИ (&скл)","")+":";

    Результат = Запрос.Выполнить().Выбрать();
    ТабличнаяЧасть1.Очистить();
    Пока Результат.Следующий()=1 цикл
    новаястрока = ТабличнаяЧасть1.Добавить();
    Новаястрока.элементы = Результат.Ссылка;
    КонецЦикла;

    Примерно это.
     
  3. Gorobec

    Gorobec Гость

    Выдал ошибку
    {Документ.Документ1.Форма.ФормаДокумента(101)}:
    Ошибка при вызове метода контекста (Выполнить): {(6, 2)}: Поле не найдено "Фирмы"
    <<?>>Фирмы В ИЕРАРХИИ(&стк)И Фирмы В ИЕРАРХИИ (&скл)
    Результат = Запрос.Выполнить().Выбрать(); :)
     
  4. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Запрос.Текст ="ВЫБРАТЬ
    | Фирмы.Ссылка КАК Фирма
    |ИЗ
    | Справочник.Фирмы КАК Фирмы
    |ГДЕ
    | Фирма В ИЕРАРХИИ (& стк) "+
    ?( ЗначениеЗаполнено(Скл)," И Фирма В ИЕРАРХИИ (&скл)","")+":";

    Так попробуй.
    И пользуйся конструктором
     
  5. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Какой смысл данной конструкции? Получается что дважды накладывается условие на одно и то же поле? Может "| Фирма В ИЕРАРХИИ (& стк) "+" - лишнее?
     
  6. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Вообще-то я не прав.
    Фотоаппараты придется по наименованию отбирать:
    "Фирма.Родитель.Наименование = &стк"
    Но такое не будет работать, если в фотоаппаратах еще вложенные папки.
    Можно формировать спписок групп с наименование фотоаппараты, и помещать их в "стк".

    Хотя я бы использовал доп. реквизит или свойство.

    А самое главное, мне не понятно как расшифровать "ст
     
  7. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    зачем по наименованию. если родитель указывается (выбирается) в документе, то в запрос можно передать не "наименование" а именно так как написал и конструкция "В ИЕРАРХИИ" сработает так как надо (отберет указанную группу и все что вложено в нее), единственное, наверное, стоит дописать исключение групп во вложенности.
     
Загрузка...
Похожие Темы - Запрос Иерархическому справочнику
  1. mrtg
    Ответов:
    14
    Просмотров:
    229
  2. erdi
    Ответов:
    1
    Просмотров:
    137
  3. lmike
    Ответов:
    23
    Просмотров:
    783
  4. deeeman
    Ответов:
    9
    Просмотров:
    361
  5. astana2000
    Ответов:
    8
    Просмотров:
    768

Поделиться этой страницей