Имя: Пароль:
1C
 
Вывод справочника на печать
0 Merinid
 
05.11.06
13:36
Подскажите плиз новичку как лучше реализовать выборку из справочника с последующим выводом в печатную форму.
Заранее спасибо.
1 Конь в пальто
 
05.11.06
13:37
мдя... смотря что те нужно
2 Ирен
 
05.11.06
13:39
Запрос, перебор элементов. Какие слова более знакомые? :)
3 mikecool
 
05.11.06
13:40
TranRef.ert с диска ИТС... и не париться...
4 Конь в пальто
 
05.11.06
13:40
(3) разве он печататет?.. )
5 mikecool
 
05.11.06
13:41
(4) сорри... :-) RefPrint.ert
6 Perebatoff
 
05.11.06
13:53
Я бы сделал перебором.
7 Скользящий
 
05.11.06
13:53
На проклабе таких обработок штук 50
8 Merinid
 
05.11.06
13:57
Собственно дребыется выбрать все содержимое справочника и вывести в печатную форму.
p.s. на проклабе это по какой линке? :)
9 Merinid
 
05.11.06
13:58
требуется... черт жаль нет редактирования мессаг
10 Ирен
 
05.11.06
13:59
(8) Мдя.. а не судьба в любой конфе посмотреть как это делается? Тебе надо просто сделать или научиться?
11 Merinid
 
05.11.06
14:02
научиться. ну и сделать тоже...
12 Ирен
 
05.11.06
14:04
(11) мыло посмотри. глава про отчеты.
13 Merinid
 
05.11.06
14:07
2 Ирен огромное спасибо почитаю :)
14 VasilyKushnir
 
06.11.06
10:13
http://infostart.ru/projects/index.php?id=210&desc=1&ref=440 - Универсальная печать справочников (УПС), версия 1.31
http://infostart.ru/projects/index.php?id=67&ref=440 - 1C: Новейший отчет 7.7. Универсальный конструктор отчетов по регистру и бухгалтерским счетам, печать справочников, реестры документов, диаграммы 1С.

Вторая вэщь вообще полный улет, НО платная.
15 jarett
 
06.11.06
10:15
Перем Таб;  
Перем ИмяОтб, ЗначОтб;

//*******************************************  
Процедура ПечатьРеквизита(Спр,Сч,ФлагРасш,Отступ="",Секц="Реквизит",Уровень=0)
   //Исключаем зацикливание
   Если Уровень>5 тогда
       Возврат;
   КонецЕсли;    
   Атриб=Метаданные.Справочник(Спр.Вид()).Реквизит(Сч);
   АтрибЗн=Спр.ПолучитьАтрибут(Атриб);
   Таб.ВывестиСекцию(Секц);  
   Если ФлагРасш=1 тогда  
       Если
       (ПустоеЗначение(АтрибЗн)=0)и
       (Атриб.Тип="Справочник")
       тогда    
           Спр1= СоздатьОбъект("Справочник."+АтрибЗн.Вид());
           Спр1.ИспользоватьДату(РабочаяДата());
           Спр1.НайтиЭлемент(АтрибЗн);
           Для Сч1=1 по Метаданные.Справочник(Спр1.Вид()).Реквизит() Цикл
               ПечатьРеквизита(Спр1,Сч1,1,Отступ+"    ",Секц,Уровень+1);
           КонецЦикла;
       КонецЕсли;    
   КонецЕсли;    
КонецПроцедуры    

Процедура Сформировать()    
   СписРекв= СоздатьОбъект("СписокЗначений");
   Если ВыбРеквизиты.РазмерСписка()>0 тогда
       Для сч=1 по ВыбРеквизиты.РазмерСписка() цикл
           Если ВыбРеквизиты.Пометка(сч)=1 тогда
               СписРекв.ДобавитьЗначение(ВыбРеквизиты.ПолучитьЗначение(сч));
           КонецЕсли;    
       КонецЦикла;    
   КонецЕсли;        
   СписРасш= СоздатьОбъект("СписокЗначений");
   Если РасшРеквизиты.РазмерСписка()>0 тогда
       Для сч=1 по РасшРеквизиты.РазмерСписка() цикл
           Если РасшРеквизиты.Пометка(сч)=1 тогда
               СписРасш.ДобавитьЗначение(РасшРеквизиты.ПолучитьЗначение(сч));
           КонецЕсли;    
       КонецЦикла;    
   КонецЕсли;        
   СписПодч= СоздатьОбъект("СписокЗначений");
   Если ВыбПодчиненные.РазмерСписка()>0 тогда
       Для сч=1 по ВыбПодчиненные.РазмерСписка() цикл
           Если ВыбПодчиненные.Пометка(сч)=1 тогда
               СписПодч.ДобавитьЗначение(ВыбПодчиненные.ПолучитьЗначение(сч));
           КонецЕсли;    
       КонецЦикла;    
   КонецЕсли;        
   
   Таб = создатьобъект("Таблица");
   Спр= СоздатьОбъект("Справочник."+ВыбСправочник.ПолучитьЗначение(ВыбСправочник.ТекущаяСтрока()));
   Спр.ИспользоватьДату(РабочаяДата());

   Если ВыбГруппа.Выбран()=1 тогда    
       Если ВыбГруппа.ЭтоГруппа()=1 тогда
           Спр.ИспользоватьРодителя(ВыбГруппа);
       иначе    
           Спр.ИспользоватьРодителя(ВыбГруппа.Родитель);
       КонецЕсли;    
   КонецЕсли;        
   
   Если ПустоеЗначение(ЗначОтб)=0 тогда        
       Спр.ВыбратьЭлементыПоРеквизиту(ИмяОтб, ЗначОтб,0);    
   иначе    
       Спр.ВыбратьЭлементы();    
   КонецЕсли;      
   
   Таб.ВывестиСекцию("Шапка");
   НомерПП = 1;
   Пока Спр.ПолучитьЭлемент()=1 цикл    
       Если ВыбГруппа.Выбран()=1 тогда
           Если    
           (ВыбГруппа.ЭтоГруппа()=0)и
           (ВыбГруппа<>Спр.ТекущийЭлемент())
           тогда
               Продолжить;
           КонецЕсли;    
       КонецЕсли;    
       Если Спр.ЭтоГруппа()=1 тогда
           Таб.ВывестиСекцию("Группа");
           Продолжить;
       КонецЕсли;  
       Таб.ВывестиСекцию("Строка");
       НомерПП = НомерПП + 1;      
       Состояние("Выведено элементов "+НомерПП);
       Для Сч=1 по Метаданные.Справочник(Спр.Вид()).Реквизит() Цикл  
           Атриб=Метаданные.Справочник(Спр.Вид()).Реквизит(Сч).Идентификатор;    
           Если СписРекв.Принадлежит(Атриб)=1 тогда
               ПечатьРеквизита(Спр,Сч,СписРасш.Принадлежит(Атриб));
           КонецЕсли;    
       КонецЦикла;
       //Подчиненные
       Если СписПодч.РазмерСписка()>0 тогда
           Для счП=1 по СписПодч.РазмерСписка() цикл  
               СпрП= СоздатьОбъект("Справочник."+СписПодч.ПолучитьЗначение(счП));
               СпрП.ИспользоватьДату(РабочаяДата());
               СпрП.ИспользоватьВладельца(Спр.ТекущийЭлемент());
               Если СпрП.ВыбратьЭлементы()=1 тогда
                   Таб.ВывестиСекцию("ИмяПодч");
                   Пока СпрП.ПолучитьЭлемент()=1 цикл  
                       Если
                       (ПустаяСтрока(СпрП.Наименование)=0)или
                       (ПустоеЗначение(СпрП.Код)=0)
                       тогда
                           Таб.ВывестиСекцию("СтрокаПодч");
                       Иначе    
                           Таб.ВывестиСекцию("СтрокаМалПодч");
                       КонецЕсли;    
                       Для Сч=1 по Метаданные.Справочник(СпрП.Вид()).Реквизит() Цикл  
                           ПечатьРеквизита(СпрП,Сч,0,"  ","РеквПодч");
                       КонецЦикла;
                   КонецЦикла;    
               КонецЕсли;    
           КонецЦикла;    
       КонецЕсли;    
   КонецЦикла;        
   Таб.Опции(0,0,0,0);
   Таб.Опции(0,0,Таб.ВысотаСекции("Шапка"),0);
   Таб.ПовторятьПриПечатиСтроки(Таб.ВысотаСекции("Шапка"),Таб.ВысотаСекции("Шапка"));
   Таб.ТолькоПросмотр(1);
   Таб.Показать(Спр.Вид());
КонецПроцедуры    

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

   ВыбПодчиненные.УдалитьВсе();
   Для Сч=1 по Метаданные.Справочник() цикл
       Если СокрЛП(Метаданные.Справочник(Сч).Владелец)= Спр.Вид() тогда
           ВыбПодчиненные.ДобавитьЗначение(Метаданные.Справочник(Сч).Идентификатор);
       КонецЕсли;    
   КонецЦикла;
КонецПроцедуры      

Процедура ПриВыбореЗакладки(Номер,Значение)
   Форма.ИспользоватьСлой(Значение,2);    
КонецПроцедуры            

Процедура ПриОткрытии()
   Если ПустоеЗначение(Форма.Параметр)=0 тогда    
       ВыбСправочник.ТекущаяСтрока(ВыбСправочник.НайтиЗначение(Форма.Параметр.Вид()));    
       УстановкаВида();  
       Если ПустоеЗначение(Форма.Параметр.ТекущийЭлемент())=0 тогда  
           ВыбГруппа= Форма.Параметр.ТекущийЭлемент().Родитель;
       КонецЕсли;    
       Форма.Параметр.ПолучитьОтбор(ИмяОтб, ЗначОтб);
   КонецЕсли;    
КонецПроцедуры            


Для Сч=1 по Метаданные.Справочник() цикл
   ВыбСправочник.ДобавитьЗначение(Метаданные.Справочник(Сч).Идентификатор);
КонецЦикла;
ВыбСправочник.ТекущаяСтрока(1);    
Форма.ВыбГруппа.НеИзменятьВид(1);
УстановкаВида();                

Форма.ИспользоватьЗакладки(1);  
Форма.Закладки.ДобавитьЗначение("Основной,Кнопки","Основной");
Форма.Закладки.ДобавитьЗначение("Реквизиты,Кнопки","Реквизиты");
ПриВыбореЗакладки(1,Форма.Закладки.ПолучитьЗначение(1));

у меня так.
16 Merinid
 
06.11.06
17:49
2 jarett
Благодарю :) Выглядит внушительно. Попробую разобраться с этим куском кода
17 Merinid
 
06.11.06
17:50
2 VasilyKushnir спасибо тоже скачал буду разбираться. Второе так понимаю нахаляву только демка...
18 Злопчинский
 
06.11.06
17:53
Пипец какой-то... Люди, вы что, никогда диска ИТС не видели? Универсальные обработки не юзали? (а уже универсальные - можно развивать в сторону большей функциональности)...
Омистенеть...
2 + 2 = 3.9999999999999999999999999999999...