gifts2017

Форма дерева любого справочника через FormEx

Опубликовал unpased (unpased) в раздел Программирование - Работа с интерфейсом

Форма справочника в виде обработки FormEx

Очень сложно самими средствами 1С Предприятие 7.7 регулировать структуру отображения и доступа к элементам и группам справочника!

Вобщем понадобилось мне отфильтровать определенным образом элементы справочника... ну и отобразить из в виде дерева.

Сам фильтр я прикрепил конечно но для этого мне понадобилось отобразить справочник обработкой... сию собственно и отправляю в качестве полезняшки!!!

Обработка в приципе универсальна и может подцеплять любой справочник (Достаточно в коде, который кстати я не закрывал!!!, поменять вид справочника переменной Спр), кроме того при выборке элементов этого справочника в процедуре ЗаполнениеТаблицСправочника() можно прикрепить совершенно любой фильтр и отрегулировать отображение элементов и групп (по умолчанию отобираются стандартным для отображения образом).

Если необходимо организовать выбор элемента данного справочника (ну допустим в документ) то эта обработка легко переделывается в форму справочника ДляВыбора или ФормуСписка, спрятать Табличную часть стандартного справочника можно в другом (невидимом слое) ну и соответственно убрать нафик отображение Иерархии и искать элементы методом АктивизироватьОбъект(ЗначениеИзТаблицыЗначений) Форма.ВыполнитьВыбор() в невидимом слое!!!

Вообщем подключаем уже воображение и делаем то что хотим !!! :)

ЗЫ. Плюсуем люди!!!

PSЗЫ. Добавлена панелька управления. Подходит для работы только со справочником менее 30000 позиций, тестировал на 26000 (время заргузки элементов от 5 до 10 сек.!)

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
-
.1244617816 298,50Kb
26.02.13
169
.1244617816 298,50Kb 169 Бесплатно

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Юрий Тимофеев (Tatitutu) 04.06.09 17:58
Зачем два раза одно и тоже ?

ЗагрузитьВнешнююКомпоненту("Formex.dll");
Если LoadAddIn("FormEx.dll") = 0 Тогда

Замени на

Если ЗагрузитьВнешнююКомпоненту("Formex.dll") = 0 Тогда
2. Юрий Тимофеев (Tatitutu) 04.06.09 18:10
При открытии или предложи на выбор вид справочка
или поставь проверку , а если он справочник.Номенклатура в этой конфигурации.

Если справочник большой.....то ждать придется ой как долго
у тебя там столько событий повторяется....
сделай динамический
(не формируй все сразу)
сформировал папки - клик по ней - ее разобрал и показал - так будет намного лучше.

ОткрытьФорму(ТЗСПР.Элемент.ТекущийЭлемент());
и
ОткрытьФорму(ТЗСПР.Элемент);
в твоем случай одно и тоже - но Отладчик в замере улыбаться начинает)))


но правильнее наверное так
ОткрытьФорму(ТЗСПР.Элемент,,-1);
3. GSoft. (GSoft) 04.06.09 18:59
за идею +

можно использовать при диначеской раздаче прав

вот если сделать панель управления аналогичную справочникам - то цены этой вещи не будет
4. unpased (unpased) 04.06.09 23:57
:) я понял... доработаю... панель управления завтра сделаю!!! полюбому такая штуковина нужна !!!
5. GSoft. (GSoft) 05.06.09 11:06
можно сделать своего рода универсальный справочник - открываешь форму, выбираешь справочник из списка (при этом список может фильтровать только те которые разрешены этому пользователю)
6. Епрст (Ёпрст) 05.06.09 11:15
Ужас, если чесно..

Вот штатно, такой же ужас:
http://webfile.ru/3678243

А вообще, перелопачивать весть справочник, и хранить его в ТЗ - зло..
Загнётся на большом..

Советую автору ознакомится с этим решением, например:
http://rikcenter.ru/solutions.php
скачать демку тут:
http://rikcenter.ru/download/Demo_RiK.rar

7. Епрст (Ёпрст) 05.06.09 11:16
+6 т.е переделать форму списка справочника через ТабличноеПоле, дерево групп отображать через АктивИкс, панель инструментов тоже, поставщиком для ТП - прямой запрос к БД..
8. vip (vip) 05.06.09 11:19
(0) Пару ложек дегтя...
Абсолютно нежизнеспособно при более-менее большом справочнике.

Плюс транзакция на большом справочнике заставит остальных юзеров курить, пока заполняется ТЗ.

А вот ТабличноеПоле из 1С++ для этих целей очень даже хорошо.
9. vip (vip) 05.06.09 11:21
(6)(7) Тов. (г-н?) Ёпрст опередил, как всегда :))
10. Епрст (Ёпрст) 05.06.09 11:23
Кстати, вот аналогичное решение, тут же :
http://infostart.ru/projects/1905/

Пользуемся поиском активнее!
:)

(9) а как меня не называй, один хрен - Ёпрст биомать!
:)

vitaliy.ermolenko; asterisk; +2 Ответить
11. Балагина Эльвира (asterisk) 05.06.09 16:18
Спасибо огромное за обработку, она мне очень помогла в работе
12. villy (vitaliy.ermolenko) 05.06.09 17:50
(11) а подробнее можно?
ато наверное люд недоумевает....
13. unpased (unpased) 05.06.09 21:48
я вначале след. недели все доработаю...
дегать в жопу!!! :)
оптимизирую все как надо!!!
разработак подобных небыло!!!
перелопатил все!!! все- гамно!!!
уже сделал классную панель инструментов просто еще не выложил!!!
14. unpased (unpased) 05.06.09 21:53
А вот интересно... я искал... думал - уже же писал люд подобное.... и че.... ниче ваще ненашел!!!
даже вот решение "супер" - http://infostart.ru/projects/1317/
не смешите мои подковы!!! багов - туча!!!! плюсов - 17 (заметсте)!!!
и все почемуто положительные О_О - за что????
15. unpased (unpased) 05.06.09 21:56
а это ваще что вымне суете ??? http://infostart.ru/projects/1905/
как это стыкуется с моей разработкай???
печать справочника..... причем сдесь вообще печать....
читайте описание внимательнее люди!!!!
16. unpased (unpased) 05.06.09 22:02
Кстати динамическим - не буду делать, иначе смысла отбора и регулировки отображения нету.... попробую прямой отбор или компоненты 1C++
17. Епрст (Ёпрст) 08.06.09 08:39
(15) Тук-тук... Там такое же отображение справочника в виде дерева - путём слива всего справочника в ТЗ и представление ТЗ в виде дерева... а для чего оно надо - для печати, либо для выбора - вот не пофиг ли ?

Смотрите внимательнее что вам пишут - на больших ТЗ - моветон, как будешь динамически обновлять своё дерево ?

Используй ТП + прямой запрос в качестве поставщика... Решение как у вас - мегатормоз, если что.
18. Артур Аюханов (artbear) 08.06.09 08:53
Автор, отметь, что твое решение подойдет не для всех справочников, для больших, "толстых" справочников возможны приличные тормоза.
Насчет транзакции тебе также сказали.

ЗЫ и спокойнее воспринимай критику, тебе люди говорят, которые уже прошли через подобные проблемы с большими справочниками.
19. unpased (unpased) 10.06.09 11:13
вопщем попробовал несколько способов запроса справочника, тот что был - быстрый...
если у когото есть конкретные предложения просьба выкладывать их ввиде предложений по доработке, а не рекламой на платные разработки!!!
Платно - то за деньги!!!!
20. Епрст (Ёпрст) 10.06.09 11:20
(19) Решение в (6) - бесплатно, т.е даром.
21. Епрст (Ёпрст) 10.06.09 11:21
>>>Время заргузки элементов от 5 до 10 сек.!

Издеваешься над юзверями ?
22. vip (vip) 10.06.09 11:22
(19) вопщем автор не читатель, автор песатель.
Т.к. не хочет слушать умных людей, то последняя фраза из его 13-го (5 строчка) поста абсолютно правильная.
Только по отношению к его решению.
23. Епрст (Ёпрст) 10.06.09 11:22
+21Это поди еще и не в разделенном режиме проверял ?
:)

24. unpased (unpased) 10.06.09 13:01
решение (6) - совершенно бесполезно для разработчиков!!!
Это - пример... просто пример, я кстати на его базе собирал разработку как видишь!
25. unpased (unpased) 10.06.09 13:05
Умные люди!!! ну порекомендуйте решение отбора справочника в ТЗ быстро и надежно, как в 8...
потому как в стандартное отображение справочника фильтры прикручивать ваще не вариант...
а все что написано выше в каментах вами - водица!!! ну ничего конкретного!!!
26. vip (vip) 10.06.09 13:07
(24) Это твое решение!!!
Совершенно!!! Бесполезно!!!!!! Для кого угодно!!!!!!!!!!
Кстати как видишь!!!!!!!!!!!!!!!!!!!!
27. vip (vip) 10.06.09 13:09
(25) Единственное правильное решение - это ТабличноеПоле!!!!!
А все остальное - водица!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
28. unpased (unpased) 10.06.09 13:19
>скачать демку тут:
>http://rikcenter.ru/download/Demo_RiK.rar
а это какаято сырая штуковина которая меня кроет вот таким матом:

ТСправочник.Форма.ДеревоГрупп::ЗаполнитьУзел(OLE.INode Node=) : База данных не установлена
тзГруппы = РС.ВыполнитьИнструкцию(ТекстЗапроса);
{классФорма_ДеревоГруппСправочника@MD(209) }

ТСправочник.Форма.ДеревоГрупп::ДобавитьКорень() : ТСправочник.Форма.ДеревоГрупп::ЗаполнитьУзел(OLE.INode Node=) : База данных не установлена
тзГруппы = РС.ВыполнитьИнструкцию(ТекстЗапроса);
{классФорма_ДеревоГруппСправочника@MD(209) }

Сам.ЗаполнитьУзел(Root);
{классФорма_ДеревоГруппСправочника@MD(17) }

оДерево.Инит(Контекст, "текстДеревоГрупп", "Контрагенты");
{Отчет.обрФормаСпискаСправочникаКонтрагенты.Форма.Модуль(332)}: ТСправочник.Форма.ДеревоГрупп::ДобавитьКорень() : ТСправочник.Форма.ДеревоГрупп::ЗаполнитьУзел(OLE.INode Node=) : База данных не установлена
тзГруппы = РС.ВыполнитьИнструкцию(ТекстЗапроса);
{классФорма_ДеревоГруппСправочника@MD(209) }

Сам.ЗаполнитьУзел(Root);
{классФорма_ДеревоГруппСправочника@MD(17) }

оПанель.Обновить();
{Отчет.обрФормаСпискаСправочникаКонтрагенты.Форма.Модуль(223)}: Значение не представляет агрегатный объект (Обновить)
оТП.ТаймаутОбновления = 0;
{Отчет.обрФормаСпискаСправочникаКонтрагенты.Форма.Модуль(573)}: Значение не представляет агрегатный объект (ТаймаутОбновления)
29. Игорь Исхаков (Ish_2) 10.06.09 13:52
(27) Увидел знакомые имена с восклицательными знаками , забрел на огонёк .
Возможна ли при использовании Формекса реализация подхода :
клик на заголовке каждой колонки в табличном поле активизирует меню возможных действий.
Для 8 эта тема обсуждается http://infostart.ru/projects/4338
30. Артур Аюханов (artbear) 10.06.09 14:10
(28) Автор,
1. юзай последнюю версию 1С++
2. Ты видел упоминание о том, что это вариант для Скуля?
31. vip (vip) 10.06.09 14:12
(29) В FormEx нет ТабличногоПоля.
Это класс 1С++. И в нем реализован перехват очень многих событий.
В том числе и клик по заголовку.
А что, в восьмерке это проблема?
32. Игорь Исхаков (Ish_2) 10.06.09 14:16
(31) Да , проблема. Событие "клик на заголовке" отсутствует.
Приходится заниматься "программными извращениями".
Эх.. не удалось уязвить.
33. vip (vip) 10.06.09 14:21
(32) Если ты поплотнее изучишь возможности 1С++ и FormEx, желание уязвить плавно пропадет.
34. Игорь Исхаков (Ish_2) 10.06.09 14:27
(33) Поплотнее не удастся.
Правда, некоторые подозрения по отношению к 8 появились.
35. unpased (unpased) 10.06.09 14:42
ну так там эта... с папки где демка библа грузится ведь
36. unpased (unpased) 10.06.09 14:42
а то что для SQL-то плохо!!! у мну SQL версии нигде не стоит :(
37. Аркадий Кучер (Abadonna) 10.06.09 16:14
>а то что для SQL-то плохо!!! у мну SQL версии нигде не стоит :(
Вот именно это плохо и очень ;) Лично я видал о одном месте и в определенной обуви дожидаться восстановления индексов после того, как в результате экспериментов базу уронишь... Поэтому даже и на отладке только скуль!
38. unpased (unpased) 10.06.09 19:19
блин, но если пользоватся классом 1С++, там я так понимаю ТабличноеПоле под скулю... это получится не универсально!!!
да и фирмы у меня на дбф-е сидят :(
39. Юрий Португалов (Sprite) 23.08.12 21:00
Справочник Контрагентов из 11 000 элементов - 20 секунд.
Повеситься!
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа