Имя: Пароль:
1C
1С v8
Неотключаемый отбор в УФ выбора. Как правильней.
0 simol
 
11.07.12
13:27
Есть УФ документа. На ней два реквизита документа Заказ поставщику и Поступление товаров и услуг. Необходимо при выборе Поступления открывать форму выбора с установленным не снимаемым отбором по Договору из заказа поставщику.

Сделал так:

&НаКлиенте
Процедура ДокументПоступленияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   
   СтандартнаяОбработка = Ложь;
   П = ПолучитьСтруктуруОтбора(Объект.ЗаказПоставщику);
   ФормаВыбора = ПолучитьФорму("Документ.ПоступлениеТоваровУслуг.Форма.ФормаВыбораУпр", П, Элемент);
   ФормаВыбора.Открыть();
   //ФормаВыбора.Список.Отбор.ДоступныеПоляОтбора.
   
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСтруктуруОтбора(ЗаказПоставщику)

   Возврат Новый Структура("Отбор", Новый Структура("ДоговорКонтрагента", ЗаказПоставщику.ДоговорКонтрагента));    

КонецФункции


Отбор устанавливается, но не нравится:
1) Не понимаю как тут сделать так, чтобы отбор нельзя было отключить или изменить через "Настроить список"
2) При открытии "Настроить списка" после такой установки отбора в отборе пропала колонка с представлением отбора http://screencast.com/t/NZDQW0X2CKp
1 Stim
 
11.07.12
13:31
открываешь форму выбора, передаешь в параметрах договор.
в форме выбора в проц при создании на серв обрабатываешь параметры, накладываешь отбор. как ограничить пользователя отбор - хз, вроде правами на док
2 V_V_V
 
11.07.12
13:33
ТабличноеПолеКурсов.Отбор.Элементы.Очистить();
ЭлементОтбора = ТабличноеПолеКурсов.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЭлементОтбора.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Валюта");
ЭлементОтбора.ВидСравнения = ВидСравненияКомпоновкиДанных.Равно;
ЭлементОтбора.Использование = Истина;
ЭлементОтбора.ПравоеЗначение = Объект.Ссылка;
ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
3 V_V_V
 
11.07.12
13:33
+(2) ключевое: ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
4 Stim
 
11.07.12
13:33
(2) а это на УФ выполнится?
5 V_V_V
 
11.07.12
13:34
(4) Это с УФ взято...
6 V_V_V
 
11.07.12
13:35
(4) Выполняется НаСервере
7 Агент Инфостарта
 
11.07.12
13:35
(0) Пример

&НаКлиенте
Процедура ДокументПоступленияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   
   СтандартнаяОбработка = Ложь;
   
   СтруктураПараметров = Новый Структура();
   ФормаСписка = ПолучитьФорму("Документ.ПоступлениеТоваровУслуг.Форма.ФормаВыбораУпр", СтруктураПараметров, Элемент);
   ЭлементОтбора = ОбщегоНазначенияУТКлиентСервер.ДобавитьОтбор(ФормаСписка.Список.Отбор,
                       "Дата",
                       НачалоДня(Объект.Дата),
                       ВидСравненияКомпоновкиДанных.МеньшеИлиРавно,
                       Истина);
   ЭлементОтбора.РежимОтображения = РежимОтображенияЭлементаНастройкиКомпоновкиДанных.Недоступный;
   ФормаСписка.Открыть();
   
КонецПроцедуры
8 simol
 
11.07.12
13:37
(2)да, спасибо. Я сразу не написал уточнение.

Хочу это делать вне самой формы выбора, что-то передать в ПолучитьФорму("
9 simol
 
11.07.12
13:38
(7)Это теплее, спасибо!
10 simol
 
11.07.12
13:39
А через параметры в ПолучитьФорму никак?
11 simol
 
11.07.12
13:40
Через параметры и чтобы в форме выбора не кодить. С отбором же получилось.
12 Агент Инфостарта
 
11.07.12
13:41
(10) Тогда в открываемой форме пишешь тоже самое для списка. Данные для отбора передаёшь через параметры.
13 simol
 
11.07.12
13:44
(12)Я к тому, что передав в параметрах Отбор я НИЧЕГО больше не делая в форме выбора получаю форму с установленным отбором. Может в параметры можно впихнуть НЕЧТО, чтобы сделать еще и недоступным.
14 simol
 
11.07.12
14:11
Результат такой:


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

&НаСервереБезКонтекста
Функция ПолучитьДоговор(ЗаказПоставщику)

   Возврат ЗаказПоставщику.ДоговорКонтрагента;    

КонецФункции


Представление пропало, потому, что колонка Использование была нереально широкой