Имя: Пароль:
1C
 
Подскажите как установить отбор в справочнике.
0 SashaNNV
 
02.08.09
17:41
Суть такова, есть документ в ТЧ документа есть реквизит «справочник «СПР»».

В шапке документа есть поле из этого-же справочника.

Как установить отбор при выборе реквизита «справочник «СПР»» в ТЧ документа на только те строки справочника в которых есть совпадающий реквизит из шапки документа?

Заранее спасибо за ответ.
1 ТелепатБот
 
гуру
02.08.09
17:41
2 AndrejFAA
 
02.08.09
17:46
УстановитьОтбор(<?>,);
Синтаксис:
УстановитьОтбор(<ИмяОтбора>,<ЗначениеОтбора>)
Назначение:
Установить отбор списка справочника.
Параметры:
<ИмяОтбора> - строка с именем реквизита справочника (по которому возможен отбор, т.е. взведен флажок ''Отбор по реквизиту'' в свойствах реквизита справочника), по которому установлен отбор. Если это значение пустое, то отбор отключается.
<ЗначениеОтбора> - необязательный параметр. Значение отбора.
Замечание:
Метод доступен только в контексте Модуля формы списка справочника и относится ко всему
3 SashaNNV
 
02.08.09
17:49
УстановитьОтбор(<?>,); это понятно, куда его ставить в документ или в справочник приоткрытии, если в справочник, то как перенести реквизит из шапки документа?
4 AndrejFAA
 
02.08.09
17:51
Если используете типовую конфигурацию, то можно, например в ТиС, посмотреть справочник Номенклатура при ткрытии формы списка "ДляПодбора" процедуру ПриОткрытии.
5 Rie
 
02.08.09
17:54
(3) Если для выбора - опиши предопределённую процедуру ПриНачалеВыбораЗначения, которая отследит, откуда производится выбор значения и откроет нужную форму справочника нужным тебе образом.
Для простоты можешь при этом вместо выбора делать подбор.
6 SashaNNV
 
02.08.09
17:54
(4) К сожалению типовой конфигурации нет.
7 AndrejFAA
 
02.08.09
18:08
Если негде подгядеть. Как вариант (5).

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

В справочнике:

Процедура ПриОткрытии()
  УстановитьОтбор("Колонка", Форма.Параметр);
  Форма.ОбработкаВыбораСтроки(1);
КонецПроцедуры

Процедура ПриВыбореСтроки()
   Форма.Параметр = ТекущийЭлемент();
КонецПроцедуры
8 Cthulhu
 
02.08.09
18:19
(7): очень вредный и не совсем умный совет.
(0): в модуле документа:
Процедура ПриНачалеВыбораЗначения(НаимРекв,ФСО)
   Перемт Конт;
   Если НаимРекв="<РеквизитТабЧастиКоторыйВыбиратьИзСПР>" Тогда
       ФСО=0;
       ОткрытьФорму("Справочник.СПР",тКонт);
       тКонт.УстановитьОтбор("<ИмяРеквизитаСправочникаДляОтбора>",<ЗначениеРеквизитаШапкиДокументаТипаСправочникСПР>);
       тКонт.Форма.Обновить();// тКонт.ВидыОтбора(""); - опция чтобы не отрубили отбор в процессе выбора
   КонецЕсли;
КонецПроцедуры
9 AndrejFAA
 
02.08.09
18:24
(8) Вопросик. Я, конечно, не проверял данный вариант. А можно использовать УстановитьОтбор в модуле документа? Если верить ЖКК, то данный метод можно использовать только в форме списка справочника.
10 Guk
 
02.08.09
18:26
(9) там контекст формы списка справочника...
11 AndrejFAA
 
02.08.09
18:29
(10) Это я понял. Ладно, проверю ради любопытства. Насчёт модальности я не против, что это глупо. )
12 Cthulhu
 
02.08.09
18:32
(11): только синтаксис подправь )))
13 AndrejFAA
 
02.08.09
18:38
(12) Так понятно, что нужно обрабатывать процедуру ОбработкаПодбора. Я лишь использовал данный код в одном месте, его и скопировал, вырезав кучу лишнего. ) Просто в то время лень было обрабатывать в ОбработкаПодбора. Там и так хватала кода + мне нужно было именно модальность, чтобы пользователь никуда больше не ушёл от выбора.
14 SashaNNV
 
02.08.09
19:03
Интересно, а можно установитьотбор по нескольким реквизитам?
15 AndrejFAA
 
02.08.09
19:28
С ходу либо ИспользоватьСписокЭлементов, либо вторая ссылка из (2), но для справочников.
16 Cthulhu
 
02.08.09
19:39
(13): ну а для (8) кроме того что там нарисовано - не надо больше ни-че-го..
(кстати я именно про синтаксис (8) имел ввиду - ты вроде решил попробовать).
А в (8) пользователь стандартно никуда не уйдет тоже, так или иначе или выберет или закроет выбор, но без иодальности с возможностью позырить-поправить ещё что-нибудь..
17 AndrejFAA
 
02.08.09
19:55
(16) Не поленился, проверил. Работает. :) Но мне в одном случае нужно именно без "с возможностью позырить-поправить ещё что-нибудь...".
18 AndrejFAA
 
02.08.09
20:01
Ладно. Поправлю в другом месте, где простой выбор с отбором. Так красивше получается, чем "парсить" параметр при открытии формы выбора. )
19 SashaNNV
 
02.08.09
20:31
Спасибо за советы, решил свою задачу через ИспользоватьСписокЭлементов.
20 Cthulhu
 
02.08.09
21:26
(18): по способу (8) возвращаемое значение ловится в предопределенной процедуре "ОбработкаВыбораЗначения" (и хоть обпарсися там - можешь точно так же ФСО обнулять и подменять стандартные действия (по помещению выбранного значения в реквизит) любыми своими действиями)))