Справочники

  • Автор темы rubi
  • Дата начала
R

rubi

#1
Привет всем. У меня такая проблема - в табличной чати есть реквизит Подразделение, тип реквизита Справочник.Подразделения, при выборе значения в программе она сначала запускает справочник Организации (Юр. лица), т.к. он родительский, и только потом подразделения. Как мне сразу, проскакивая родительский справочник, попасть в справочник подразделений.
 

Zab

Well-known member
07.08.2006
583
0
#2
Есть метод Использоватьродителя(). Но тебе скорее всего надо вписать в свойствах элемента формы "Связан с" имя элемента, в которм выбирается Организация, и будет тебе счастье.
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#3
Zab, xто-то не нашел я подобного метода ни в синтакс-помошнике ни в описании. Можно подробнрее?
 

Zab

Well-known member
07.08.2006
583
0
#4
Для: rubi извини, соврал, тебе нужен:
ИспользоватьВладельца(<?>,);
UseOwner(<?>,);
Синтаксис:
ИспользоватьВладельца(<Владелец>,<ФлагИзменения>)
Назначение:
Установить выборку по элементу связанного справочника. Возвращает значение текущего владельца для справочника (на момент до исполнения метода).
Параметры:
<Владелец> - значение элемента связанного справочника, которому подчинен данный справочник.
<ФлагИзменения> - этот параметр используется только в случае использования данного метода для объектов типа ''справочник'', которые являются реквизитами формы или реквизитами диалога! Необязательный параметр. Этим флагом регулируется возможность интерактивного изменения владельца. Число: 1 - пользователь может изменить владельца интерактивно, 0 - пользователь не может интерактивно изменить владельца. Значение по умолчанию: 1.
Замечание:
Метод можно использовать для объектов, созданных функцией СоздатьОбъект(), а также для реквизитов формы типа ''справочник'' (например, в форме документа - реквизит документа типа ''справочник'') или реквизитами диалога (например, в форме отчета - реквизит диалога типа ''справочник'').
ВНИМАНИЕ! в этих случаях метод имеет только один параметр!
Для: KiR в 7.7. существуют оба метода. Если ты ищешь в восьмерке, то, возможно, и не найдешь...
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#5
Точно! Искал в восьмерке и не нашел))) Хотя для меня это в восьмерке актуально!)
 
B

b00tch

#6
в восьмерке это свойство элемента формы называется "Связь по владельцу"
 
R

rubi

#7
я использовал ИспользоватьВладельца. Так получилось, когда я на форме делал отдельную кнопку и прописывал для неё процедуру. Но видите ли в чем дело, когда реквизиту табличной части присваиваешь значение Справочник.Подразделения, то в таблице при клике на ячейку этого реквизита появляется кнопка <...>, которая по умолчанию вызывает сначала родителя, а юр.лицо и так выбрано(на кого бы ни кликнул дважды, все равно для одной и той же организации все выйдет). Если добавить процедуру, то программа действительно все сделает как надо, но потом снова выдаст "Выбрать Юр. лицо" -> "Выбрать подразделение" Нельзя ли как-то просто не открывать окно выбора для справочника "Организации". Спасибо за помощь!
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#8
b00tch, видел такое свойство, но что-то не разобрался как его использовать. У меня в форме поле договор при выборе которого открывается сначала справочник контрагентов, а потом уже договоров. Мне нужно задать владельца - контрагента - он один и не изменяется никогда. В принцыпе то же самое что описал rubi, но тока в восьмерке)
 

Zab

Well-known member
07.08.2006
583
0
#9
Но видите ли в чем дело, когда реквизиту табличной части присваиваешь значение Справочник.Подразделения, то в таблице при клике на ячейку этого реквизита появляется кнопка <...>, которая по умолчанию вызывает сначала родителя, а юр.лицо и так выбрано(на кого бы ни кликнул дважды, все равно для одной и той же организации все выйдет).
попробуй всеже прописать в свойствах колонки табличной части, на вкладке "дополнительно" "Связан с" имя реквизита, в котором выбирается организация. Думаю, она у тебя есть. Это хороший вариант. Если же всетки такого реквизита нет - используй предопределенную процедуру ПриНачалеВыбраЗначения()
Процедура ПриНачалеВыбораЗначения(<?>,)
КонецПроцедуры
Procedure OnStartValueChoice(<?>,)
EndProcedure
Синтаксис:
ПриНачалеВыбораЗначения(<ИдентЭлемДиалога>,<ФлагСтандОбр>)
Назначение:
Предопределенная процедура после выбора значения в форме выбора (выбор может быть инициирован в немодальном режиме интерактивно, при помощи элемента диалога с ''педалькой'').
<ИдентЭлемДиалога> - идентификатор элемента диалога, которым инициализирован выбор значения.
<ФлагСтандОбр> - флаг, изначально, при вызове процедуры равен 1, если в теле процедуры значение этого параметра поменять на 0, то стандартный процесс выбора значения не будет происходить.
Замечание:
Данная процедура может располагаться только в программном модуле формы.
 
B

b00tch

#10
<!--QuoteBegin-KiR+23:10:2007, 07:37 -->
<span class="vbquote">(KiR @ 23:10:2007, 07:37 )</span><!--QuoteEBegin-->b00tch, видел такое свойство, но что-то не разобрался как его использовать
[snapback]82722" rel="nofollow" target="_blank[/snapback]​
[/quote]

жми на <...> и ищи в ДокументОбъект реквизит контрагент...
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#11
Для: b00tch
Жму... открывается окошко Виды связи. На вкладке Данные ничего нет. На вкладке События есть ОбработкаАктивацииСобытия. Выбрал ее и прописал такую процедуру:
Процедура ОбюработкаАктивацииОбъекта(Элемент, СтандартнаяОбработка)
Договор.Владелец = Справочники.Контрагенты.НайтиПоНаименованию("УНИВЕР");
КонецПроцедуры
Вызываю ее при открытии или при начале выбора... Вываливает ошибку - {Форма.Форма(77)}: Поле объекта недоступно для записи (Владелец)
Договор.Владелец = Справочники.Контрагенты.НайтиПоНаименованию("УНИВЕР");
 
B

b00tch

#12
если у тебя на форме есть реквизит с типом Спр-владельца, то он должен появиться на вкладке Данные...
либо такого реквизита нет, либо ты не для того элемента пытаешься настроить связь...
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#13
Для: b00tch
Такого реквизита действительно на форме нет. Но может как-то можно не добавляя реквизит в форму владельцу другого реквизита назначить постоянное значение?
 
B

b00tch

#14
добавь невидимый реквизит, определяй его в ПриОткрытии...

или прописывай выбор вручную в событии НачалоВыбора элемента...
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#15
Для: b00tch
<!--QuoteBegin-b00tch+23:10:2007, 15:27 -->
<span class="vbquote">(b00tch @ 23:10:2007, 15:27 )</span><!--QuoteEBegin-->или прописывай выбор вручную в событии НачалоВыбора элемента...[/quote]
С этого места подробнее можно?
 
B

b00tch

#16
во, попробуй так:
Код:
Процедура ПриОткрытии()
...
ЭлементыФормы.Подразделение.ВыборПоВладельцу(Справочники.Контрагенты.НайтиПоКоду("12345"));
...
КонецПроцедуры
 
R
#17
Огромное спасибо Zab, процедура ПриНачалеВыбораЗначения действительно помогла. Она уже была в модуле формы, я только добавил следующий код (кому интересно):

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

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#18
<!--QuoteBegin-b00tch+23:10:2007, 17:59 -->
<span class="vbquote">(b00tch @ 23:10:2007, 17:59 )</span><!--QuoteEBegin-->во, попробуй так:
КодПроцедура ПриОткрытии()
...
ЭлементыФормы.Подразделение.ВыборПоВладельцу(Справочники.Контрагенты.НайтиПоКоду
("12345"));
...
КонецПроцедуры[/quote]
Спасибо, конечно... но что-то я все равно туплю...
ЭлементыФормы чему должно быть равно?
 
B

b00tch

#19
ЭлементыФормы - предопределенная коллекция элементов текущей формы...
инициализировать ее не надо...
 

KiR

НЕ шибка опытный програмер)
11.09.2007
1 581
0
#20
<!--QuoteBegin-b00tch+24:10:2007, 14:35 -->
<span class="vbquote">(b00tch @ 24:10:2007, 14:35 )</span><!--QuoteEBegin-->ЭлементыФормы - предопределенная коллекция элементов текущей формы...
инициализировать ее не надо...[/quote]
Гм... странно тогда, ибо если делаю это в процедуре при открытии - вываливает такую ошибку
{Форма.Форма(84)}: Метод объекта не обнаружен (ВыборПоВладельцу)
ЭлементыФормы.Договор.ВыборПоВладельцу(Справочники.Контрагенты.НайтиПоНаименован
ию("УНИВЕР"));