Автор Тема: Выбор значения из выпадающего списка  (Прочитано 25969 раз)

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

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Re: Выбор значения из выпадающего списка
« Ответ #11 : 26 Август 2009 Среда 10:58:01 »
Я похожее делал правда не по группе(папке), а по полю, но по группе думаю тоже должно работать.
У меня в списке было поле "Предприятие" и я показывал пользователям данные только для определенных предприятий, например ListDataSource.WhereClause = "Предприятие.Код=7";
А потом можно к этому еще и фильтры применять.
Если по родителю, попробуйте написать чтото вроде:
ListDataSource.WhereClause = "Родитель=Одежда";
Вот пример кода из моей программы, который при открытии формы сразу фильтрует данные:

private void Page_Load(object sender, System.EventArgs e)
{
    // проверка прав на просмотр таблицы
    if (!ListDataSource.CheckAccessRight(V8Rights.View))
    {
        V8WebUtil.RegisterShowErrorScript( _1C.V8.Data.V8.GetString("err_accessRightViolation"), this, true);
        Response.End();
        return;
    }

    if (!IsPostBack)
        Title = ListDataSource.TableInfo.Presentation;

    ListDataSource.WhereClause = "Предприятие.Код=7";
}


DaMa

  • Newbie
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Выбор значения из выпадающего списка
« Ответ #10 : 26 Август 2009 Среда 01:32:16 »
Стоит задача. При вводе номенклатуры ( в поле ввода табличной части документа "Заказ покупателя") необходимо, чтобы при вводе первых букв наименования, выпадал список номенклатуры, но не всей, а группы "Одежда".       
т.е. есть Справочник Номенклатура, в котором есть папки Одежда, Ткань... В папке Одежда есть еще  вложенные папки. Делаю так. Создала новую форму Номенклатуры. Указываю в файле  TableFormMap.xml на эту форму.
Какой фильтр необходимо использовать для этого случая? Пробую:

 private void Page_Load(object sender, System.EventArgs e)
    {
        // проверка прав на просмотр таблицы
        if (!ListDataSource.CheckAccessRight(V8Rights.View))
        {
            V8WebUtil.RegisterShowErrorScript( _1C.V8.Data.V8.GetString("err_accessRightViolation"), this, true);
            Response.End();
            return;
        }

        if (!IsPostBack)
            Title = ListDataSource.TableInfo.Presentation;
        V8Filter filter = null;
        filter = ListDataSource.Filter["Родитель"];
        filter.Checked = true;
        filter.Condition = V8FilterCondition.Equal;
        filter.ValueType1 = ListDataSource.Metadata.TypesInfo["string"];
        filter.Value1 = "Одежда";
        filter.Visible = true;
        Grid.Refresh();
   }
}

 filter.Condition = V8FilterCondition.Equal или  filter.Condition = V8FilterCondition.inGroup? и при выборе элемента справочника вообще фильтр пока работал при нажатии кнопки Select (вызова формы справочника).
Очень жду комментариев. Заранее спасибо!

DaMa

  • Newbie
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Выбор значения из выпадающего списка
« Ответ #9 : 24 Июль 2009 Пятница 13:37:08 »
С контрагентами идея хорошая.
Сейчас с выпадающим меню работает. Оказалось действительно просто- стрелочкой вниз))
И еще поставить в свойствах колонок табличной части в параметре UseListChoise поставить значение False ( у меня стояло True).
Спасибо!

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Re: Выбор значения из выпадающего списка
« Ответ #8 : 24 Июль 2009 Пятница 12:51:32 »
Этот фильтр который вызывается по нажатию на кнопку "вниз" в табличной части, похоже фильтрует только одним способом "с начала строки" и без учета иерархии. У меня например как раз в табличной части выбираются контрагенты. В базе 1С конрагенты разбиты по папкам, есть контрагенты с одинаковыми именами, но находятся в разных папках, так вот если пользоваться этим быстрым методом выбора по кнопке "вниз", то у меня отображаются несколько одинаковых контрагентов, и кто из них кто непонятно. Пока что, другого варианта я пока не придумал как можно быстрее выбирать контрагентов и чтобы пользователи не ошибались. И в варианте с фильтром который я описал, сверху есть кнопка "Иерархически", можно ее нажимать чтобы показать или убрать иерархию.

DaMa

  • Newbie
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Выбор значения из выпадающего списка
« Ответ #7 : 24 Июль 2009 Пятница 10:52:53 »
Уважаемый admin, имею ввиду метод, изображенный на рисунке.

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Re: Выбор значения из выпадающего списка
« Ответ #6 : 24 Июль 2009 Пятница 10:05:11 »
А удобно было бы если не было необходимости нажимать на кнопку выбора для вызова отдельного окна справочника, а начинать заполнять прям в поле ввода табличной части. И еще при данном фильтре не раскрывается иерархия.
Я не совсем понял, вы про какой метод говорите(про то что не раскрывается иерархия), про тот, что я написал или про тот что у вас на картинке?

DaMa

  • Newbie
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Выбор значения из выпадающего списка
« Ответ #5 : 23 Июль 2009 Четверг 18:38:28 »
Да!! Для заполнения контрагентов очень хороший вариант! Спасибо!
А что касается заполнения  в табличной части документа, например, номенклатуры, то это не совсем удобно. А удобно было бы если не было необходимости нажимать на кнопку выбора для вызова отдельного окна справочника, а начинать заполнять прям в поле ввода табличной части. И еще при данном фильтре не раскрывается иерархия.
Дело может быть и в самом свойстве фильтра?
И как же достичь желаемого результата? (см. рисунок)

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Создаем новую форму: Website \ Add New Item \ V8 List Form
Назовем форму: V8WebListForm_Kontr.aspx
Добавляем на форму два объекта: Label и TextBox (см. рисунок)
Для TextBox добавляем событие TextChanged:

protected void TextBox1_TextChanged(object sender, EventArgs e)
{
    V8Filter filter = null;
    filter = ListDataSource.Filter["Наименование"];
    filter.Checked = true;
    filter.Condition = V8FilterCondition.Contains;
    filter.ValueType1 = ListDataSource.Metadata.TypesInfo["string"];
    filter.Value1 = TextBox1.Text;
    filter.Visible = true;
    Grid.Refresh();
}

Тип фильтра можно настроить тут: V8FilterCondition.Contains;
В данном случае фильтр отбирает элементы в которых присутствуют символы из TextBox1.Text

Что бы созданная наша новая форма отображалась вместо стандартной формы WEB-расширения, откроем файл из нашего проекта TableFormMap.xml и проверим, что в нем присутствуют следующие строки:
  <table name="Справочник.Контрагенты">
    <form type="List">V8WebListForm_Kontr.aspx</form>
    <form type="Select">V8WebListForm_Kontr.aspx</form>
  </table>
Если каких то из этих строк нет, добавляем их.

Бывает, что после исправления файла TableFormMap.xml, сразу не применяются наши изменения, тогда просто сохраним наш проект, закроем его и откроем его опять, после этого все должно работать.
« Последнее редактирование: 23 Июль 2009 Четверг 14:59:34 от admin »

DaMa

  • Newbie
  • *
  • Сообщений: 16
    • Просмотр профиля
Re: Выбор значения из выпадающего списка
« Ответ #3 : 23 Июль 2009 Четверг 13:51:20 »
Этот фильтр вполне подойдет! Напишите пожалуйста!

iPRG Team

  • Administrator
  • Full Member
  • *****
  • Сообщений: 188
    • Просмотр профиля
Re: Выбор значения из выпадающего списка
« Ответ #2 : 23 Июль 2009 Четверг 12:03:40 »
Я например делал для справочника контрагенты похожее, т.к. когда контрагентов очень много, вибирать из списка проблематично.
Я добавил в форму выбора контрагента поле "Фильтр по наименованию", после ввода символов в это поле и нажатию на Enter применяется фильтр и отображаются в текущей форме только те контрагенты у которые встречаются в наименовании введенные мною символы, это оказалось даже удобнее для поиска контрагентов чем поиск по первым символам при быстром поиске. Если вы про это, могу подробней написать как это сделать.

DaMa

  • Newbie
  • *
  • Сообщений: 16
    • Просмотр профиля
Выбор значения из выпадающего списка
« Ответ #1 : 23 Июль 2009 Четверг 01:30:42 »
Каким образом при вводе несколько первых символов в поле ввода сделать так, чтобы появлялся список возможных значений, из которого можно было бы выбрать нужный?
Сейчас реализован ввод только с помощью кнопки выбора из самого справочника.  Что очень трудоемко...