Страница 1 из 1
Альбомная ориентация в SLK
Добавлено: 12 фев 2013, 10:52
korvanakorvana
День добрый подскажите плиз как для SLK сделать Альбомную ориентацию? есть ли какая функция?
Код: Выделить всё
interface _gt_otgruz 'Отчёт отгрузок по фирмам' escclose;
show at(,,36,3);
table struct tOtgr
(
polnrec:comp,
grpolnrec:comp,
sposob:string,
summa:double,
sf:string
)
with index
(idx1=polnrec+grpolnrec+sposob);
create view
var
date1:date
date2:date
dat1:date
dat2:date
as select *
from
basedoc //фюъєьхэЄ юёэютрэш
,ttndoc //Ёрё°шЁхэш фюъєьхэЄют фы ╥╥═
,tOtgr
,katorg orgPol //╩юэЄЁрухэЄ√
,katorg orgGrPol
,katcity //ърЄрыюу уюЁюфют
where
((
word(1102)/==ttndoc.wtable //уфх ёыютю Ёртэю ╩юфє ЄрсышЎ√ ёыютрЁ
and dat1<<=ttndoc.dpunrbeg(noindex)//dat1<<=фрЄр эрўрыр ЁрчуЁєчъш
and dat2>>=ttndoc.dpunrbeg(noindex) //dat2>>=фрЄр эрўрыр ЁрчуЁєчъш
and ttndoc.cdoc==basedoc.nrec //ёё√ыър эр тырфхы№Ўр
and tOtgr.polnrec==orgPol.nrec //=
and tOtgr.Grpolnrec==orgGrPol.nrec
and orgGrPol.ccity==katcity.nrec
))
;
screen params
show at(,,35,2);
fields date1:,noprotect;
fields date2:,noprotect;
buttons
cmOK, default;
cmCancel;
<<
c .@@@@@@@@@@ по .@@@@@@@@@@
<.Формировать.> <. Закрыть .>
>>
end;
Form otgruz ('out\otgruz.out');
Form reestr ('out\reestr.out');
handleevent
cmInit:
{
date1:=date(1,month(cur_date),year(cur_date));
date2:=Cur_Date;
}
cmOk:
{
dat1:=date1;
dat2:=date2;
var summ:double;
delete all tOtgr;
StartNewVisual(vtRotateVisual, vfTimer+vfBreak+vfConfirm,'Идет расчет реальных отгрузок...', RecordsInTable(#basedoc));
//_loop ttndoc message(basedoc.nodoc);
//_loop ttndoc message(ttndoc.dpunrend);
_loop ttndoc
{
if (basedoc.vhodnal=1) then { summ:=basedoc.summa; }
else summ:=basedoc.summa + basedoc.nds;
if GetFirst tOtgr where ((basedoc.corg==tOtgr.polnrec and basedoc.cgrpol==tOtgr.grpolnrec and ttndoc.splist==tOtgr.sposob))<>tsOk
then
{
insert in tOtgr set tOtgr.polnrec:=basedoc.corg,
tOtgr.grpolnrec:=basedoc.cgrpol,
tOtgr.sposob:=ttndoc.splist,
tOtgr.summa:=summ,
tOtgr.sf:=ltrim(trim(basedoc.nodoc),'0');
}
else update current tOtgr set tOtgr.summa:=tOtgr.summa+summ,
tOtgr.sf:=trim(tOtgr.sf)+','+ltrim(trim(basedoc.nodoc),'0');
}
var itog:double;
var i:integer;
itog:=0;
i:=1;
_loop tOtgr
{
//if katcity.name<>'Новосибирск' and katcity.name<>'Кольцово' then
if katcity.name<>'Кольцово' then
{
otgruz.puteventbyid(feDoLoop, fcOTGR1) ;
otgruz.write(i);
if length (trim(tOtgr.sf))>8
then {
otgruz.write('Реестр '+string(i));
reestr.puteventbyid(feDoLoop, fcREESTR1) ;
reestr.write(string(i));
reestr.write(tOtgr.sf);
}
else otgruz.write(tOtgr.sf);
otgruz.write(orgPol.name);
otgruz.write(orgGrPol.name);
otgruz.write(datetostr(date1,'Month YYг.'));
otgruz.write(katcity.name);
case trim(tOtgr.sposob) of
'1': otgruz.write('Авиаперевозка');
'2': otgruz.write('Железная дорога');
'3': otgruz.write('Автоперевозка');
'4': otgruz.write('Почта');
else otgruz.write('Не определен');
end;
otgruz.write(tOtgr.summa);
itog:=itog+tOtgr.summa;
i:=i+1;
}
}
otgruz.write(itog);
otgruz.puteventbyid(feBreak, fcOTGR1) ;
reestr.puteventbyid(feBreak, fcREESTR1) ;
StopVisual('Опрерации завершена!',0);
otgruz.Showfile;
reestr.Showfile;
}
end;
end.
Re: Альбомная ориентация в SLK
Добавлено: 12 фев 2013, 11:00
edward_K
c SLK единственный шанс положить некий шаблон в папку надстроек, в котором бы обрабатывалось открытие книги Excel и по наименованию бы выполнялись те или инные действий - я вроде когда то писал об этом, ну по урайне мере пользовался.
Гораздо удобней все таки делать текстовую форму в которой выгонять в Excel шаблон. С шапкой вообще проблем нет, подножие можно копировать макросом, либо использовать возможности GalRepBuilder - чуть сложнее настраивать шаблон и вывод.
Re: Альбомная ориентация в SLK
Добавлено: 12 фев 2013, 15:22
korvanakorvana
edward_K писал(а):c SLK еинсвтенный шанс положить некий шаблон в папку надстроек, в котором бы обрабатывалось открытие книги Excel и по наименованию бы выполнялись те или инные действий - я вроде когда то писал об этом, ну по урайне мере пользовался.
Гораздо удобней все таки делать текстовую форму в которой выгонять в Excel шаблон. С шапкой вообще проблем нет, подножие можно копировать макросом, либо использовать возможности GalRepBuilder - чуть сложнее настраивать шаблон и вывод.
так ну вот я написала макросик для эксель а как его ативировать для каждого из 2 SLK отчетов???
Код: Выделить всё
Attribute VB_Name = "Module1"
Sub Landscope()
Attribute Landscope.VB_ProcData.VB_Invoke_Func = " \n14"
'
' Landscope Макрос
'
'
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.78740157480315)
.RightMargin = Application.InchesToPoints(0.393700787401575)
.TopMargin = Application.InchesToPoints(0.393700787401575)
.BottomMargin = Application.InchesToPoints(0.393700787401575)
.HeaderMargin = Application.InchesToPoints(0)
.FooterMargin = Application.InchesToPoints(0)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = False
.FitToPagesWide = 1
.FitToPagesTall = 32767
End With
End Sub
Re: Альбомная ориентация в SLK
Добавлено: 12 фев 2013, 16:05
RAJAH
korvanakorvana
Этот код можно повесить в AutoOpen, и оттуда запускать команды при совпадении имени документа.
Re: Альбомная ориентация в SLK
Добавлено: 12 фев 2013, 16:10
m0p3e
Либо VbScript запускать. В опыт-е пример есть.
Re: Альбомная ориентация в SLK
Добавлено: 12 фев 2013, 16:18
korvanakorvana
RAJAH писал(а):korvanakorvana
Этот код можно повесить в AutoOpen, и оттуда запускать команды при совпадении имени документа.
а можно с примерчиком?
возможно ли использовать в коде что то подобное:
xlImportModule('c:\macros.bas');
Re: Альбомная ориентация в SLK
Добавлено: 12 фев 2013, 17:03
RAJAH
korvanakorvana писал(а):а можно с примерчиком?
Код: Выделить всё
Sub Auto_Open()
If ActiveWorkbook.FullName = "<<тра-ля-ля>>\*.slk" Then
'тут чего-то делаем
End If
End Sub
SLK не стоит таких мучений: лучше сразу xl*-функции использовать.
Re: Альбомная ориентация в SLK
Добавлено: 13 фев 2013, 05:50
Алексей
хорошо когда отчет свой, а если slk на готовом прототипе?
Re: Альбомная ориентация в SLK
Добавлено: 13 фев 2013, 09:01
RAJAH
Алексей писал(а):хорошо когда отчет свой, а если slk на готовом прототипе?
У самого полно SLK-отчётов и в ARD, и на прототипе. Таких выкрутасов, как у
korvanakorvana, нам от них не требуется.
Re: Альбомная ориентация в SLK
Добавлено: 13 фев 2013, 10:17
korvanakorvana
RAJAH писал(а):Алексей писал(а):хорошо когда отчет свой, а если slk на готовом прототипе?
У самого полно SLK-отчётов и в ARD, и на прототипе. Таких выкрутасов, как у
korvanakorvana, нам от них не требуется.
ну мучают меня тут) а вам смешно
Cоздала я макрос вот как тут написано
Код: Выделить всё
Создание макроса «Авто_открыть»
Если вкладка Разработчик недоступна, выполните следующие действия для ее отображения.
Нажмите кнопку Microsoft Office , а затем щелкните Параметры Excel.
В категории Основные в группе Основные параметры работы с Excel установите флажок Показывать вкладку "Разработчик" на ленте, а затем нажмите кнопку ОК.
Для установки уровня безопасности, временно разрешающего выполнение всех макросов, выполните следующие действия:
На вкладке Разработчик в группе Код нажмите кнопку Безопасность макросов.
В категории Параметры макросов в группе Параметры макросов нажмите переключатель Включить все макросы (не рекомендуется, возможен запуск опасной программы), а затем нажмите кнопку ОК.
ПРИМЕЧАНИЕ. Для предотвращения запуска потенциально опасного кода по завершении работы с макросами рекомендуется вернуть параметры, отключающие все макросы.
Для сохранения макроса с конкретной книгой сначала откройте эту книгу.
На вкладке Разработчик в группе Код нажмите кнопку Запись макроса.
В поле Имя макроса введите Авто_открыть.
В списке Сохранить в выберите книгу, в которой нужно сохранить макрос.
СОВЕТ. Если необходимо, чтобы данный макрос был всегда доступен при работе в приложении Excel, выберите вариант Личная книга макросов. При выборе варианта Личная книга макросов создается скрытая личная книга макросов (Personal.xlsb)(если она еще не существует), в которой будет сохранен макрос. В Microsoft Windows Vista эта книга сохраняется в папке C:\Users\имя_пользователя\Application Data\Microsoft\Excel\XLStart. В Microsoft Windows XP эта книга сохраняется в папке C:\Documents and Settings\имя_пользователя\Application Data\Microsoft\Excel\XLStart. Книги из этой папки автоматически загружаются при каждом запуске приложения Excel. Если требуется автоматически запускать макрос из личной книги в другой книге, необходимо также сохранить эту книгу в папке XLStart, чтобы при запуске приложения Excel открывались обе книги.
Нажмите кнопку ОК, а затем выполните действия, которые нужно записать.
На вкладке Разработчик в группе Код нажмите кнопку Остановить запись .
СОВЕТ. Можно также нажать кнопку Остановить запись слева от строки состояния.
ПРИМЕЧАНИЯ
Если на шаге 6 было выбрано сохранение макроса в Эта книга или Новая книга, сохраните или переместите книгу в одну из папок XLStart.
Запись макроса «Авто_открыть» имеет следующие ограничения:
Если книга, в которой сохраняется макрос "Auto_Open", уже содержит процедуру на языке VBA в событии Open, эта процедура для события Open заменит все действия макроса "Auto_Open".
При открытии книги с помощью метода Open макрос «Авто_Открыть» игнорируется.
Макрос "Auto_Open" запускается перед открытием других книг. Поэтому при записи действий, которые нужно выполнить в книге по умолчанию "Книга1" или в книге, загруженной из папки XLStart, такие действия макроса "Auto_Open" при запуске приложения Excel выполнены не будут, поскольку запуск этого макроса происходит перед открытием книги по умолчанию и новой книги.
При обнаружении этих ограничений вместо записи макроса «Авто_открыть» необходимо создать процедуру на языке VBA для события Open, как описано в следующем разделе этой статьи.
Чтобы предотвратить автоматическое выполнение макроса "Auto_Open" при запуске Microsoft Excel, во время запуска удерживайте нажатой клавишу SHIFT.
Не хочет он на SLK запускаться автоматом . вот при нажатии кнопки выполнить макрос выполняется , а так не хочет(((
Re: Альбомная ориентация в SLK
Добавлено: 13 фев 2013, 10:47
m0p3e
Если прототип готовый, то в теле отчета (frm) формируем нормальный через xl-функции. Единственная проблема может возникнуть если не описан formNAme.Abort. Но это только повлечет открытие обычной пустой формы.
Re: Альбомная ориентация в SLK
Добавлено: 13 фев 2013, 13:18
korvanakorvana
Так кто нить делал в SLK альбомную ориентацию?
весь день сижу пытаюсь ничегошеньки не получается((
Re: Альбомная ориентация в SLK
Добавлено: 13 фев 2013, 22:44
Masygreen
korvanakorvana писал(а):Так кто нить делал в SLK альбомную ориентацию?
весь день сижу пытаюсь ничегошеньки не получается((
перепишите на excel, это будет проще для всех ...
Re: Альбомная ориентация в SLK
Добавлено: 14 фев 2013, 15:42
korvanakorvana
Masygreen писал(а):korvanakorvana писал(а):Так кто нить делал в SLK альбомную ориентацию?
весь день сижу пытаюсь ничегошеньки не получается((
перепишите на excel, это будет проще для всех ...
НУ все намучилась но получилось) Переписывать отчеты было лень)
в общем сделала надстройку в EXCEL и присоеденила надстройку такого типа
Код: Выделить всё
Option Explicit
Private WithEvents App As Application
Private Sub Workbook_Open()
Set App = Application
End Sub
Private Sub App_WorkbookOpen(ByVal Wb As Workbook)
If Wb.Name = "reestr.slk" Then
Call Макрос1
End If
End Sub
Private Sub App_NewWorkbook(ByVal Wb As Workbook)
Call Макрос1
End Sub
это в поле книга
а это в поле модуль
Код: Выделить всё
Sub макрос 2()
'
' 1
'
'
With ActiveSheet.PageSetup
.PrintTitleRows = ""
.PrintTitleColumns = ""
End With
ActiveSheet.PageSetup.PrintArea = ""
With ActiveSheet.PageSetup
.LeftHeader = ""
.CenterHeader = ""
.RightHeader = ""
.LeftFooter = ""
.CenterFooter = ""
.RightFooter = ""
.LeftMargin = Application.InchesToPoints(0.7)
.RightMargin = Application.InchesToPoints(0.7)
.TopMargin = Application.InchesToPoints(0.75)
.BottomMargin = Application.InchesToPoints(0.75)
.HeaderMargin = Application.InchesToPoints(0.3)
.FooterMargin = Application.InchesToPoints(0.3)
.PrintHeadings = False
.PrintGridlines = False
.PrintComments = xlPrintNoComments
.PrintQuality = 600
.CenterHorizontally = False
.CenterVertically = False
.Orientation = xlLandscape
.Draft = False
.PaperSize = xlPaperA4
.FirstPageNumber = xlAutomatic
.Order = xlDownThenOver
.BlackAndWhite = False
.Zoom = 100
.PrintErrors = xlPrintErrorsDisplayed
.OddAndEvenPagesHeaderFooter = False
.DifferentFirstPageHeaderFooter = False
.ScaleWithDocHeaderFooter = True
.AlignMarginsHeaderFooter = True
.EvenPage.LeftHeader.Text = ""
.EvenPage.CenterHeader.Text = ""
.EvenPage.RightHeader.Text = ""
.EvenPage.LeftFooter.Text = ""
.EvenPage.CenterFooter.Text = ""
.EvenPage.RightFooter.Text = ""
.FirstPage.LeftHeader.Text = ""
.FirstPage.CenterHeader.Text = ""
.FirstPage.RightHeader.Text = ""
.FirstPage.LeftFooter.Text = ""
.FirstPage.CenterFooter.Text = ""
.FirstPage.RightFooter.Text = ""
End With
End Sub