Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 14:18

1С 8.3 (Обычное). Как заполнить список справочника, если имеет тип СправочникСписок? (Табличное поле)

Автор gulnyr, 11 мар 2024, 12:28

0 Пользователей и 1 гость просматривают эту тему.

gulnyr

Настройка формы:

Screenshot_12.png

Нужно чтобы заполнялся моими данными из запроса.

Пробовал так:
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ ПЕРВЫЕ 10
        |    Номенклатура.Наименование,
        |    Номенклатура.Артикул
        |ИЗ
        |    Справочник.Номенклатура КАК Номенклатура";
   
    РезультатЗапроса = Запрос.Выполнить();

ЭлементыФормы.Список.Значение = РезультатЗапроса.Выгрузить();

Но ничего не меняется (ошибок тоже нет). Как делать?

Максим75

gulnyr, так вроде как произвольный запрос при выводе списков справочников или доков работает на управляемых формах, а у Вас какая форма?
на управляемых прямо в реквизите надо править, а не в модуле формы объекта.

antoneus


gulnyr

Максим75, Обычная форма. Да, в управляемом произвольный запрос можно, а в обычном не совсем понятно

gulnyr

antoneus, да, с отбором более-менее понятно. Только при каждой открытии справочника закинуть в отбор 3000 товаров так себе вариант.
Поэтому ищу альтернативный вариант

antoneus


gulnyr

antoneus, я в отбор по группе с помощью запроса закинул 3000 наименований вот таким образом (т.е. все наименования из определенного родителя, выходит около 3000 наименований):

Запрос = Новый Запрос();
Запрос.Текст="ВЫБРАТЬ
|Товары.Наименование,
|Товары.Родитель
|ИЗ
|Справочник.Товары КАК Товары
|ГДЕ Товары.Родитель = &Родитель";

Запрос.УстановитьПараметр("Родитель",Справочники.Товары.НайтиПоКоду("ЦБ00000001"));

ТаблицаТовары = Запрос.Выполнить().Выгрузить(); 
МассивТовары = ТаблицаТовары.ВыгрузитьКолонку("Наименование");

СписокТовары = Новый СписокЗначений();
СписокТовары.ЗагрузитьЗначения(МассивТовары);

СправочникСписок.Отбор.Наименование.ВидСравнения = ВидСравнения.ВСписке; 
СправочникСписок.Отбор.Наименование.Использование = Истина;
СправочникСписок.Отбор.Наименование.Значение = СписокТовары;

Думаю так много товаров в отборе не очень хорошая идея.
Есть другой вариант? (нужно скрыть не только элементы, но и его родителя)

antoneus

Ну так кроме вида сравнения ВСписке есть вид сравнения ВГруппе, иерархическое отображение списка можно отключить.

gulnyr

antoneus, это да. Но почему-то у меня нет ВГруппе в отборе. Можно ли его как-то активизировать? Видимо до этого кто-то отключил его

antoneus

Да, в обычном не ВГруппе называется, а ВИерархии.

Не смотрите на отбор в пользовательском режиме, вы же программно его устанавливаете.

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

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск