Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Отбор в форме
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.2 > Программирование обычных форм 1С 8.2 и не интерфейсной логики
хакерок
Есть форма например форма выбора элемена справочника Номенклатура

В Номенклатуре есть реквизит Производитель

В Версии 8.1 можно было сделать отбор по производителю следующим кодом.

  СправочникСписок.Отбор.Производитель.Установить(Справочники.Производители.НайтиПоНаименованию("Sаmsung"));


и этой командой можно было увидеть в форме все позиции проиpводителя Samsung

(СправочникСписок реквизит формы)





В Версии 8.2

Например пример проще

Список.Отбор.Код.Установить("000123") - не понимает пишет Поле объектане обнаружено (Код)

Вопрос как можно в форма отображать отбор по реквизиту
Vofka
Цитата
не понимает пишет Поле объектане обнаружено (Код)

Ну значит не обнаружено, добавить надо
Batchir
Цитата
Вопрос как можно в форма отображать отбор по реквизиту


Точно так же как и в 8.1, только по коду нельзя установить отбор, т.к. это системный реквизит.
Поэтому сначала нужно найти ссылку на номенклатуру по коду, а потом уже наложить фильтр по найденной ссылке
logist
Цитата(хакерок @ 02.09.11, 11:24) необходимо зарегистрироваться для просмотра ссылки
Список.Отбор.Код.Установить("000123") - не понимает пишет Поле объектане обнаружено (Код)

Вероятно как-то так (если список читается динамически), это по памяти, может в первой строке быть как-то не так:

    ОтборСписка = Список.Отбор.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    ОтборСписка.ЛевоеЗначение     = Список.Код;
    ОтборСписка.ВидСравнения     = ВидСравненияКомпоновкиДанных.Равно;
    ОтборСписка.ПравоеЗначение = "000123";
    ОтборСписка.Использование  = Истина;
pablo
А Вы, часом, не в тонком клиенте это реализуете?
DartRomanius
Форма управляемая? Или обычная?
хакерок
Цитата(DartRomanius @ 02.09.11, 12:34) необходимо зарегистрироваться для просмотра ссылки
Форма управляемая? Или обычная?

обычная

Цитата(logist @ 02.09.11, 11:40) необходимо зарегистрироваться для просмотра ссылки
Вероятно как-то так (если список читается динамически), это по памяти, может в первой строке быть как-то не так:

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


По первой строке не понимает метода Добавить
logist
Цитата(хакерок @ 02.09.11, 14:54) необходимо зарегистрироваться для просмотра ссылки
По первой строке не понимает метода Добавить


 ОтборСписка = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

Пробуйте ж что-то самостоятельно, блин.
Но то что я писал это для управляемой формы. Для обычной вероятно должно быть так же как в 8.1. У Вас что режим совместимости с 8.1 стоит?
хакерок
Цитата(logist @ 02.09.11, 14:58) необходимо зарегистрироваться для просмотра ссылки
 ОтборСписка = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));

Пробуйте ж что-то самостоятельно, блин.
Но то что я писал это для управляемой формы. Для обычной вероятно должно быть так же как в 8.1. У Вас что режим совместимости с 8.1 стоит?

Уже прогресс первая строка прошла а по второй страке не понимает Поля Код буду пробовать
Vofka
Цитата
Уже прогресс первая строка прошла а по второй страке не понимает Поля Код буду пробовать


А впереди неведомая даль,
В которой расстворится наша жизнь
Тридцатьчетвёрки главная деталь
Танкиста закопченный организм.

Цитата(Batchir)
Точно так же как и в 8.1, только по коду нельзя установить отбор, т.к. это системный реквизит.
Поэтому сначала нужно найти ссылку на номенклатуру по коду, а потом уже наложить фильтр по найденной ссылке
хакерок
Цитата(Vofka @ 02.09.11, 15:39) необходимо зарегистрироваться для просмотра ссылки
А впереди неведомая даль,
В которой расстворится наша жизнь
Тридцатьчетвёрки главная деталь
Танкиста закопченный организм.

Схожу в отпуск а потом разберёмся
хакерок
Цитата(хакерок @ 02.09.11, 17:30) необходимо зарегистрироваться для просмотра ссылки
Схожу в отпуск а потом разберёмся


Я считаю отбор важная часть в формах поэтом разобрался и вот вариант как можно организовать программно отбор
в списке

Для примера будем считать что в Списке есть текстовый реквизит Производитель

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


В данном примере на экране остануться только те позиции таблицы у которых поле производитель "Samsung"

Спасибо всем кто помог вопрос решён
Vofka
logist намекал на это smile.gif . Вам спасибо за то, что не поленились всётаки огласить вариант решения! smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.