Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Выбор из списка. Управляемая форма

Выбор из списка. Управляемая форма
Я
   Varlant1n
 
09.12.20 - 15:35
Здравствуйте, дорогие форумчане! Передо мной стоит задача. Сделать ФормуСписка документа РеализацияТоваровУслуг для планшета. В этой форме будет информация только о контрагенте, дает и складе, на котором на находится товар контрагента. То есть открывая данную форму на планшете передо мной открывается список элементов документа РеализацияТоваровУслуг. Мне нужно сверху поставить поле ввода для наименования контрагента который, при вводе и выборе определенного контрагента оставит на форме элементы документа только выбранного контрагента. То есть своего рода упрощенный отбор. Надеюсь смог объяснить. Что я пробовал сделать:

1) Создал реквизит в форме Контрагент с типом СправочникСсылка.Контрагенты.
2) Перекинул его на форму. Путь к данным оставил тот же, то есть Контрагент.
3) Полю Контрагент на форме поставил галку Режим выбора из списка.
4) В событии НачалоВыбораИзСписка написал следующий код:
Элементы.Контрагент.СписокВыбора.Добавить(Контрагент);

Пробовал и другой код:
ЭтаФорма.Элементы.Контрагент.СписокВыбора.Добавить(Контрагент);

Пробовал и другие события, а именно : ПриИзменении, НачалоВыбора, но ничего не получается((((( Можете помочь решить данную проблему?( Я буду безумно вам благодарен и + к карме)
   vicof
 
1 - 09.12.20 - 15:40
В отбор динамического списка своего контрагента пихай
   Varlant1n
 
2 - 09.12.20 - 15:44
(1) Можно, пожалуйста, по подробнее?( Спасибо огромное заранее!
   vicof
 
3 - 09.12.20 - 15:44
СписокВыбора не для этих целей нужен
   vicof
 
4 - 09.12.20 - 15:45
   Varlant1n
 
5 - 09.12.20 - 15:45
(3) Я пробовал и табличное поле связать с табличной частью, для открытия доступа к ОтборСтрок и написал следующий код:
ЭлементыФормы.ТабличноеПоле.ОтборСтрок.Контрагент.Установить(ВыбранныйКонтрагент);

Но и это не сработало
   Varlant1n
 
6 - 09.12.20 - 15:47
(4) Такой метод не самый подходящий для планшета. Как я для себя это вижу, что нужно минимум нажатий по экрану для того, чтобы оставить список только с определенным контрагентом
   Varlant1n
 
7 - 09.12.20 - 15:50
Пару часов уже сижу над данной задачей и вот ну никаких идей( Хочется просто сделать удобный интерфейс для того, кто будет работать на планшете.
   vicof
 
8 - 09.12.20 - 15:51
(6) Ты до конца читал?
   Varlant1n
 
9 - 09.12.20 - 15:56
(8) Да, прочитал. Но как я понял, что там всё идет как раз таки через отбор.
   vicof
 
10 - 09.12.20 - 15:59
Тебе и нужен отбор.
   vicof
 
11 - 09.12.20 - 16:00
Хоть для планшета, хоть для компа.
   Varlant1n
 
12 - 09.12.20 - 16:02
(10) Да, всё именно так. Но в статье, которую вы скинули. Отбор работает таким образом, что он просто покажет предопределенные в коде элементы. То есть варианта написать своё - нет. Вот в этом и вся суть
   vicof
 
13 - 09.12.20 - 16:09
(13) Нет, отбор работает не таким образом. Ты можешь в правое значение отбора передать своего контрагента, которого ты определил в форме, устанавливая этот отбор программно при изменении значения в поле ввода контрагента.
   Varlant1n
 
14 - 09.12.20 - 16:11
(13) Хорошо, я попробую написать что-то по этой статье. Извините, что не так понял всё. Спасибо заранее.
   Varlant1n
 
15 - 10.12.20 - 09:49
(13) Здравствуйте еще раз. Сделал по статье, которую Вы скинули. Добавил на форму поле "Контрагент", путь к данным у которого к реквизиту "Контрагент" с типом Справочники.Контрагенты. Также добавил кнопку на форме "Отфильтровать", чтобы убирать по нажатию отбор и прописал следующий код:

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


Но при написании в строку какого-то контрагента, программа просто лезет в справочник и показывает мне этого контрагента. Никакого отбора нет. Помогите(((
   Fedor-1971
 
16 - 10.12.20 - 10:05
(15) Давай уточнимся:
1. на форме есть поле Контрагент
2. на форме есть динамический список документов реализация

Тебе нужно при выборе Контрагента отфильтровать реализации в динамическом списке по нему?
   Fedor-1971
 
17 - 10.12.20 - 10:29
(15) по коду:
ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаНе - Элементы группы объединяются по "И" и отрицаются, простыми словами: "Показать все элементы не относящиеся к твоему контрагенту"
Если очень припёрло использовать группу, то, как минимум, ГруппаИ, если планируешь добавить список контрагентов, то ГруппаИЛИ

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

И отладчиком проверь, что в Контрагент точно лежит то, что ты выбрал
   Varlant1n
 
18 - 10.12.20 - 10:29
(16) Да на форме есть динамический список документа "Реализация товаров и услуг", и есть добавленный мною реквизит "Контрагент". И мне нужно, чтобы на поле была строка ввода, куда будет вводиться наименование контрагента и после выбора определенного контрагента из выпадающего списка, чтобы на форме оставался только список документов, где участвует выбранные контрагент.
П.С. Мне нужно, чтобы изначально был открыт весь список документов, а только после ввода оставался список только с этим контрагентом, а не формирование списка только с одним выбранным контрагентом. Надеюсь, что смог объяснить)))
   Kassern
 
19 - 10.12.20 - 10:33
Через пользовательские настройки выведи отбор динамического списка на форму по контрагенту и все.
   Varlant1n
 
20 - 10.12.20 - 10:34
(17) Сделал как Вы сказали в отладчике, вроде бы все правильно. Но всё равно не происходит отбор. Строка ввода находит данного контрагента, но при выборе список становится пустым
   Fedor-1971
 
21 - 10.12.20 - 10:35
(20) Показывай код как сделал
   Varlant1n
 
22 - 10.12.20 - 10:39
(21) Процедура Отфильтровать(Команда)
    
    Для Каждого ЭлементОтбора Из Список.Отбор.Элементы Цикл
        Если ЭлементОтбора.Представление = "Программный отбор" Тогда
            Список.Отбор.Элементы.Удалить(ЭлементОтбора);
        КонецЕсли;
    КонецЦикла;
    
    Если НЕ Контрагент.Пустая() Тогда
        ЭлементОтбора = Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Контрагент");
        ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбора.Использование = Истина;
        ЭлементОтбора.ПравоеЗначение = Контрагент;
        ЭлементОтбора.Представление = "Программный отбор";
    КонецЕсли;

КонецПроцедуры
   Fedor-1971
 
23 - 10.12.20 - 10:43
(22) Выбери контрагента и в Настроить список посмотри как вписался отбор
   Fedor-1971
 
24 - 10.12.20 - 10:44
23+ и Контрагент у динамического списка есть?
   Varlant1n
 
25 - 10.12.20 - 10:45
(24) Да, есть
   Fedor-1971
 
26 - 10.12.20 - 10:48
(25) ПолеКомпоновкиДанных("Контрагент"); - вот именно так называется поле в ДС, может "Получатель" или как по другому

В настройку списка с выбранным Контрагентом смотрел, там что?
   Varlant1n
 
27 - 10.12.20 - 10:49
(23) У контрагента нет Настройки списка, ведь это реквизит с типом Справочник.Контрагнеты. Он не из динамического списка, а отдельно добавленный реквизит, а в дальнейшем поле на форме
   Varlant1n
 
28 - 10.12.20 - 10:50
(26) Так и называется в ДС, Контрагент
   Fedor-1971
 
29 - 10.12.20 - 10:52
(27) Забудь про поле Контрагент, ты настраиваешь Список, в его свойствах и ищи как прописалось условие отбора
   Varlant1n
 
30 - 10.12.20 - 10:55
(29) Я настраивал Список. Но когда я ставлю там условие отбора Контрагент Равно, то опять ничего не происходит. Форма просто открывается пустой
 
 
   Fedor-1971
 
31 - 10.12.20 - 10:57
(30) Погоди, что за "Форма просто открывается пустой" - ты же на ОДНОЙ форме поместил и ДС и поле Контрагент?
   Varlant1n
 
32 - 10.12.20 - 10:59
(31) Да, именно так. Но, когда я ставлю условие отбора в ДС, то список становится пустым
   Fedor-1971
 
33 - 10.12.20 - 11:02
(32) настройки списка посмотрел с установленным отбором?
   Varlant1n
 
34 - 10.12.20 - 11:03
(33) Да, там пусто
   Varlant1n
 
35 - 10.12.20 - 11:04
(34) Точнее ничего не меняется
   Fedor-1971
 
36 - 10.12.20 - 11:05
(34) что значит пусто? в настройках на вкладке отбора должен быть добавленный тобой отбор
   Fedor-1971
 
37 - 10.12.20 - 11:10
Ещё - Настроить список - Первая вкладка Отбор, что там есть? должна быть тобой добавленная строка, типа Контрагент Равно Твой контрагент
   Varlant1n
 
38 - 10.12.20 - 11:14
(37) Там есть левое значение Контрагент, а правого нет
   Fedor-1971
 
39 - 10.12.20 - 11:57
(38) так может у тебя в ДС не Контрагент, а Партнёр?
Попробуй выбрать руками и посмотри что получится
   Varlant1n
 
40 - 10.12.20 - 12:04
(39) Все также. В ДС так и называется контрагент. Я его выбираю для левого значения. А в правом у меня остается пусто. Так как я не могу там выбрать что-то не из ДС. Иначе получается же чушь
КОнтрагент = контрагенты и оба этих поля из дс, одно и то же поле)
   Varlant1n
 
41 - 10.12.20 - 12:04
(40) Контрагент = Контрагент*
   Fedor-1971
 
42 - 10.12.20 - 12:12
(40)  в правом значении выбери конкретного Контрагента, через кнопку выбора
   Fedor-1971
 
43 - 10.12.20 - 12:13
42+ Всё, отбор добавлен, теперь надо выяснить, почему не заполняется Правое значение
   Varlant1n
 
44 - 10.12.20 - 13:49
(43) Вот и я не могу этого понять(


Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.