Имя: Пароль:
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
Открывать форму на сервере не логично, кто ее там увидит. незнаю что делать. Это путь видимо не верный.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn