Имя: Пароль:
1C
1С v8
Не могу передать отбор параметром
0 sidrd
 
08.07.12
20:21
Есть таблица с сотрудниками, в ней допустим 3 сотрудника записаны, с типом спр.физлица, есть другая таблица там тоже есть физ лица и при выборе физ лица должны в форме выбора отображаться только те физлица что есть в таблице сотрудники.
Форма выбора её не существует, её создает 1С сама программно. Так вот как передать параметр той форме выбора с отбором в списке.
Делаю так:

&НаКлиенте
Процедура УдержанияФизЛицоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

   СтандартнаяОбработка = Ложь;

   ТекущаяСтрока = Элементы.Сотрудники.ТекущиеДанные;
   ЗначениеОтбора = Новый Структура();

   Для Каждого СтрокаТаблицы Из Объект.Сотрудники Цикл
   
   ЗначениеОтбора = Новый Структура("ФизЛицо", СтрокаТаблицы.ФизЛицо);
   
   КонецЦикла;
   

    ПараметрыВыбора = Новый Структура("Отбор", ЗначениеОтбора);

ФормаВыбор = ПолучитьФорму("Справочник.ФизическиеЛица.ФормаВыбора", ПараметрыВыбора);
//ФормаВыбор.Список.отбор = ПараметрыВыбора;
//ФормаВыбора.Список.отбор.физлицо.использовать=истина;
//ФормаВыбора.Список.отбор.физлицо.значение=ПараметрыВыбора;

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

Отбор не отрабатывает, даже если и есть форма выбора существующая физически, а не создающаяся программно.

Как тут праильно передать параметры с отбором для списка формыВыбора?
1 AlexNew
 
08.07.12
20:27
Чо это было?
2 prosto-nik
 
08.07.12
20:36
а к полю ФизЛица назначить список выбора, не?
3 sidrd
 
08.07.12
20:43
К полю физ лица список выбора не получиться назначить
4 prosto-nik
 
08.07.12
20:45
почему?
5 sidrd
 
08.07.12
20:47
Ну потому что всё время разные сотрудники будут, разные записи бывают. А в списке выбора указываются с определенным типом, а мне нужны все те кто в таблице сотрудники присутствуют.
6 sidrd
 
08.07.12
20:55
Можно сделать через процедуру обработки связи параметров выбора, но там в отборе будет текущий элемент который выбран а не все
7 prosto-nik
 
08.07.12
21:00
при изменении вот этого Объект.Сотрудники меняй СписокВыбора и все
8 prosto-nik
 
08.07.12
21:02
или ПриВыборе из списка формируй его из Объект.Сотрудники
9 sidrd
 
08.07.12
21:06
Так вот я это и хочу. Я так и формирую, там в цикле получаю всех текущих сотрудников, записываю их в структуру, а отбор то не выполняется, не передаётся он новой форме
10 prosto-nik
 
08.07.12
21:08
на мой взгляд у тебя
Элементы.Сотрудники = Объект.Сотрудники
или я что то не понимаю?
11 prosto-nik
 
08.07.12
21:08
а говоришь что две таб части
12 sidrd
 
08.07.12
21:11
Объект.Сотрудники  это и есть Элементы.Сотрудники только первое Объект а второе его представление как элемент формы. Вот тут сотрудники у нас и находятся. Есть вторая таблица УчетРабВремени при добовлении новой строки и выборе из колонки физ лица там должна открыться форма выбора с физ лицами но только теми которые есть в Сотрудниках
13 prosto-nik
 
08.07.12
21:13
в твоем коде про "УчетРабВремени " ни слова...
14 V_V_V
 
08.07.12
21:15
(0) Может я чего и недопонял, но зачем используешь НачалоВыбора? А не ПриИзменении?
15 sidrd
 
08.07.12
21:15
сорри удержания: из таблицы УдержанияФизЛицо.  Я и при изменении пробовал.
16 prosto-nik
 
08.07.12
21:17
(14) - ?
17 prosto-nik
 
08.07.12
21:18
приизменениии отбор уже излишен уже все выбрано ибо...
18 sidrd
 
08.07.12
21:19
Есть таблица с сотрудниками, в ней допустим 3 сотрудника записаны, с типом спр.физлица, есть другая таблица там тоже есть физ лица и при выборе физ лица должны в форме выбора отображаться только те физлица что есть в таблице сотрудники.

Та вторая таблица и есть УдержанияФизЛиц таблица в которой мы добовляя новую строчку тыкаем в колонку физ лицо, там и открывается наша форма выбора которая создается программно в ней и должен сработать отбор где должны быть все сотрудники что записаны в табл. сотрудники.

Потому НачалоВыбора и делаю.
19 prosto-nik
 
08.07.12
21:36
&НаКлиенте
Процедура УдержанияФизЛицоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

   СтандартнаяОбработка = Ложь;

   СписокВыбора = СписокФизЛицИзПервойТаблЧасти;
   
   ФЛ = СписокВыбора.ВыбратьЭлемент("Выберите ФЛ");
   
КонецПроцедуры
20 prosto-nik
 
08.07.12
21:41
СписокВыбора.ВыбратьЭлемент("Выберите ФЛ")

Описание:
Вызывает окно для интерактивного выбора одного из элементов, входящих в список значений.
21 sidrd
 
08.07.12
22:28
Мне надо чтобы в списке выбора отображались только те сотрудники что есть в таблице сотрудники, мне не надо выбирать сразу кого то одного )
22 sidrd
 
09.07.12
01:54
Сделал, работает:

&НаКлиенте
Процедура УдержанияФизЛицоНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;


МассивСотрудников = Новый Массив;
Для Каждого СтрТабЧасти Из Объект.Сотрудники Цикл
 МассивСотрудников.Добавить(СтрТабЧасти.ФизЛицо);
КонецЦикла;


УсловияОтбора  = Новый Структура ("Ссылка" , МассивСотрудников);
ПараметрыФормы = Новый Структура ("Отбор", УсловияОтбора);

ФормаВыб = ОткрытьФормуМодально("Справочник.ФизическиеЛица.Форма.ФормаВыбораУпр",  ПараметрыФормы);

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

Только при выборе не возвращается выбранный параметр.

Как сделать чтобы параметр вернулся?

пробовал указывать владельца формы не работает.
23 sanja26
 
09.07.12
02:03
попробуй переменную из ПараметрыФормы получать
24 GANR
 
09.07.12
03:26
(0) Для данной ситуации код будет примерно таким:

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

Если что-то непонятно - в "Справка/Индекс справки" набираем "КоллекцияЭлементовОтбораКомпоновкиДанных" (в нашем случае ФормаВыбор.Список.Отбор.Элементы - это и есть та-самая коллекция)