Независимый форум, посвященный системе БОСС-Кадровик и всему, что с ней связано
|
|
Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
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 Заголовок сообщения: |
|
|
Лучше создать сразу шаблон с шапкой и дать имя таблице, как у меня , в коде только заполнять таблицу... за основу брал БОССовский код |
|
Вернуться к началу |
|
 |
|
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|