Имя: Пароль:
1C
1С v8
Отбор по родителю в дин.списке. ЧЯДНТ?
,
0 mortal
 
19.05.14
10:30
вот в ПриСозданииНаСервере:

    ЭлементОтбора = СписокНоменклатуры.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Родитель");                              
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение = ПараметрТаблицы;


вот запрос:

    "ВЫБРАТЬ
    |    Номенклатура.Родитель,
    |    Номенклатура.Ссылка КАК Номенклатура,
    |    Номенклатура.Наименование,
    |    Номенклатура.ЭтоГруппа КАК Группа,
    |    Номенклатура.ФайлКартинки,
    |    Номенклатура.НаименованиеПолное КАК ПолноеНаименование,
    |    Номенклатура.ПрикрепленныйФайл,
    |    Номенклатура.ИнструкцияPDF,
    |    Номенклатура.СтрокаWEBСсылки,
    |    Номенклатура.WEBСсылка,
    |    Номенклатура.Артикул,
    |    Номенклатура.Код,
    |    Номенклатура.ТекущаяЦена,
    |    Номенклатура.НоваяЦена,
    |    Номенклатура.ЦенаСЦ
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    Номенклатура.Родитель = &ПараметрТаблицы";

/где ПарметрТаблицы - группа номенклатуры/

вот ошибка:

Ошибка при выполнении запроса. Ошибка при выполнении запроса.
по причине:
Ошибка в элементе отбора: глобальные элементы отбора обязательно должны использовать поля "ПараметрыДанных.ПараметрТаблицы Равно ПараметрыДанных.ПараметрТаблицы"


прошу прощения, видимо я не вполне догоняю настройку дин.списков...
гуглил - безрезультатно ((
подскажите, ЧЯДНТ?
1 mortal
 
19.05.14
10:32
+0
самописка на БСП 2.2.2.43 (если что..)
2 mortal
 
19.05.14
10:40
Запрос без условия, настройка отбора в свойствах дин.списка..
все возможные варианты уже, кажется перебрал (
3 Cube
 
19.05.14
10:44
Почему не сделаешь так:

"ВЫБРАТЬ
    |    Номенклатура.Ссылка КАК Номенклатура,
    |    Номенклатура.Наименование,
    |    Номенклатура.ЭтоГруппа КАК Группа,
    |    Номенклатура.ФайлКартинки,
    |    Номенклатура.НаименованиеПолное КАК ПолноеНаименование,
    |    Номенклатура.ПрикрепленныйФайл,
    |    Номенклатура.ИнструкцияPDF,
    |    Номенклатура.СтрокаWEBСсылки,
    |    Номенклатура.WEBСсылка,
    |    Номенклатура.Артикул,
    |    Номенклатура.Код,
    |    Номенклатура.ТекущаяЦена,
    |    Номенклатура.НоваяЦена,
    |    Номенклатура.ЦенаСЦ
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура"

И потом

    ЭлементОтбора = СписокНоменклатуры.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Номенклатура");                              
    ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВГруппе;
    ЭлементОтбора.Использование = Истина;
    ЭлементОтбора.ПравоеЗначение = ПараметрТаблицы;


?
4 Bron
 
19.05.14
10:45
можно сделать как написано в (3), можно оставить параметр в запросе и устанавливать его ПриСозданииНаСервере:

Список.Параметры.УстановитьЗначениеПараметра("ИмяПараметра", Параметр);
5 mortal
 
19.05.14
10:53
(3)
  ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.ВГруппе; - поле объекта не обнаружено.
Да и СП не предлагает вариант ВГруппе - пробовал ВИерархии - ошибка та же (
6 Cube
 
19.05.14
10:56
(5) Какая "та же"?
У тебя ругалось на ПАРАМЕТРЫ запроса. В моем запросе параметров нет.
7 Cube
 
19.05.14
10:57
(6) А, нет, ошибся, не на параметры...
8 whitedi
 
19.05.14
10:58
(0) убери из текста запроса "ГДЕ
    |    Номенклатура.Родитель = &ПараметрТаблицы""
9 whitedi
 
19.05.14
10:59
+(8) если по каким-то причина тебе нужен и отбор и параметр, то попробуй переименовать параметр в запросе.
10 Cube
 
19.05.14
11:15
(5) На, балуйся: http://rusfolder.com/40733951
Писалось на УТ 11, но будет работать везде, где есть справочник "Номенклатура".

Запрос ДС:

ВЫБРАТЬ
    Номенклатура.Ссылка,
    Номенклатура.Код
ИЗ
    Справочник.Номенклатура КАК Номенклатура


На форме реквизит "ГруппаНоменклатуры", тип - Справочник.Номенклатура.


Модуль формы:


&НаКлиенте
Процедура ГруппаНоменклатурыПриИзменении(Элемент)
    
    СписокНоменклатуры.Отбор.Элементы.Очистить();
    ЭлементОтбора = СписокНоменклатуры.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ЭлементОтбора.ЛевоеЗначение        = Новый ПолеКомпоновкиДанных("Ссылка");
    ЭлементОтбора.ВидСравнения        = ВидСравненияКомпоновкиДанных.ВИерархии;
    ЭлементОтбора.ПравоеЗначение    = ГруппаНоменклатуры;
    ЭлементОтбора.Использование        = НЕ ГруппаНоменклатуры.Пустая();
    
КонецПроцедуры //ГруппаНоменклатурыПриИзменении()
11 Wobland
 
19.05.14
11:17
а вот я такую же ерундень пилил вчера на коленке. только отбор по владельцу. (показать на форме весь подчинённый справочник). нет какой магии кроме добавления элемента отбора?
12 Cube
 
19.05.14
11:26
(11) Варианта всегда два: или параметр в запросе, или отбор у ДС...
13 Wobland
 
19.05.14
11:27
(12) ну всё нормально, значит, 10х
14 DexterMorgan
 
19.05.14
11:41
(11) Вообще для подчиненных справочников создается глобальная параметризуемая команда, с помощью которой можно открыть форму списка с отбором по владельцу. Ее можно просто перетащить на форму
15 mortal
 
19.05.14
14:04
(10) Спасибо
блин. и все дело было в том, что НЕ надо указывать Основную таблицу в настройках ДС (
16 DexterMorgan
 
19.05.14
15:10
(15) при чем тут основная таблица?
17 mortal
 
19.05.14
15:16
(16) при указании основной таблицы Справочник.Номенклатура отбор работал, мягко говоря, странно. т.е. выводились только(!) группы, без элементов
18 Cube
 
20.05.14
04:47
(15) (17) Что за бредятина?

Если основную таблицу НЕ УКАЗЫВАТЬ, то у тебя режим отображения будет всегда "Список" и изменить ты этого не можешь (да и нет смысла).

Если основную таблицу УКАЗАТЬ, то режим отображения по-умолчанию проставляется "Иерархический список", а в этом режиме все группы отображаются всегда. Но отбор по элементам справочника (не по группам) работает. Не надо ля-ля.
Если хочешь примерно одинакового поведения, то после указания основной таблицы установи режим отображения в значение "Список" и больше своей ерундой не болтай, а то тебя и дети могут прочитать и поверить тебе...
19 DexterMorgan
 
20.05.14
09:51
(18)  "больше своей ерундой не болтай, а то тебя и дети могут прочитать и поверить тебе"

xDDD
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.