Имя: Пароль:
1C
1С v8
Упр.Интерфейс - Открыть форму выбора с отбором
0 ares
 
03.11.11
11:02
Был вопрос v8: 8.2 как открыть форму выбора с отбором и с отображением списком , остался без ответа.

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

ФормаВыбора.ЭлементыФормы.СправочникСписок.ТекущаяСтрока = ДоговорКонтрагента;

              ФормаВыбора.Открыть();
КонецПроцедуры    

В упр. приложении чет не выходит, вот до чего дошел
&НаКлиенте
Процедура ТабличнаяЧасть1КонтрагентНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   
   СтандартнаяОбработка = Ложь;
   
   Параметры1 = Новый Структура("Отбор",Новый Структура("ВидКонтрагента", ПолучитьСсылкуВид1()));
   ОткрытьФормуМодально("Справочник.Контрагенты.ФормаВыбора",Параметры1);

   //можно еще так
       //Форма1 = ПолучитьФорму("Справочник.Контрагенты.ФормаВыбора",Параметры1);
   //Форма1.Открыть();
   
КонецПроцедуры

&НаСервереБезКонтекста
Функция ПолучитьСсылкуВид1()
   
   Ссылка1 = Перечисления.ВидКонтрагента.Вид1;
   Возврат Ссылка1;
   
КонецФункции

Т.е. офрма открывается, и открывается с отбором, но данные при выборе не передаются в на клиента. Форма просто закрывается. Т.е. по простому открывается , но не выбирается.

Прошу помощи, кто чем ))))
1 Defender aka LINN
 
03.11.11
11:07
СтандартнаяОбработка = Ложь;
   
ПараметрыФормы = Новый Структура("Отбор",Новый Структура("ВидКонтрагента", ПредопределенноеЗначение("Перечисление.ВидКонтрагента.Вид1")));
ОткрытьФорму("Справочник.Контрагенты.ФормаВыбора", ПараметрыФормы, Элемент);
2 ares
 
03.11.11
11:07
нужно было в очереждной раз описание почитать, забыл владельцп указать, вот так быдет работать

   Параметры1 = Новый Структура("Отбор",Новый Структура("ТП_ВидКонтрагента", ПолучитьСсылкуПК()));
   ОткрытьФормуМодально("Справочник.Контрагенты.ФормаВыбора",Параметры1,Элемент);
3 Defender aka LINN
 
03.11.11
11:08
(2) Называй переменные по-человечески. Что значит "Параметры1"? Почем не 2, 3 или 100500?
4 ares
 
03.11.11
11:12
(1)Спасибки разобрался, не совсем понял как работает

Ведь элемент - это на стороне клиента только существует на сервере его нет, как это мы его передаем на сервер, там то что у нас будет ?

Изначально думл передать владельца через

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

&НаСервере
Функция ПоместитьНаСервер1(Элемент)
   Возврат ПоместитьВоВременноеХранилище(Элемент,УникальныйИдентификатор); //УникальныйИдетификатор привязываем чтобы приявязать к форме, чтобы потом иметь возможность обращатся к ней
КонецФункции
5 ares
 
03.11.11
11:14
Блин ошибся вот так строка будет

Адрес = ПоместитьНаСервер1(Элемент);
6 Defender aka LINN
 
03.11.11
11:14
(5) И что ЭТО?
7 Defender aka LINN
 
03.11.11
11:15
И откуда такая страсть к цифре 1?
8 ares
 
03.11.11
11:17
дело не в цифрах, ты когда нибудь пол часа ломал голову почему код не работает, а потом оказывалось, что у тебя переменная имеет зарезерватрованное объектом название.

Ты скажи, как элемент существующий на клиенте передается на сервер, чет не пойму
9 ares
 
03.11.11
12:23
Как задать гибкие условия отбора

Например (ВидСравнения = ВидСравнения.НеВСписке)

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

&НаСервере
Процедура УстановкаОтбораПоВладельцу(УстановленныйОтбор,МассивВладельцев)
   
   //Не хочу искать был ли какой либо отбор, поэтому сбрасываю
   УстановленныйОтбор.Сбросить();
   
   ЭлОтбора = УстановленныйОтбор.Добавить("Владелец");  
   ЭлОтбора.ВидСравнения  = ВидСравнения.НеВСписке;
   ЭлОтбора.Использование  = Истина;
   ЭлОтбора.Значение = МассивВладельцев;
   
КонецПроцедуры
10 Defender aka LINN
 
03.11.11
12:31
(8) Нет, такого не бывало. Я отладчиком пользуюсь.
Кто куда передается, ты о чем вообще?
(9) Сейчас, я хрустальный шар протру, а то он на твое "не работает" неприличные картинки корчит.
11 ares
 
03.11.11
12:36
(10) А как тогда , можешь пример выложить , чет у меня никак не складывается картинка.

По идеи, Форма1 - существует на клиенте и отборы все на клиенте по ней должны быть. Тогда я вообще на сервер ничего не должен передавать, так ?
12 Defender aka LINN
 
03.11.11
12:40
(11) Форма и на клиенте и на сервере существует.
13 ares
 
03.11.11
12:40
Тогда мне в параметры при открытии или полуения формы нужно загнать свой отбор, как это сделать ?
Добавить работает только в толстом клиенте и на сервере !
14 ares
 
03.11.11
12:41
У тебя пример есть ? оч. бы помог понять. В книжках блин одиночные отборы есть, нафиг тогда  нужны эти листинги
15 ares
 
03.11.11
12:49
Написал так , логично ругается на Добавить

&НаКлиенте
Процедура ФилиалыФилиалНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
   СтандартнаяОбработка = Ложь;
   
   МассивВладельцев = Новый Массив();
   Для каждого стр из Объект.ПК Цикл
       МассивВладельцев.Добавить(стр.ПК);
   КонецЦикла;    
   
   Форма1 = ПолучитьФорму("Справочник.ТП_Филиалы.ФормаВыбора",,Элемент);
   
   Форма1.Список.Отбор.Элементы.Очистить();
   ЭлОтбора = Форма1.Список.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));  
   ЭлОтбора.ЛевоеЗначение  = Новый ПолеКомпоновкиДанных("Владелец");
   ЭлОтбора.ВидСравнения   = ВидСравненияКомпоновкиДанных.НеВСписке;
   ЭлОтбора.Использование  = Истина;
   ЭлОтбора.ПравоеЗначение = МассивВладельцев;
   
   Форма1.Открыть();
   
КонецПроцедуры
16 ares
 
03.11.11
12:53
Открывать форму на сервере не логично, кто ее там увидит. незнаю что делать. Это путь видимо не верный.
Основная теорема систематики: Новые системы плодят новые проблемы.