Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Дерево на ТП. Есть решение? (число прочтений - 10159 )
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Дерево на ТП. Есть решение?
11. Апреля 2011 :: 16:15
Печать  
ПоставщикДанных уж Очень наворочен. Дерево отчетов на дерево мало похоже
А есть что-нибудь попроще, типа ДереаоЗначений в 8-ке?
Дерево Альфа, COMCTL и RiK не в счет, именно ТП.
  

Константин
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Дерево на ТП. Есть решение?
Ответ #1 - 12. Апреля 2011 :: 02:51
Печать  
Конечно есть, но оно еще не дозрело до состояния, когда его можно выкладывать (хотя в работе используется уже около года), да и поддержки обещать не могу ... ПД я вообще не смог принять ввиду его особой замудренности, когда для решения простейшей задачи требуется создать немерянное число объектов, в том числе и визуальных ...
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Дерево на ТП. Есть решение?
Ответ #2 - 12. Апреля 2011 :: 16:34
Печать  
Я конечно понимаю что ПоставщикДанных сложен в понимании... но замудренного в нем ничего нет, это точно.
Немеренное количество объектов ограничивается 1-м (ПоставщикДанных), все же остальное он создает и работает с ними сам.

С другой стороны если не поняли то ладно, представляю как сурово будет работать с системой компоновки данных в режиме программирования когда на 8.х перейдете Улыбка))))

Пы.сы. возможно во мне говорит создатель больше чем пользователь.  Смех
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Дерево на ТП. Есть решение?
Ответ #3 - 13. Апреля 2011 :: 02:36
Печать  
vandalsvq писал(а) 12. Апреля 2011 :: 16:34:
Я конечно понимаю что ПоставщикДанных сложен в понимании... но замудренного в нем ничего нет, это точно.
Немеренное количество объектов ограничивается 1-м (ПоставщикДанных), все же остальное он создает и работает с ними сам.

С другой стороны если не поняли то ладно, представляю как сурово будет работать с системой компоновки данных в режиме программирования когда на 8.х перейдете Улыбка))))

Пы.сы. возможно во мне говорит создатель больше чем пользователь.  Смех

Кстати, с СКД я уже работаю ... свое дерево я наваял, кстати, после изучения ПД Подмигивание
Т.е. я не отрицаю, что в нем есть смысл для тех, кто привык к стандартным решениям, не требующих понимания, однако ограниченных в возможности управления ими ...
Смысл в том, что мое дерево не думает о данных - вся логика его работы сводится только к отрисовке дерева, свертке, развертке и т.д. О данных она не зхаботится, предоставляя пользователю возможность добавлять любое число настраиваемых полей, в том числе и видимость. В ПД же больше уделяется внимания работе с данными, т.е. для меня он избыточен.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Дерево на ТП. Есть решение?
Ответ #4 - 13. Апреля 2011 :: 07:09
Печать  
Ну в целом да, поэтому и поставщик данных, а не элемент управления.
Интересно посмотреть реализацию элемента управления отвязанного от данных. Так что как что будет, позови Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Borodin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 01. Апреля 2007
Пол: Мужской
Re: Дерево на ТП. Есть решение?
Ответ #5 - 16. Мая 2011 :: 11:20
Печать  
Вот  примерчик Улыбка.
  

________002.ert ( 203 KB | Загрузки )
Наверх
ICQ  
IP записан
 
Borodin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 01. Апреля 2007
Пол: Мужской
Re: Дерево на ТП. Есть решение?
Ответ #6 - 16. Мая 2011 :: 13:06
Печать  
Выглядеть должно примерно вот так.
Узлы разворачивает мышкой (кликать по иконке с плюсом).
Источник данных индексированная таблица с колонками:
Ид - Идентификатор любое число (уникальное в пределах таблицы).
Род - Идентификатор верхнего уровня.  


  

___+_______.bmp ( 766 KB | Загрузки )
___+_______.bmp
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Дерево на ТП. Есть решение?
Ответ #7 - 16. Мая 2011 :: 13:11
Печать  
красиво
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Дерево на ТП. Есть решение?
Ответ #8 - 16. Мая 2011 :: 17:27
Печать  
Borodin писал(а) 16. Мая 2011 :: 11:20:
Вот  примерчик Улыбка.  

Классно Улыбка

Можно немножко улучшить здесь:
Код
Выбрать все
Процедура СвернутьРазвернуть(Флг)

	//ИтСтрк.ВыбратьСтроки();
	//Пока ИтСтрк.ПолучитьСтроку() = 1 Цикл
	//	ИтСтрк.ФлгСР = Флг;
	//КонецЦикла;
	ИтСтрк.ЗаполнитьКолонку(, "ФлгСР", Флг);
	АтрФормы.фТаблПоле.ТП.ОбновитьСтроки();

КонецПроцедуры
 



и выполнять
Код
Выбрать все
	ЗаполнитьОтфонарнымиДанными();
 


до индексирования

Тогда вполне себе неплохо тянет приличные по размеру деревья.

А что такое?
Код
Выбрать все
Для ии=1 по 50 Цикл
...
Для ии=1 по 7000 Цикл
 



Если это ограничения на размер дерева или глубину вложенности, это надо документировать.
Хотя признаюсь честно, я в логике пока серьезно не разбирался по причине прогрессирующего авитаминоза.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Borodin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 01. Апреля 2007
Пол: Мужской
Re: Дерево на ТП. Есть решение?
Ответ #9 - 17. Мая 2011 :: 07:22
Печать  
В данном случаи ограничение на количество вложений 50 но его можно убрать или поставить любое это не критично.
Самое главное не создавать петлю (когда ссылка на родителя будет указывать на подчиненную строку) , в этом случаи начнутся глюки.

Ограничений на размер индексированной таблицы НЕТ.
Будет работать одинаково быстро при любом количестве строк.

В данном отчете сортировка элементов идет по колонке "Сорт"
Но если переправить строку:
ТекОб=ИнитТП(ОбФорма,ИмяАтр,ИнитОбИт(итСтрк,"Ид","Род","Сорт",0));

прописать вместо строки "Сорт" другую колонку например "Текст" или несколько других колонок через запятую, то будет сортировать по ним.
       
При необходимости можно вставлять и удалять строки. После вставки и удаления необходимо  обновить строки  и изменения будут отображены в ТП.

Если интересно могу выложить пример для отображения любого справочника в виде дерева для 1С Под MSSQL  в нем строки формирует временная хранимая процедура и выдает их маленькими порциями, таким образом  можно отобразить справочник любой величины без всяких тормозов и задержек.
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Дерево на ТП. Есть решение?
Ответ #10 - 17. Мая 2011 :: 08:47
Печать  
Borodin писал(а) 17. Мая 2011 :: 07:22:
В данном отчете сортировка элементов идет по колонке "Сорт"
Но если переправить строку:
ТекОб=ИнитТП(ОбФорма,ИмяАтр,ИнитОбИт(итСтрк,"Ид","Род","Сорт",0));

прописать вместо строки "Сорт" другую колонку например "Текст" или несколько других колонок через запятую, то будет сортировать по ним.

Да, это грамотно, я уже оценил.

Borodin писал(а) 17. Мая 2011 :: 07:22:
Если интересно могу выложить пример для отображения любого справочника в виде дерева для 1С Под MSSQL  в нем строки формирует временная хранимая процедура и выдает их маленькими порциями, таким образом  можно отобразить справочник любой величины без всяких тормозов и задержек.    

Конечно, интересно.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Дерево на ТП. Есть решение?
Ответ #11 - 17. Мая 2011 :: 09:44
Печать  
Выкладывай!
Я писал дерево под мсконтрол, там динамически строил ветку дерева только при открытии узла, и при его сворачивании грохал ветку - таким образом пофик на уровень вложенности.
Единственное - всё дерево раскрытым целиком не получишь Печаль
  
Наверх
 
IP записан
 
Borodin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 01. Апреля 2007
Пол: Мужской
Re: Дерево на ТП. Есть решение?
Ответ #12 - 17. Мая 2011 :: 14:41
Печать  
Ловите!!  Очень довольный  Может кому пригодится Улыбка.
 
Кому не лень опешите результат.
Там если в системе стоит менее 16 бит цвета то картинки будут плохо отображаться, в терминале такое бывает.
Лечится очень просто меняем картинку строк на 16-ти цветную и все ок. Не так красиво зато работает.    

Это незаконченный вариант примера.
В отчете много лишнего кода и глюков, и совсем нет комментариев Печаль , но если общественность будет настаивать то ... 

  

DemoTreeSQL.ert ( 206 KB | Загрузки )
Наверх
ICQ  
IP записан
 
Borodin
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 01. Апреля 2007
Пол: Мужской
Re: Дерево на ТП. Есть решение?
Ответ #13 - 19. Мая 2011 :: 09:54
Печать  
Доработал некоторые функции.

Можно свернуть развернуть дерево
С позиционировать на выбранной строке
Получить текущий объект.

Снеговик нервно курит в сторонке   Смех
  

DemoTreeSQL_v2_001.ert ( 209 KB | Загрузки )
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Дерево на ТП. Есть решение?
Ответ #14 - 19. Мая 2011 :: 11:03
Печать  
Привязок явно не хватает..Улыбка
Смотрю пока.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать