Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Иерархию справочника перенести в реквизиты

Иерархию справочника перенести в реквизиты
Я
   on2
 
10.09.20 - 12:55
Всем привет!
Любопытная задача есть, подскажите ребята как ее лучше реализовать. Что бы это было удобно реализовано в интерфейсе.
В общем есть справочник в нем куча папок (групп), Справочник выстроен в определенной иерархии. Мне нужно избавиться от зависимости этой т.е. затащить понятие иерархии в реквизиты.
например, Справочник состоит из 3 вложенностей иерархии (в самой последней расположен элемент): Верхняя группа - "Класс", группа в классе называется например "ПОдкласс", в подклассе группы называются "Типы".
На элементе нужно создать три реквизита: "Класс", "Подкласс", "Группа". так что бы у группы была зависимость от выбранного подкласса, а у подкласса зависимость от класса.
Каким механизмом правильнее реализовать такое?

Кто что думает?
   Garykom
 
1 - 10.09.20 - 12:58
(0) >Каким механизмом правильнее реализовать такое?

нанять программиста
   Базис
 
2 - 10.09.20 - 13:01
Можно сделать через иерархические теги, можно через существующие поля (наверное, даже артикул).
   lubitelxml
 
3 - 10.09.20 - 13:02
зачем?
   ASU_Diamond
 
4 - 10.09.20 - 13:04
Реквизит Родитель?
   Rovan
 
5 - 10.09.20 - 13:11
(0) программное формирование Дерева значений на форме
   CaIIIka
 
6 - 10.09.20 - 13:12
Просто так не получится. Придется справочник новый создать, где будет указана настройка той самой новой иерархии трех видов элементов. В нем описать все зависимости одних элементов от других (я так понимаю "Класс", "Подкласс", "Группа" не так часто меняются). А в исходном справочнике настроить динамический список так, чтобы при отображении все это учитывалось. Довольно непросто все это будет.
Проще фильтры сделать по трем составляющим на форме списка.
   ДенисЧ
 
7 - 10.09.20 - 13:35
Есть хороший инструмент. Правда, сторонний, не 1сный...

Называется hands.exe. Он может сделать любые преобразования.

Правда, часто к нему нужен особый драйвер... barin.sys
   ДенисЧ
 
8 - 10.09.20 - 13:35
*brain.sys
   trad
 
9 - 10.09.20 - 13:40
(7) у некоторых они вытеснены conceit.dll огромного размера
   mmg
 
10 - 10.09.20 - 13:55
(0) Не надо три реквизита. Достаточно одного.
   on2
 
11 - 10.09.20 - 14:08
На самом деле у меня 5 иерархий)))) 
Основная цель - при выборе верхнего уровня - система должна предлагать пользователю варианты нижестоящего уровня.
При заполнении реквизита : "Класс", в списке реквизита "Подкласс" должны отобразиться именно те подклассы, которые связаны с конкретным классом.
(2) - нужно что бы у пользователя гемороя был минимум при заполнении всего этого
(4) - реквизит родитель
(7) - нужно стандартными
   zuza
 
12 - 10.09.20 - 14:15
(11) подчиненные справочники, не?
   Вафель
 
13 - 10.09.20 - 14:18
(11) у подкласса должна быть ссылка на класс
а ля контрагенты - договоры
   on2
 
14 - 10.09.20 - 14:30
(13) - аля также надо сделать или аналогично

(12) как вариант
   fisher
 
15 - 10.09.20 - 14:40
(0) Твоя иерархия полностью укладывается в стандартную. Поэтому не надо никаких "доп-реквизитов" и прочей ереси. Ты хочешь просто удобную для пользователя форму подбора. Ее и делай.
Можно так, например: слева - дерево групп, справа - список элементов. Пользователь слева кликает на группе любого уровня - справа отображаются все элементы в иерархии выбранной группы.
   ASU_Diamond
 
16 - 10.09.20 - 15:02
(11) в чём смысл в отдельных реквизитах указывать каждый уровень?
   vova1122
 
17 - 10.09.20 - 15:29
(0) У меня похожая задача была. Или может не то....
И так. Суть вопроса была адрес контрагента разложить по полочкам  (вернее вводить). На форме справочника Контпгенты отдельные реквизиты; АдрессОбласть, АдресРайон, АдрессНасПункт, АдрессУлица, АдрессДом, АдрессКвартира.
Улицы находятся в иерархии Обл/район/НасПункт.
На форме когда пользователь выбирает населенный пункт. То улицу может выбрать только из нужной папки (которая автоматически открывается в нужном месте иерархии. А вышестоящее реквизиты при этом автоматически заполняются с учетом иерархии.
Для пользователей это удобно, и ошибок в полном адресе небудет.
   on2
 
18 - 10.09.20 - 15:38
(17) расскажи как реализовал. Задача точно такая же.
   on2
 
19 - 10.09.20 - 15:39
(16) долгая история.
   vova1122
 
20 - 10.09.20 - 15:48
(18) Да уже все почти рассказал. Справочник Адреса. В нем папки (верхней уровень- Область. В каждой области папки Районы.....) (Для папки нужен создать дополнительный реквизит, чтобы понимать на коком уровне иерархии находишься и не дать ваыбрать в реквизит Область например район).
А дальше все просто. На форме справочника Выбрал например район (если облать не заполнена, то выбирается с корня справочника, а если заполнена то по событию "НачалоВыбора"
   vova1122
 
21 - 10.09.20 - 15:51
Группа=Справочники.Адреса.НайтиПоКоду(адрОбласть.Код);
        Если Не Группа=Справочники.Адреса.ПустаяСсылка() тогда    
            СтандартнаяОбработка = Ложь;
            ФормаВыбора = Справочники.Адреса.ПолучитьФормуВыбора(, Элемент); 
            ФормаВыбора.ЭлементыФормы.ТабличноеПоле1.ИерархическийПросмотр = Истина;
            ФормаВыбора.ЭлементыФормы.ТабличноеПоле1.ТекущийРодитель = Группа;
            ФормаВыбора.ЭлементыФормы.ТабличноеПоле1.ТекущаяСтрока=адрРайон;
            //ФормаВыбора.ОткрытьМодально();    

            ФормаВыбора.Открыть();    
        КонецЕсли;
   vova1122
 
22 - 10.09.20 - 15:55
попадаем в нужное место иерархии. А дальше при выборе нужного элемента заполняем вышестояшие реквизиты в форме Контрагента.
   CaIIIka
 
23 - 10.09.20 - 16:16
А чем фильтры не подходят? Тем более у вас 3 отдельных реквизита. Это может быть 1, а могут быть 3 разных справочника, описывающих разные свойства. Добавьте на форму списка 3 реквизита и по ним фильтруйте при изменении. Получится своего рода иерархия, у которой уровни не зависят друг от друга. И на реализацию минут 15 с перекуром.
   on2
 
24 - 10.09.20 - 16:58
-Значит итог таков, делаю 5 справочников плоских, которые подчинены друг другу
-Добавляю  5 реквизитов на форму элемента справочника.
-реализовываю механизм отбора при условии заполнения первого реквизита, отбор во втором осуществляется и выводится ограниченный список и так далее

Папки рассматриваю как места упорядочивания элементов поэтому завязываться на папки не нужно.

Ну вот, поправьте меня.
   Ёпрст
 
25 - 10.09.20 - 17:09
(24) поправляю..ересь.
Как будете элементы из "группы" в группу тащить ? Владельца менять ?
   Ёпрст
 
26 - 10.09.20 - 17:10
И.. чем обычный справочник с группами не подходит ? Если это всё нужно, чтоб потом быстро иерархию иметь, то храни иерархию папок в отдельной табличке. В запросе имей её, будет мгновенно.
   HawkEye
 
27 - 10.09.20 - 17:13
(24) ты описал обычный иерархический справочник, в чем профит?
   on2
 
28 - 10.09.20 - 17:37
(27) описала ;)
   HawkEye
 
29 - 10.09.20 - 17:38
(28) тем более )))
   on2
 
30 - 10.09.20 - 17:39
(29) редиска ты)))))
 
 Рекламное место пустует
   HawkEye
 
31 - 10.09.20 - 17:41
(30) вот ни разу не похож )
   vova1122
 
32 - 10.09.20 - 18:48
А если пользователь скажет, как в фильме,- "Огласите весь список, пожалуйста". Как будешь выкручиваться? Как, например в моем случае, я точно непомню в коком именно районе находится населенный пункт, или занесли не тот район. То просто могу открыть и перенести в нужный район со всеми улицами. При выборе из Справочника.Контрагенты также.
Твоя схема сработает в идеальном мире, когда ненужно создавать новых элементов, и менять переподчинение. Но ведь в 1С такого не бывает
   vova1122
 
33 - 10.09.20 - 19:00
+(32)  Кроме этого твоя схема не позволит "Перескакивать" через владельцев. Например не заполняя область и район, а сразу выбрать населенный пункт, так как при открытии этого справочника - он просто будет пуст.
   080808Ник
 
34 - 11.09.20 - 10:31
(0) Если я правильно понял суть задачи, а я в отпуске поэтому думаю и понимаю с трудом) то нужно два справочника - первый иерархия элементов, которая будет содержать структуру Классы/подклассы/группы/и миллион иерархических сущностей. У справочника должен быть реквизит Тип элемента. это справочник который будет содержать тип сущности - класс/группа/подкласс. его тоже можно сделать иерархическим, а можно сделать одноуровневый с реквизитом родитель, что бы можно было жестко ограничить значение не только по родителю но и по типу.
Допустим имеем иерархию 1 Класс подкласс 1.1, Группа 1.1.1, подкласс 1.2,  Группа 1.2.1 и так далее. таким образом, человек выбирает Класс 1, ему отбираются подчиненные элементы Подклассы с типом только подкласс. Таким образом соблюдается условие - ограничение "сверху" по родителю, ограничение снизу по типу. При этом не нужно плодить реквизиты и справочники и иерархию можно изменить в любой момент, вдруг нужно будет разделить класс или подгруппу. Так же, в случае необходимости можно будет дать выбрать пользователю "через   уровень" элемент.
   Bigbro
 
35 - 11.09.20 - 10:40
сложно как то.
оставить текущий справочник как есть переименовать его в "структуру"
сделать новый справочник без иерархии с элементами и реквизитом ссылкой на элемент "структуры".
в новый перелить элементы, дать имя старого. реквизит заполнить по ходу переливания.
все.
   080808Ник
 
36 - 11.09.20 - 10:57
(35) так я понял им нужна "параллельная структура".
   Bigbro
 
37 - 11.09.20 - 10:59
а я понял что им надо избавиться от иерархии в исходном справочнике превратить его в плоский, но где то эту иерархию сохранить. что я и предлагаю.
   080808Ник
 
38 - 11.09.20 - 11:03
(36) +у  меня была похожая задача. Организовали справочник и жестко привязали - родитель верхнего уровня Поставщик- родитель нижнего уровня - тип товара - элемент сам товар. И они перестраивали учет по всем товарам по такой структуре. а нужно было для разных групп товаров свои иерархии. для части товара три уровня, для части 5 уровней, где то вообще один уровень. Поэтому и придумали сделать "иерархию реквизитов", но справочник товаров оставили иеархическим. удобненько получилось, жаль внедрить не успели - начался переход на другую конфу)))
   on2
 
39 - 11.09.20 - 11:06
(35) скорее параллельную вселенную))))))))))))
   080808Ник
 
40 - 11.09.20 - 13:12
(39) так какой вариант решила реализовать?
   ASU_Diamond
 
41 - 11.09.20 - 13:24
Мне интересно чем типовой механизм выбора родителя у элемента справочника не устраивает?
   Ёпрст
 
42 - 11.09.20 - 13:28
(41) ну видать, иеррархия отключена и в "плоском" списке не понятно, чья группа.
   ASU_Diamond
 
43 - 11.09.20 - 13:42
(42) что значит "не понятно, чья группа"?
   080808Ник
 
44 - 11.09.20 - 13:48
(41) ну я так понял, что группы должны быть определенного типа. Например, ты не можешь сделать родителем Группы группу-класс, только подкласс. аналогично подкласс нельзя давать выбрать родителем класса. а в классе вообще не должно быть родителя.
   ASU_Diamond
 
45 - 11.09.20 - 13:54
(44) заводится реквизит с типом элемента/группы и на программном уровне контроль осуществляется.
хотя в (11) такая задача не ставится
   Pro-tone
 
46 - 11.09.20 - 13:56
(7) barin.sys звучит круче)
   on2
 
47 - 11.09.20 - 14:43
(40) - в сторонке сижу кофе пью по этой теме(((
   HawkEye
 
48 - 11.09.20 - 14:55
(47) это правильное решение )))
   Timon1405
 
49 - 11.09.20 - 15:03
в типовых на БСП реализована произвольная иерархия(несколько сразу) по свойствам объектов с видом справочник "ЗначенияСвойствОбъектовИерархия"
   mikecool
 
50 - 11.09.20 - 15:06
(7) barin.sys - мне нравится )))


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.