8.х Отбор по введенным полям

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Anatoliy_SS, 26 июн 2019.

  1. TopicStarter Overlay
    Anatoliy_SS
    Offline

    Anatoliy_SS

    Регистрация:
    25 июн 2019
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Доброго времени суток.
    Только начинаю познавать 1С, поэтому прошу не пинать. Ну или хотя-бы пинать в сторону нужной инфы.
    Короч.
    Есть форма, в которой нужно при выборе организации и контрагента отбирать договоры.
    Это можно делать только программно? И почему отбор не работает через Реквизиты - Договор - Связи параметров выбора?
    photo_2019-06-25_12-07-38.jpg
  2. 1cUserAndrew
    Offline

    1cUserAndrew Профессионал в 1С Команда форума

    Регистрация:
    27 май 2010
    Сообщения:
    5.151
    Симпатии:
    217
    Баллы:
    104
    Вы правильно мыслите в сторону связей параметров выбора.
    Может, просто не совсем верно настроили.
    Покажите, как настроено.
    --- Объединение сообщений, 26 июн 2019 ---
    (в свойствах реквизита в дереве конфигурации)
  3. TopicStarter Overlay
    Anatoliy_SS
    Offline

    Anatoliy_SS

    Регистрация:
    25 июн 2019
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    В Связи параметров выбора:
    Отбор.Владелец | Контрагент | Очищать
    Отбор.Организация | Организация | Очищать
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.880
    Симпатии:
    1.028
    Баллы:
    204
    УФ в обычном приложении не полноценные, поэтому тока параметрами открытия формы кодом можно реализовать.

    P.S. Вернее, обычные формы ничего не знают про параметры, передаваемые между формами в виде структуры, поэтому ничего не работает.
    Как вариант, можно у нужного справочника добавить управляемую форму, либо ее использовать для выбора значений, тогда все должно работать.
    Выбрать определенную форму выбора справочника можно в свойствах поля.
    Последнее редактирование: 26 июн 2019
  5. TopicStarter Overlay
    Anatoliy_SS
    Offline

    Anatoliy_SS

    Регистрация:
    25 июн 2019
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    А кодом как?
  6. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.880
    Симпатии:
    1.028
    Баллы:
    204
    Да как обычно для обычных форм:

    Код:
    Форма = Справочники.<ИмяСправочника>.ПолучитьФормуВыбора(, <ИмяЭлементаФормыВКотороеВернетсяВыбранноеЗначение>);
    Форма.ЗакрыватьПриВыборе = Истина;
    
    ПолеОтбора = Форма.Список.Отбор.<ИмяКолонкиОтбора>;
    ПолеОтбора.Значение = <Значение>;
    ПолеОтбора.Использование = Истина;
    ....
    Форма.ОткрытьМодально();
    
    или
    
    ВыбранноеЗначение = Форма.ОткрытьМодально();
  7. TopicStarter Overlay
    Anatoliy_SS
    Offline

    Anatoliy_SS

    Регистрация:
    25 июн 2019
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Получилось добавить отбор по организации, но. Как сюда же добавить второй отбор, по контрагентам?
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.880
    Симпатии:
    1.028
    Баллы:
    204
    Если на форме списка присутствует колонка "Организация", то отбор устанавливается так же как и по владельцу.
    Если колонки нет, то отбор установить не возможно, придется сначала добавить колонку в список.
  9. TopicStarter Overlay
    Anatoliy_SS
    Offline

    Anatoliy_SS

    Регистрация:
    25 июн 2019
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Код:
        СтандартнаяОбработка = ложь;
       
        ФормаВыбора = Справочники.ДоговорыКонтрагентов.ПолучитьФормуВыбора("ФормаВыбора");
        ФормаВыбора.ЗакрыватьПриВыборе = Истина;
       
        ПолеОтбора                     = ФормаВыбора.СправочникСписок.Отбор.Организация;
        ПолеОтбора.ВидСравнения      = ВидСравнения.Равно;
        ПолеОтбора.Значение          = Объект.Организация;
        ПолеОтбора.Использование     = Истина;
       
        ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.Организация.Доступность = Ложь;
       
       
        ЭлементОтбора                 = ФормаВыбора.СправочникСписок.Отбор.ЭлементыФормы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));      // Вот тут пишет ошибку "Поле объекта не обнаружено (Элементы формы)
        ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Контрагент");   
        ЭлементОтбора.ВидСравнения   = ВидСравнения.Равно;
        ЭлементОтбора.Использование  = Истина;
        ЭлементОтбора.ПравоеЗначение = Объект.Контрагент;
    
    --- Объединение сообщений, 27 июн 2019 ---
    Есть колонка "Организация" по ней отбор установился. Колонки "Контрагент" нету.
  10. TopicStarter Overlay
    Anatoliy_SS
    Offline

    Anatoliy_SS

    Регистрация:
    25 июн 2019
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Немного разобрался, вот тут ошибка:
    Код:
    ЭлементОтбора = ФормаВыбора.СправочникСписок.Отбор.ЭлементыФормы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных")); // ЭлементыФормы нужно было убрать
    
    Но. Теперь получил новую ошибку в этой же строке:
    Ошибка при вызове метода контекста (Добавить) по причине:
    Метод не доступен для данного объекта
  11. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    9.880
    Симпатии:
    1.028
    Баллы:
    204
    Эээээ.....почему нельзя сделать проще?

    Код:
    СтандартнаяОбработка = ложь;
    
    ФормаВыбора = Справочники.ДоговорыКонтрагентов.ПолучитьФормуВыбора();
    ФормаВыбора.ЗакрыватьПриВыборе = Истина;
    
    ПолеОтбора = ФормаВыбора.СправочникСписок.Отбор.Организация;
    ПолеОтбора.ВидСравнения = ВидСравнения.Равно;
    ПолеОтбора.Значение = Объект.Организация;
    ПолеОтбора.Использование = Истина;
    
    ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.Организация.Доступность = Ложь;
    
    ПолеОтбора = ФормаВыбора.СправочникСписок.Отбор.Владелец;
    ПолеОтбора.ВидСравнения = ВидСравнения.Равно;
    ПолеОтбора.Значение = Объект.Контрагент;
    ПолеОтбора.Использование = Истина;
    
    ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.Владелец.Доступность = Ложь;
    Anatoliy_SS нравится это.
  12. TopicStarter Overlay
    Anatoliy_SS
    Offline

    Anatoliy_SS

    Регистрация:
    25 июн 2019
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Вау. Заработало.
    Огромное спасибо.
    --- Объединение сообщений, 27 июн 2019 ---
    Вот тут у меня не получалось) Несколько способов пробовал, но не мог сделать программно отбор по контрагенту.
    А в связях параметров выбора работал отбор только по Контрагенту.

    В итоге у меня не получалось через связиПВ сделать отбор по организации, а программно не получалось отобрать по Контрагенту.
    Последнее редактирование: 27 июн 2019
  13. TopicStarter Overlay
    Anatoliy_SS
    Offline

    Anatoliy_SS

    Регистрация:
    25 июн 2019
    Сообщения:
    8
    Симпатии:
    0
    Баллы:
    1
    Даже понял в чем проблема.
    ПолеОтбора = ФормаВыбора.СправочникСписок.Отбор.Владелец

    А я несколько способов пробовал, но везде указывал Отбор.Контрагент