ИспользоватьСписокЭлементов 1C 8 #297602


#0 by akhamov
Все привет. Вопрос такой: В 1С 7.7 был ужасный метод формы ИспользоватьСписокЭлементов(Список). В конфигурации под 1С 8.0 требуется сделать сложный фильтр формы списка справочника (пока без возможности фильтрации пользователем). Как это лучше и правильнее сделать? Вот тут говорят: В большинстве случаев, если необходимо обеспечить отображение в списке специально отобранного перечня объектов, можно рекомендовать использовать другие возможности (например, выборку данных запросом и отображение в форме с помощью таблицы значений или табличного документа). При этом система обеспечивает возможность полноценного взаимодействия с такими формами других системных механизмов. т.е. я так понимаю что сформированный таким способом список, будет возможно фильтровать стандартными механизмами 1С (отбором, сортировка и т.п.). Возникает вопрос: на сколько дольше будет формироваться такая форма списка справочника? Как сделать чтобы форма списка выводила и иерархию тоже ("выбирать иерархичеки" в запросе?)?. Может быть есть возможность создания какой-то функции в форме списка, которая будет срабатывать для каждого элемента и возвращать true/false для отображения? P.S.: Я прошу прощения, если вопрос довольно-таки дурацкий, я только начинаю вникать в 1С 8 и те вопросы, которые я в своих книгах не нашел, хочу задавать здесь. Спасибо за ответы.
#1 by ТелепатБот
#2 by PR
Чушь. Отбор по ссылке.
#3 by akhamov
По ссылке что дал ТелепатБот есть пример с процедурой СправочникСписокПриПолученииДанных в каком это контексте? Где она вызывается? В каком обработчике ее указать?
#4 by PR
Это автоматический бот, он не угадал :))
#5 by akhamov
Я знаю что это, но там есть пример кода.
#6 by PR
И что? Это совершенно про другое?
#7 by PR
И что? Это совершенно про другое.
#8 by akhamov
Покажи пожалуйста, как решить эту задачу. У меня есть некоторый алгоритм, по которому я определяю можно или нет отображать элементы справочника. Это НЕ ТОЛЬКО прямой отбор по реквизиту справочника Номенклатура, но и некоторые вычисления (например остаток). Мне нужно установить фильтрацию, с возможностью ДАЛЬНЕЙШЕЙ фильтрации интерактивно пользователем. Спасибо!
#9 by PR
Получаешь как-то свой список ссылок, потом ставишь фильтр по ссылке с видом сравнения "в". Все.
#10 by akhamov
У меня есть код - получение (примитивное) списка ЭЛЕМЕНТОВ номенклатуры, и просмотр отбора Как мне по моему списку получить иерархический отбор по всей номенклатуре?
#11 by PR
Не НастройкаОтбора, а Отбор.
#12 by akhamov
Вот что сделал, в принципе почти то что нужно Функция ПолучитьСписок Но есть одно "НО"! Он всю остальную иерархию групп выводит, а мне это очень не нужно. Как отключить вывод остальных (пустых групп)?
#13 by PR
Никак. Только через RLS, но вряд ли это тебе нужно.
#14 by akhamov
???
#15 by PR
!!!
#16 by akhamov
Я к тому что я не понимаю что такое RLS. Но мне оч нужно убрать пустые группы иерархии из списка.
#17 by PR
Есть три варианта: 1. Открой доку и пойми. Кроме того, на сайте уже были ветки на эту тему. 2. Делай ТЗ и сам ее заполняй и обрабатывай. 3. Вызови программиста, который сделает. ЗЫ: Если не понимаешь, то так и пиши, а не "???" :o)
#18 by Wladimir_spb
Что такое RLS? ТелепатБот, ответь
#19 by ТелепатБот
rls = record level security
#20 by PR
+ LOL :)))))))))))
#21 by akhamov
Ok, спасибо. Буду разбираться. А ты, кстати, когда что-то начинаешь изучать тоже зовешь программиста, который прийдет и сделает? :)
#22 by akhamov
Подскажите пожалуйста по RLS: у меня в номенклатуре есть свойство - Пользователь. Есть переменная модуля приложения экспортируемая глПользователь. Где и как построить условие, чтобы справочник номенклатура показывал элементы только указанного пользователя. Когда в роли добавляю условие на прочие поля или любое другое 1С8 генерирует мне примерно такой код: если-то для системных вызовов (запросов) этот параметр не устанавливается и вываливается исключение. Как быть?
#23 by Wladimir_spb
В Запросы RLS передаются параметры сеанса, например, ТекущийПользователь.
#24 by akhamov
Да. Теперь ошибки нет, но! Захожу с свою роль, захожу в справочник пользователи. Встаю на чтение (флаг выставлен) - внизу - ограничение доступа к данным. Поле - ссылка Ограничение доступа: ГДЕ Ссылка = &ТекущийПользователь Параметры сеансы выставляю в модуле приложения 100% (проверяю до открытия формы списка справочника пользователи). Но все равно вижу всех пользователей. Почему? Что я сделал не так? Подскажите пож-та!
#25 by akhamov
Все отлично. RLS работает ... но теперь возникла проблема с отображением иерархии. Т.е. товары разделены между пользователями - как правильно построить ограничение данных для групп верхнего уровня? Т.е. внутри групп есть товары разных пользователей и хочется видеть всю иерархию до первого уровня, в то же время не хочется видеть пустых групп (если наложить условие НЕ ЭтоГруппа). Может быть кто-то уже решал такую проблему (справочник с неограниченной иерархией).
#26 by hhhh
Все-таки номенклатуру надо привязывать не к пользователю, а к должности. Ведь если вдруг этот пользователь уйдет в запой или в отпуск, то вся твоя созданная такими титаническими усилиями система сразу рушится.
#27 by akhamov
Ну это правильно, я просто привожу такой пример для простоты обсуждения. На самом деле у меня в товаре указана товарная категория, а у нее есть ответственный менеджер, в котором уже указан пользователь. Т.е. при увольнении/болезни/отпуске мне только в одном месте нужно сменить пользователя. Вопрос как бы остался только в группах :(
#28 by Wladimir_spb
Пропиши доступ к группам. Точно так же как к элементам.
#29 by akhamov
Так в этом и вся "беда". Имеем: Что писать в Весовые отделы? Менеджер 1 или Менеджер 2 или в разрезе товарных групп, которые я указал выше - группу колбаса или заморозку? Или плодить табличные части групп справочника, куда записать и Менеджер 1 и менеджер 2 или по категориям.
#30 by Wladimir_spb
"Весовые отделы" должны видеть оба, а как сделать это зависит от того, что у тебя уже нарисовано.
#31 by akhamov
Как вариант делать JOIN в запросе ограничения данных. Но с учетом иерархии это будет либо подзапрос для каждой строки и будет притормаживать, либо LEFT JOIN и рождение новых колонок в результирующей выборке.
#32 by akhamov
Ну так вот вопрос в том как именно прописать, чтобы НЕПУСТЫЕ в результате фильтрации группы отображались для каждого пользователя, а ПУСТЫЕ - не отображались.
#33 by Wladimir_spb
Не надо это делать запросами - повесишь систему. Ручками пропиши права доступа. Точно также как к отдельным позициям.
#34 by akhamov
Ну то есть для группы у которой внутри товары разных менеджеров - прописать обоих менеджеров. Например в табличной части? Как в ?
#35 by akhamov
Просто при заведении новой позиции нужно не забыть проставить всем родителям это свойство, конечно это все и на контроль 1С можно отдать.
#36 by hhhh
что-то не очень хорошо при вводе каждого нового товара корректировать запросы.
#37 by Wladimir_spb
И не надо. Нужно иерархию продумать.
#38 by Wladimir_spb
+ А причем здесь корректировать запросы?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С