Имя: Пароль:
1C
1С v8
Открыть форму списка РС с отбором по периоду
0 егаис
 
11.04.22
09:54
Коллеги, нужна помощь.
На форме обработки есть поле отбора с типом СтандартныйПериод
Есть РС с измерением Дата. В обработке, для выбора, открываем форму списка РС.
Каким образом можно передать в структуру отбора условие, что дата в РС должна быть внутри СтандратногПериода?
1 lEvGl
 
гуру
11.04.22
10:03
ну как, РегистрСведенийСписок.Отбор.Дата.Установить
так?
2 егаис
 
11.04.22
10:05
хм, стандартный период = интервал
3 егаис
 
11.04.22
10:06
имхо, только в форме списка РС присоздании устанавливать отбор, так получается?
4 youalex
 
11.04.22
10:56
В принципе можно через ПолучитьФорму() менять ее контекст
5 dreizehn
 
11.04.22
11:01
(0) ОФ/УФ?
6 lEvGl
 
гуру
11.04.22
11:23
(2) получить из стандартного периода дату видимо, думаю это возможно
(5) ну раз "присоздании", значит уф
7 dreizehn
 
11.04.22
11:31
(6) > значит уф
Указать при открытии формы параметр ФиксированныеНастройки.
8 егаис
 
11.04.22
12:46
все штатно, спасибо за участие
&НаКлиенте
Процедура ОтборСделки(Команда)
    
    ФормаРегистра = ПолучитьФорму("РегистрСведений.МежфирменныеРеализации.ФормаСписка");
    ФормаРегистра.Список.Отбор.Элементы.Очистить();
    
    Если НЕ ОтчетКонечныйЗаказчик.Пустая() Тогда
        ЭлементОтбораСотрудник = ФормаРегистра.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбораСотрудник.ЛевоеЗначение = ФормаРегистра.Список.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Заказчик").Поле;
        ЭлементОтбораСотрудник.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
        ЭлементОтбораСотрудник.Использование = Истина;
        ЭлементОтбораСотрудник.ПравоеЗначение = ОтчетКонечныйЗаказчик;
    КонецЕсли;
    
    Если НЕ ОтчетПериод.ДатаНачала = Дата(1,1,1) Тогда
        ЭлементОтбораДатаС = ФормаРегистра.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбораДатаС.ЛевоеЗначение = ФормаРегистра.Список.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Период").Поле;
        ЭлементОтбораДатаС.ВидСравнения = ВидСравненияКомпоновкиДанных.БольшеИлиРавно;
        ЭлементОтбораДатаС.Использование = Истина;
        ЭлементОтбораДатаС.ПравоеЗначение = НачалоДня(ОтчетПериод.ДатаНачала);
    КонецЕсли;    
    
    Если НЕ ОтчетПериод.ДатаОкончания = Дата(1,1,1) Тогда
        ЭлементОтбораДатаПо = ФормаРегистра.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
        ЭлементОтбораДатаПо.ЛевоеЗначение = ФормаРегистра.Список.Отбор.ДоступныеПоляОтбора.Элементы.Найти("Период").Поле;
        ЭлементОтбораДатаПо.ВидСравнения = ВидСравненияКомпоновкиДанных.МеньшеИлиРавно;
        ЭлементОтбораДатаПо.Использование = Истина;
        ЭлементОтбораДатаПо.ПравоеЗначение = КонецДня(ОтчетПериод.ДатаОкончания);
    КонецЕсли;    
    
    ФормаРегистра.Открыть();

КонецПроцедуры
9 youalex
 
11.04.22
13:09
(8)
(7) кстати, вполне годный вариант