8.х Как при выборе значения в поле ввода ограничить список выбора для типа "Справочник"?

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Norseman, 30 окт 2006.

  1. TopicStarter Overlay
    Norseman
    Offline

    Norseman

    Регистрация:
    30 окт 2006
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Одно из полей табличной части документа задано типом СправочникСтатьиЗатрат. При выборе элемента в соответствующем поле ввода по умолчанию появляется форма выбора, где можно выбрать любой элемент из этого справочника. А необходимо наоборот, ограничить список выводимых для выбора значений, наложив определенные условия. Как можно это реализовать?
  2. Pilgrim
    Offline

    Pilgrim Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    26
    Я првильно понял, что тебе надо вывести тот же справочник, только установив на него
    отбор по каким-либо условиям?
  3. TopicStarter Overlay
    Norseman
    Offline

    Norseman

    Регистрация:
    30 окт 2006
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Совершенно верно!
  4. Pilgrim
    Offline

    Pilgrim Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    26
    Ну тогда пожно например так. Допустим нам надо открыть список всех элементов, у которых значение некоторого поля (Пусть Поле1) равно некоторому значению (Пусть Значение1).
    На событие ПриВыборе элемента, пишешь следующий код:

    Процедура Поле1НачалоВыбора(Элемент,СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ФормаВыбора = Справочники.НашСправочник.ПолучитьФормуВыбора(,Элемент);
    ФормаВыбора.СправочникСписок.Отбор.Поле1.ВидСравнения = ВидСравнения.Равно;
    (тут СправочникСписок - это название твоего табличного поля на форме выбора справочника, так что оно может быть другим в твоём случае)
    ФормаВыбора.СправочникСписок.Отбор.Поле1.Использование = Истина;
    ФормаВыбора.СправочникСписок.Отбор.Поле1.Значение = Значение1;
    ФормаВыбора.Открыть();
    КонецПроцедуры;

    Так должно получиться.
  5. TopicStarter Overlay
    Norseman
    Offline

    Norseman

    Регистрация:
    30 окт 2006
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Спасибо! Буду пробовать.
  6. TopicStarter Overlay
    Norseman
    Offline

    Norseman

    Регистрация:
    30 окт 2006
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Все получилось. Но теперь стоит другая задача: как запретить пользователям вручную удалять или менять установленный фильтр?
  7. Pilgrim
    Offline

    Pilgrim Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    26
    А там есть свойство у отбора Доступность, попробуй его поставь в ложь.
  8. TopicStarter Overlay
    Norseman
    Offline

    Norseman

    Регистрация:
    30 окт 2006
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Да вот в том то вся и беда, что такого свойства нет. Я знаю, что для некоторых документов, при нажатии кнопки "Перейти" на панели, открывается справочник или журнал с установленным фильтром по этому документу-регистратору. И если там зайти в фильтр, то откроется форма "Отбор и сортировка", где элемент отбора Регистратор выделен серым цветом и не поддается редактированию.
    Вот если бы поиграться с этой формой...
    Но в списке объектов конфы я ее не нашел :(
  9. Pilgrim
    Offline

    Pilgrim Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    26
    То есть, если в предыдущем коде так сделать ФормаВыбора.СправочникСписок.Отбор.Поле1.Доступность = Ложь, то не получится?
  10. TopicStarter Overlay
    Norseman
    Offline

    Norseman

    Регистрация:
    30 окт 2006
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Неа
  11. Pilgrim
    Offline

    Pilgrim Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    26
    Есть такая вещь, как НастройкаОтбора (момешь в хелпе посмотреть), у неё есть такая вещь, как УправлениеЭлементомОтбора, вот у него есть свойство Доступность и оно вроде как отвечает за интерактивное изменение отбора. Но признаюсь честно, я сам не пользовался эти никогда, может будет время, гляну. А так, можешь сам покопаться, может что интересное нароешь :unsure:
  12. TopicStarter Overlay
    Norseman
    Offline

    Norseman

    Регистрация:
    30 окт 2006
    Сообщения:
    10
    Симпатии:
    0
    Баллы:
    1
    Отлично! Помогло.
    В итоге получилось так:
    ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.Наименование.Доступность = Ложь;

    Спасибо за советы!
  13. Pilgrim
    Offline

    Pilgrim Опытный в 1С

    Регистрация:
    13 сен 2006
    Сообщения:
    242
    Симпатии:
    0
    Баллы:
    26
    Ок. Буду тоже знать, что так работает, а то знал только в теории :unsure:
  14. Mik
    Offline

    Mik

    Регистрация:
    24 мар 2016
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Спасибо за информацию. У меня такая же задача, правда получилось немного по другому. Вместо ФормаВыбора.СправочникСписок.Отбор, ФормаВыбора.Отбор, на СправочникСписок ругается. И еще, когда открывается список справочника, установленный отбор зашит жестко, при этом другие отборы дополнительно, можно устанавливать, (что хорошо). Теперь новая задача, ищу как отсортировать элементы в открывшейся форме по коду, есть предложения?

    Процедура ТПНоменклатураТипПоУлТипПоУЛПрисвоитьНачалоВыбора(Элемент, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    пПВХТипПоУпаковочномуЛисту=ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Тип по упаковочному листу");
    ФормаВыбора = Справочники.ЗначенияСвойствОбъектов.ПолучитьФормуВыбора(,Элемент);
    ФормаВыбора.Отбор.Владелец.ВидСравнения = ВидСравнения.Равно;
    //(тут СправочникСписок - это название твоего табличного поля на форме выбора справочника, так что оно может быть другим в твоём случае)
    ФормаВыбора.Отбор.Владелец.Использование = Истина;
    ФормаВыбора.Отбор.Владелец.Значение = пПВХТипПоУпаковочномуЛисту;
    ФормаВыбора.Открыть();
    КонецПроцедуры
    --- Объединение сообщений, 24 мар 2016 ---
    Нашел
    ФормаВыбора.Порядок.Установить("Код");
    уже после открытия формы
    Последнее редактирование: 24 мар 2016

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