Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Заполнить Дерево+Таблица как в справочнике (число прочтений - 1777 )
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Заполнить Дерево+Таблица как в справочнике
29. Января 2009 :: 12:19
Печать  
Помогите правильно составить код. Задача сделать 4 уровня дерево. 1. Что бы быстро создавалась. 2. Отображались только группы. Делаю так, ерудна получается. ((

ТЗ_Реквизиты = СоздатьОбъект("ТаблицаЗначений");
     ТЗ_Реквизиты1 = СоздатьОбъект("ТаблицаЗначений");
     
    ТабДерево1.НоваяКолонка("СледУровень");
     ТабДерево1.НоваяКолонка("Пиктограмма");
     ТабДерево1.НоваяКолонка("Дерево");
     
     

     ТЗ_Реквизиты.НоваяКолонка("СледУровень");
     ТЗ_Реквизиты.НоваяКолонка("Пиктограмма");
     ТЗ_Реквизиты.НоваяКолонка("Дерево");
     

     ТЗ_Реквизиты1.НоваяКолонка("СледУровень");
     ТЗ_Реквизиты1.НоваяКолонка("Пиктограмма");
     ТЗ_Реквизиты1.НоваяКолонка("Дерево");
     
СпНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
СпНоменклатура.ВыбратьЭлементы();
Пока СпНоменклатура.ПолучитьЭлемент() = 1 Цикл
     Если СпНоменклатура.ЭтоГруппа() = 1 Тогда
     Если СпНоменклатура.Уровень() = 1 Тогда
     Если (СокрЛП(СпНоменклатура.Наименование) = "Диски и дискеты") или (СокрЛП(СпНоменклатура.Наименование) = "Упаковка") Тогда
                 
           
     ТабДерево1.НоваяСтрока();
     ПолучитьЭлементыУровня2(СпНоменклатура.Код);
                                   ТабДерево1.СледУровень=ТЗ_Реквизиты;
                                   ТабДерево1.Дерево=СпНоменклатура.Наименование;
                                   ТабДерево1.Пиктограмма = 1;
     КонецЕсли;                        
КонецЕсли            
КонецЕсли      
КонецЦикла;





Процедура ПолучитьЭлементыУровня3(Код)
     ТЗ_Реквизиты1.УдалитьСтроки();
           СпНоменклатураРод = СоздатьОбъект("Справочник.Номенклатура");
           СпНоменклатураРод.НайтиПоКоду(Код);
     СпНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
      //СпНоменклатура.ИспользоватьРодителя(СпНоменклатураРод.ТекущийЭлемент());
     СпНоменклатура.ВыбратьЭлементы();
     Пока СпНоменклатура.ПолучитьЭлемент()=1 Цикл
Если СпНоменклатура.ПринадлежитГруппе(СпНоменклатура.ТекущийЭлемент()) = 1 Тогда;
Если СпНоменклатура.ЭтоГруппа() = 1 тогда
           ТЗ_Реквизиты1.НоваяСтрока();
     ТЗ_Реквизиты1.СледУровень=0;
     ТЗ_Реквизиты1.Дерево=СпНоменклатура.Наименование;
     ТЗ_Реквизиты1.Пиктограмма = 1;      
     КонецЕсли;      
                 
           КонецЕсли;      
           
     КонецЦикла;
     
     
КонецПроцедуры // ПолучитьЭлементыУровня2



Процедура ПолучитьЭлементыУровня2(Код)
     ТЗ_Реквизиты.УдалитьСтроки();
           СпНоменклатураРод = СоздатьОбъект("Справочник.Номенклатура");
           СпНоменклатураРод.НайтиПоКоду(Код);
     СпНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
     //СпНоменклатура.ИспользоватьРодителя(СпНоменклатураРод.ТекущийЭлемент());
     СпНоменклатура.ВыбратьЭлементы();
     Пока СпНоменклатура.ПолучитьЭлемент()=1 Цикл
           Если СпНоменклатура.ЭтоГруппа() = 1 тогда
Если СпНоменклатура.ПринадлежитГруппе(СпНоменклатура.ТекущийЭлемент()) = 1 Тогда;

           ТЗ_Реквизиты.НоваяСтрока();
           ПолучитьЭлементыУровня3(СпНоменклатура.Код);
           Если ТЗ_Реквизиты1.КоличествоСтрок() > 0 Тогда
     ТЗ_Реквизиты.СледУровень=ТЗ_Реквизиты1;
Иначе
           ТЗ_Реквизиты.СледУровень = 0;
КонецЕсли;
     ТЗ_Реквизиты.Дерево=СпНоменклатура.Наименование;
     ТЗ_Реквизиты.Пиктограмма = 1;      
     КонецЕсли;      
                 
           КонецЕсли;      
           
     КонецЦикла;
     
     
КонецПроцедуры // ПолучитьЭлементыУровня2
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Заполнить Дерево+Таблица как в справочнике
Ответ #1 - 29. Января 2009 :: 17:27
Печать  
А ИТЗ и прямой запрос что уже отменили?
Ну и рекурсию тоже.
  
Наверх
 
IP записан
 
sergling
Junior Member
**
Отсутствует



Сообщений: 24
Зарегистрирован: 05. Июля 2007
Пол: Мужской
Re: Заполнить Дерево+Таблица как в справочнике
Ответ #2 - 30. Января 2009 :: 14:08
Печать  
http://www.1cpp.ru/forum/YaBB.pl?num=1197218664/7#7
здесь я когда то выкладывал код, правда там не толко группы, но и элементы.
  
Наверх
 
IP записан
 
admin spb
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 150
Зарегистрирован: 26. Апреля 2007
Пол: Мужской
Re: Заполнить Дерево+Таблица как в справочнике
Ответ #3 - 06. Февраля 2009 :: 11:22
Печать  
У меня задача синхронизировать справочник номенклатура из другой базы. Так чтобы были два одинаковых справочника.
Пробывал через OLE. не получилось, т.к. не могу получить кому принадлежит группа. (((
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать