Имя: Пароль:
1C
 
Как установить отбор в открываемой форме?
🠗 (Волшебник 18.03.2025 10:57)
0 program345
 
14.03.25
08:42
Всем привет,

Из документа открываю формусписка договоры, нужно установить условие чтобы договоры были только выбранного контрагента и содержали в названии "ССГ". Куда копать?
1 Волшебник
 
14.03.25
08:51
Добавьте ещё режим выбора
2 program345
 
14.03.25
08:56
(1) что значит режим выбора?
3 Волшебник
 
14.03.25
08:59
(2) Вы же отключили стандартную обработку, должны знать
4 program345
 
14.03.25
09:12
(3) П.Вставить("РежимВыбора",Истина);
ты про это?
5 Волшебник
 
14.03.25
09:21
(4) Вы случайно буквы переставляете или пытаетесь думать?
https://its.1c.ru/db/metod8dev/content/2222/hdoc
6 Мультук
 
гуру
14.03.25
09:23
(0)

google:
1C+УФ+формы+выбора

https://infostart.ru/1c/articles/1233756/

>>только выбранного контрагента и содержали в названии "ССГ"
Пример 6 в указанной ваше статье
7 program345
 
14.03.25
13:31
(6) а как смотреть какие есть параметры для отбора? интересуют точные названия.

вопрос про ЭлементОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Владелец"); Кроме владелец по каким полям еще возможен отбор?





///////////////////////////////////////////////////////////////////////////////////////////////









&НаКлиенте
Процедура ДоговорНачалоВыбора(Элемент, ДанныеВыбора, ВыборДобавлением, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;


    НастройкиКомпоновки = Новый НастройкиКомпоновкиДанных;


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

    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("ФиксированныеНастройки", НастройкиКомпоновки);
    ПараметрыФормы.Вставить("РежимВыбора",Истина);
        
    ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"Подбор");

    ОткрытьФорму("Справочник.Договоры.ФормаВыбора",ПараметрыФормы,
            ЭтаФорма, , , , ОбработкаВыбора);    
    
    
        

КонецПроцедуры

&НаКлиенте
Процедура ПриЗакрытииФормыВыбора(Значение, ДопПараметры) Экспорт
    Если Значение = Неопределено Тогда
        Возврат;
    КонецЕсли;
    
    Объект.Договор = Значение;
    
КонецПроцедуры
8 program345
 
14.03.25
13:36
неужели надо заходить в форму подбора и смотреть там в отладчике?
9 Волшебник
 
14.03.25
13:40
"Наименованее" - хе-хе
10 program345
 
14.03.25
13:46
(9) это то понятно, вопрос как раз в том, чтобы копировать параметры для отбора, а не писать...
11 Волшебник
 
14.03.25
13:55
(10) Только не говорите, что этот программный код запускался
12 Мультук
 
гуру
14.03.25
14:12
(10)

>>неужели надо заходить в форму подбора и смотреть там в отладчике
Можно зайти в нужную форму, в динамический "Список" и копировать поля оттуда


>>чтобы копировать параметры для отбора
Эта имена полей
13 program345
 
14.03.25
15:24
(12) понял, спасибо за помощь, руку пожал.
14 program345
 
14.03.25
15:25
(11) почему?
15 Волшебник
 
14.03.25
15:27
(14) потому что поля "Наименованее" не существует
16 program345
 
14.03.25
15:41
(15) ааа, пятнично.
17 Garykom
 
гуру
14.03.25
20:15
(0) ПараметрыВыбора что не подходят?
18 program345
 
17.03.25
13:15
(17) ты имеешь в виду сделать так? так не находит ни одного договора. Видимо тут идет вид сравнения равно.
19 youalex
 
17.03.25
13:21
(18) может в договоре есть более конкретный признак, чем "ССГ" в наименовании?
20 program345
 
17.03.25
13:21
(12) отсюда? у меня нет ДинамическогоСписка, есть реквизит ссылочного типа.
21 program345
 
17.03.25
13:23
(19) такое тз, открывать в форме подбора договоры с наименованием, содержащим "ССГ" + чтобы договоры были только выбранного контрагента.
22 Voronve
 
17.03.25
13:24
(21) ТЗ ?.. Бюджет какой ?
23 youalex
 
17.03.25
13:27
(7) >Процедура ПриЗакрытииФормыВыбора

Это не нужно, если для формы выбора установить владельцем элемент Договор
24 Мультук
 
гуру
17.03.25
13:32
(20)

>> ОткрытьФорму("Справочник.Договоры.ФормаВыбора",

см рис
25 program345
 
17.03.25
13:37
(22) нет бюджета.
(23) если код такой, то после выбора элемента справочника Договоры он не заполняется в документе:




СтандартнаяОбработка = Ложь;
       
    НастройкиКомпоновки = Новый НастройкиКомпоновкиДанных;

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

    ПараметрыФормы = Новый Структура;
    ПараметрыФормы.Вставить("ФиксированныеНастройки", НастройкиКомпоновки);
    ПараметрыФормы.Вставить("РежимВыбора",Истина);
    //ПараметрыФормы.Вставить("МножественныйВыбор",Истина);
    
    //ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииФормыВыбора", ЭтаФорма,"Подбор");

    ОткрытьФорму("Справочник.Договоры.ФормаВыбора",ПараметрыФормы,
            ЭтаФорма, , , , );    



26 program345
 
17.03.25
13:40
(24) теперь понял, спасибо!
27 Мультук
 
гуру
17.03.25
13:40
(25)

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


Почему слева у  строковое поле "Наименование", а сравниваете вы его со числом 2
28 program345
 
17.03.25
13:44
(27) по тз сначала хотели строку "ссг", потом "2"
29 Волшебник
 
17.03.25
13:46
(28) Что за дичь у вас там творится?
30 youalex
 
17.03.25
15:01
(25) да не ЭтаФорма, а Элементы.Договор (или как он у тебя)
31 program345
 
18.03.25
10:54
(29) сам в шоке.
(30) да, проверил, все встало, спасибо!