Независимый форум, посвященный системе БОСС-Кадровик  и всему, что с ней связано
  | 
				 
				 | 
			 
		 
		 
	
		| Предыдущая тема :: Следующая тема   | 
	 
	
	
		| Автор | 
		Сообщение | 
	 
	
		Mila
 
 
  Зарегистрирован: 28.05.2009 Сообщения: 44 Откуда: СПб
  | 
		
			
				 Добавлено: Пт Июн 11, 2010 12:05    Заголовок сообщения: Динамическое формирование отчета | 
				     | 
			 
			
				
  | 
			 
			
				Всем добрый день!
 
Делаю отчет, код к примеру.
 
 	  | Код: | 	 		  
 
--Let _firm_Name = '@@10';
 
select short_name into :_firm_Name from setup where id_firm = @@1;
 
 
------------- НАЧАЛО ДОКУМЕНТА 
 
EXECUTE xOCX{
 
Word.Basic as Word;
 
Word.FileNew();
 
Word.FontSize(12);
 
Word.RightPara();
 
Word.Insert("Начальнику ...");
 
Word.InsertPara(); 
 
Word.Insert("...");
 
Word.InsertPara(); 
 
Word.Insert(:short_name);
 
Word.InsertPara();
 
Word.InsertPara(); 
 
Word.InsertPara(); 
 
Word.InsertPara(); 
 
Word.LeftPara();
 
Word.Insert('         текст ');
 
Word.InsertPara();
 
Word.InsertPara();
 
Word.LeftPara();
 
Word.Bold();
 
Word.Insert("Таблица 1. ");
 
Word.InsertPara();
 
Word.InsertPara();
 
};
 
 
------------- ТАБЛИЦА 1
 
EXECUTE xOCX{
 
Word.TableInsertTable(3,2);
 
Word.TableInsertColumn();
 
Word.StartOfLine();
 
Word.TableColumnWidth("1.25 см");
 
Word.NextCell();
 
Word.TableColumnWidth("10.5 см");
 
Word.NextCell();
 
Word.TableColumnWidth("5.0 см");
 
Word.NextCell();
 
Word.TableSelectTable();
 
Word.BorderInside(1);
 
Word.BorderOutside(1);
 
Word.StartOfLine();
 
-- 1 колонка
 
Word.Bold();
 
Word.CenterPara();
 
Word.Insert("№ п/п");
 
Word.InsertPara();
 
-- 2 колонка
 
Word.NextCell();
 
Word.Bold();
 
Word.CenterPara();
 
Word.Insert("Фамилия Имя Отчество");
 
Word.InsertPara();
 
-- 3 колонка
 
Word.NextCell();
 
Word.Bold();
 
Word.CenterPara();
 
Word.Insert("Дата рождения");
 
Word.InsertPara();
 
--
 
Word.NextCell();
 
};
 
------------- 1. ЦИКЛ
 
SCAN @CNDN Select   LTRIM(RTRIM(STR(ROW_NUMBER() OVER(ORDER BY Full_Name))+'.')) as num_pp,
 
               LTRIM(RTRIM(card.Full_Name)) as Full_Name, 
 
               Convert(varchar(12),card.date_birth,104) as date_birth
 
         from pr_current left join
 
                people on (pr_current.pId = people.pId) left join
 
                   card on (pr_current.auto_card = card.auto_card) 
 
         where pr_current.flag_last = '*' and people.id_firm = 1 and people.out_date = '2099-01-01 00:00:00.000' 
 
            and people.end_test between cast(convert(char(6),DateAdd(Month,-1,GetDate()),112)+'01' as datetime) 
 
            and GetDate() --dateadd(day,-1, convert(char(6), dateadd(month,0,DateAdd(Month,1,GetDate())),112)+'01')
 
         order by card.Full_Name
 
EXECUTE { Begin
 
         Let :_num_pp = @CNDN:num_pp;
 
         Let :_Full_Name = @CNDN:Full_Name;
 
         Let :_date_birth = @CNDN:date_birth;
 
         ------------- ВЫВОД записей в таблицу
 
         EXECUTE xOCX{
 
                  Word.FontSize(11);
 
                  Word.Insert(:_num_pp);
 
                  Word.NextCell();
 
                  Word.FontSize(11);
 
                  Word.Insert(:_Full_Name);
 
                  Word.NextCell();
 
                  Word.FontSize(11);
 
                  Word.Insert(:_date_birth);
 
                  Word.NextCell();
 
               };
 
      END      };
 
------------- 1. end
 
 
--Word.InsertBreak();      -- На след страницу
 
-- Руководитель организации
 
Word.InsertPara(); 
 
Word.Insert("Руководитель организации"); -- Руководитель организации 
 
Word.Insert("                                         ");
 
Word.Insert("ФИО руководителя организации"); -- ФИО руководителя организации 
 
Word.InsertPara();
 
Word.InsertPara(); 
 
 
-- Работник кадровой службы
 
Word.InsertPara(); 
 
Word.Insert("исп. ");
 
Word.Insert("ФИО работника кадровой службы"); -- ФИО работника кадровой службы
 
Word.InsertPara();
 
Word.InsertPara(); 
 
 
 
EXECUTE xOCX{
 
Word.StartOfLine();
 
Word.AppShow();
 
};
 
 
Free _num_pp, _Full_Name, _date_birth, _firm_Name;
 
ALIAS :_Result=-1;
 
 | 	  
 
 
После вывода данных в таблицу, курсор остается в таблице и я не знаю как из нее "выбраться" ))) чтобы писать текст ниже таблицы.
 
Жду ваших советов о мудрейшие из мудрейших    | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		Vitaly Большой шоколадный орден
  
 
  Зарегистрирован: 29.07.2008 Сообщения: 281 Откуда: Санкт-Петербург
  | 
		
			
				 Добавлено: Пт Июн 11, 2010 12:17    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				 	  | Код: | 	 		  wordApp.Selection.GoTo(-1,0,0, "T1");
 
SCAN @T1
 
 
Select Podr, Dolz, Fio, TabNo, KolD, IsNull(Convert(varchar(10),PlanD,104),''), IsNull(Convert(varchar(10),FactD,104),'') From #User_Tempo Where 1=1 Order By SortN, FactD, FIO
 
execute {
 
   wordApp.Selection.TypeText(:@T1:1['']);
 
   wordApp.WordBasic.nextcell();
 
   wordApp.Selection.TypeText(:@T1:2['']);
 
   wordApp.WordBasic.nextcell();
 
   wordApp.Selection.TypeText(:@T1:3['']);
 
   wordApp.WordBasic.nextcell();
 
   wordApp.Selection.TypeText(:@T1:4['']);
 
   wordApp.WordBasic.nextcell();
 
   wordApp.Selection.TypeText(@T1:5['']);
 
   wordApp.WordBasic.nextcell();
 
   wordApp.Selection.TypeText(:@T1:6['']);
 
   wordApp.WordBasic.nextcell();
 
   wordApp.Selection.TypeText(:@T1:7['']);
 
   wordApp.WordBasic.nextcell();
 
   wordApp.WordBasic.nextcell();
 
   wordApp.WordBasic.nextcell();
 
   wordApp.WordBasic.nextcell();
 
};-- end SCAN @T1
 
 
 
  wordApp.ActiveDocument.Variables.Add("ФИРМА",:DocVar_FIRMA['']);
 
  wordApp.ActiveDocument.Variables.Add("ОКПО",:DocVar_OKPO_['']);
 
  wordApp.ActiveDocument.Variables.Add("ДОЛЖНОСТЬ_РУКОВОДИТЕЛЯ",:DocVar_DIRECTOR_APPOINT['']);
 
  wordApp.ActiveDocument.Variables.Add("ФИО_РУКОВОДИТЕЛЯ",:DocVar_DIRECTOR_NAME['']);
 
  wordApp.ActiveDocument.Variables.Add("ДОЛЖНОСТЬ_РУКОВОДИТЕЛЯ_КС",:DocVar_DIRECTOR_APPOINT_PD['']);
 
  wordApp.ActiveDocument.Variables.Add("ФИО_РУКОВОДИТЕЛЯ_КС",:DocVar_DIRECTOR_NAME_PD['']);
 
  wordApp.ActiveDocument.Variables.Add("Дата_Док", 'Dat_[dd.mm.yyyy]');
 
 
  wordApp.Run("DocVarUpdate"); | 	  
 
 
У меня нормально "выбирается"...      Т1 - это метка таблицы в шаблоне DOT | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		Mila
 
 
  Зарегистрирован: 28.05.2009 Сообщения: 44 Откуда: СПб
  | 
		
			
				 Добавлено: Пт Июн 11, 2010 12:26    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				а почему у меня нет?    | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		Nemoxur
 
 
  Зарегистрирован: 30.04.2010 Сообщения: 49
 
  | 
		
			
				 Добавлено: Пт Июн 18, 2010 16:36    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				| Сеорее всего у тебя в шаблоне не стоит закладка на которой должен появиться текст. | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
		Vitaly Большой шоколадный орден
  
 
  Зарегистрирован: 29.07.2008 Сообщения: 281 Откуда: Санкт-Петербург
  | 
		
			
				 Добавлено: Пт Июн 18, 2010 17:13    Заголовок сообщения:  | 
				     | 
			 
			
				
  | 
			 
			
				Лучше создать сразу шаблон с шапкой и дать имя таблице, как у меня    , в коде только заполнять таблицу... за основу брал БОССовский код | 
			 
		  | 
	 
	
		| Вернуться к началу | 
		 | 
	 
	
		  | 
	 
	
	
	
	
		 | 
	 
 
  
	 
	    
	   | 
	
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
  | 
   
 
		 |