Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Справочники. Работа с группами
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 > Программисту > Программирование в 1С Предприятие 8.1 (8.0)
Cnhtkjr
Доброго времени суток. Помогите кому не лень:
Есть справочник. В нем много групп. В каждой группе магазины. На каждую группу есть свой "хозяин".
Вопрос:
"как сделать, чтобы, когда человек начинал выбор из справочника, ему открывалась только его группа магазинов и он не мог выйти из своей иерархии?"

Я надеюсь что вопрос задан понятно.
Как я понимаю, то в этом ничего сложного быть не должно - вам минута времени подсказать, а мне - день головой об стену биться маны читать.
посему - как всегда буду искренне признателен за ваше внимание и помощь.
Lefer
На сколько я понял вопрос задачу можно решить так (если речь у нас идет о выборе элемента справочника из поля выбора)

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


Смысл в том, чтобы по Хозяину Документа (по-моему, в документе должен указываться текущий пользователь - он же и есть хозяин) формировать отбор в форме выбора справочника. Для того, чтобы отключить ему возможность выхода из иерархии надо отключить доступность отбора...по-моему так.

Если же мы напрямую обращаемся к справочнику, то смысл тот же. Просто даем пользователю форму выбора.
Cnhtkjr
Спасибо, добрый человек!
Еще не пробовал, но судя по коду - как раз то что нужно.
Lefer
Цитата(Cnhtkjr @ 30.06.10, 17:18) необходимо зарегистрироваться для просмотра ссылки
Спасибо, добрый человек!
Еще не пробовал, но судя по коду - как раз то что нужно.


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



В общем вот что вышло:
делаю отбор по реквизиту "пользователь", который я создал в самом начале, предполагая, что будет такая потребность.
Да, как раз для обзора и выдаются магазины с нужным пользователем.
Но. Вот это вот нехорошее "Но" опять вклинилось.
Хотелось, чтобы форма выбора сразу открывалась на нужной группе. В данном варианте показываются все имеющиеся группы из которых нужно входить в свою и там уже видно список магазинов.
Если подскажете как сделать "по уму" - опять же буду благодарен.

Так же, почему-то строчка "ФормаВыбора.ЭлементыФормы.СправочникСписок.НастройкаОтбора.Доступность = Ложь;" отказывается работать наотрез, заявляя, что поле объекта "Доступность" - не обнаружено.
Странно конечно, но почему так? Рылся в МСДНе, но ответа не нашел.

ну, и вторая часть закомменчена, так как нею я хотел сделать отбор на группу, а не вышло пока что.
zetovich
RLS
откройте УТ ...и посматрите как реализован доступ к контрагентам тем же на уровне пользователей.
з.ы. Справочник "Группы доступа к контрагентам"
з.ы.ы. все равно пойдете дальше...и нужно будет ограничить в отчетах (взаиморасчеты)....а это как раз решит проблему.
Cnhtkjr
решил пойти на небольшую хитрость:


"ФормаВыбора.НачальноеЗначениеВыбора = Справочники.Магазины.Киев;"

так хотя бы похоже на то что я хотел.
Даже, можно было бы оставить только эту строчку и запретить подниматься вверх по иерархии.
Но вот с запретом подниматься выше - пока траблы.
Cnhtkjr
Цитата(zetovich @ 30.06.10, 17:51) необходимо зарегистрироваться для просмотра ссылки
RLS
откройте УТ ...и посматрите как реализован доступ к контрагентам тем же на уровне пользователей.
з.ы. Справочник "Группы доступа к контрагентам"
з.ы.ы. все равно пойдете дальше...и нужно будет ограничить в отчетах (взаиморасчеты)....а это как раз решит проблему.



спасибо, посмотрю обязательно.
Да, действительно, зря я наверное не пользуюсь для примеров УТешкой.
Но на это мне нужно будет время. Сейчас к сожалению у меня как всегда экспресс-задания: "или сделаешь за два часа того чего сам не знаешь, или вкусишь незабываемые часы анального и прочего..."

я оооочень медленный кодер. Мне только на осознание задачи требуются по крайней мере сутки. Потом на предрабочую медитацию - еще пара суток и только тогда я могу приступить к трудам.
Но кто ж мне даст столько времени? :/
Zaval
Это... а кто сказал, что выбирать нужно из формы списка справочника? Если даже в "своей" группе есть подгруппы - удобнее отключить иерархию и начать вводить наименование...
Ну и сделайте им обработку ВыборКонтрагента.При открыти - запрос к справочнику, все дозволенное - в таблицу. Если уж так нужны подгруппы - выбирать с Родителями(если дозволен), поместить в дерево. А можно сгруппировать альтернативно...
Самое большое неудобство справочника - единая иерархия для всего разнообразия пользователей(как тут не вспомнить семерошные Комплексную и ТиС с их Категориями). Начнешь дотачивать под всех и каждого - тут и тормоза на подходе(

ЗЫ. Медитируйте, разглядывая типовые... отраслевые, "нетленки", все, до чего сможете добраться. Очень скоро знание "что где как реализовано" резко сократит время медитации.)
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.