Имя: Пароль:
1C
1С v8
8.2 Установка отбора в динамическом списке по новому объекту
0 Ellowis
 
02.11.11
15:55
Доброго времени суток.
Образовалась такая проблема:
Справочник, при создании нового элемента, на форме в динамическом списке необходимо установить отбор по этому еще не записанному элементу. Делаю так:

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

Отбор устанавливается, однако после записи элемента в отборе в правом значении так и остается ссылка на несуществующий объект (например: <Объект не найден> (94:b9fa002618da943311e1054654133ac9))

Я полагал, что, так как я установил для элемента ссылку нового, то при записи элемент будет иметь именно ту ссылку, которую я установил ранее. И соответственно в отборе сразу окажется записанный элемент.
Но так не получилось, я неправ в логике или что-то еще нужно было сделать?
1 mikecool
 
02.11.11
15:56
СсылкаНового = Справочники[Объект.Ссылка.Метаданные().Имя].ПолучитьСсылку(Новый УникальныйИдентификатор());
а так?
2 Ellowis
 
02.11.11
16:07
Ничего не изменилось
3 DmitrO
 
02.11.11
16:08
Наверно объект при записи (в событии объекта) сам себе назначает ссылку нового. Т.о. он переназначает твою установку.
4 DmitrO
 
02.11.11
16:11
(3)+ Смотри событие объекта ПередЗаписью.
5 Defender aka LINN
 
02.11.11
16:18
(0) Ты установил ссылку для ДРУГОГО объекта.
6 Defender aka LINN
 
02.11.11
16:20
И вообще, на кой устанавливать отбор по несуществующему элементу?
7 acsent
 
02.11.11
16:22
ссылку нового нужно запоминать отдельно и устанавливать в процедуре
ПриЗаписиНаСервере
8 Ellowis
 
02.11.11
16:23
(4) Нет, проверил - нигде более программно назначение новой ссылки не происходит
(5) Для какого другого? Не понял
(6) Например: дабы не показывать записи не относящиеся к этому новому объекту
9 Ellowis
 
02.11.11
16:24
(7) Т.е. полученную ссылку положить в глобальную переменную формы и при записи установить ее снова?
10 Mort
 
02.11.11
16:25
Динамический список на форме элемента это быдлячество.
11 Ellowis
 
02.11.11
16:30
(10) Спасибо за лестный отзыв.
Получается что в 1С работают быдлокодеры?
12 Mort
 
02.11.11
16:31
(11) А где ты в 1С видел такое?
13 Mort
 
02.11.11
16:31
+(12) прим. телепатируя, что речь идет про типовые.
14 Ellowis
 
02.11.11
16:32
(12) Форма элемента номенклатура, динамический список показывающий единицы измерения. Последняя УПП - надеюсь типовая?
15 Defender aka LINN
 
02.11.11
16:34
(14) Там устанавливается ссылка по несуществующему элементу?
16 Mort
 
02.11.11
16:36
(14) Да есть такое. Даже в управляемую форму умудрились запихать. Там все это кодом огорожено, чтобы не показывать незаписанных элементов, и да, быдлоинтерфейс.
17 Ellowis
 
02.11.11
16:39
(15) Нет, там устанавливается отбор на пустую ссылку, однако лежит динамический список. Именно о нем говорилось в (10)
(16) А как бы сделали Вы, не былокодер конечно же?
18 Mort
 
02.11.11
16:45
(18) Для просмотра списка единиц в УФ по перейти. По умолчанию создается автоматом и это удовлетворяет в 80%
19 Ellowis
 
02.11.11
16:57
(18) Остальные 20?
20 Defender aka LINN
 
02.11.11
17:00
(17) Проблема решена?
21 Ellowis
 
02.11.11
17:01
(20) Нет, пробую вариант с запоминанием ссылки
22 Mort
 
02.11.11
17:04
(19) Остальные 20 перейдут в список и напилят там, или добавляением прямо из формы элементы если совсем удобно сделать.

Мыши плакали и кололись...
23 Mort
 
02.11.11
17:05
+(22) Добавлением не в список, имеется в виду.
24 Ellowis
 
02.11.11
17:09
(23) Мысль ваша мне ясна, но мне она к сожалению не подходит
25 Mort
 
02.11.11
17:17
(24) Тогда делай как в УПП. Вынеси список в закладку и не показывай его пока элемент не записан. Все равно добавлять что-то до записи элемента не получится (а если получится это будет ещё хуже).
26 Ellowis
 
02.11.11
17:22
(25) Спасибо за участие, но не я решаю как должна выглядеть форма для пользователя
Сделал как сказано в (7)
27 Mort
 
02.11.11
17:24
(26) А элементы добавляются? Прикольно будет открыть форму нового, накидать туда элементов и уйти не сохраняя элемент.
28 Defender aka LINN
 
02.11.11
17:24
(26) А вот через это 50% кривого кода и заводится в конфигурациях.
29 Ellowis
 
02.11.11
17:32
(27) Нет, элементы не добавляются без записи владельца
(28) Ну не могу я спрятать этот список до записи элемента, требования такие. А соблюсти корректное отображение элементов должен. Все равно перед началом ввода элементов в это поле основной элемент будет записан.