Страница 1 из 1

Добавление поля в шаблон XLT

Добавлено: 26 сен 2011, 16:37
kdm
Здравствуйте!
Подскажите, пожалуйста, существует ли возможность править поток данных и добавлять новые выборки в шаблоны XLT (как это можно делать в присоединенных формах)?
Например,нужно вывести grnal.kod(код налоговой группы МЦ) в шаблоне InvVed3.xlt (Складской учет-Операции-Инвентаризация-Инв.опись-Тип отчета-Excel).В потоке данных этого поля нет.В техподдержке ответили,что добавлять новые выборки могут только разработчики.

Re: Добавление поля в шаблон XLT

Добавлено: 26 сен 2011, 17:23
Den
В принципе можно, только если Вам есть за что уцепиться в полях присылаемой Галактикой в этот шаблон, используя VBA+коннекшн какой то (ADO) например - т.е. фактически Вы обратитесь напрямую к БД галактики из макроса. Кстати. я как раз это делал для InvVed3.xlt, когда нужно была довывести к позиции спецификации к партии кой какую инфу.
А если Галой - то единственный вариант перекрывать событие/процедуру вывода потока в XLT -шаблон

Re: Добавление поля в шаблон XLT

Добавлено: 27 сен 2011, 08:47
kdm
Спасибо за ответ.К сожалению, не имею опыта работы с прямым обращением к БД Галактики из максроса.Подскажите,пожалуйста,какими командами можно осуществить прямой коннект к БД,если можно - напишите фрагменты кода.

Re: Добавление поля в шаблон XLT

Добавлено: 27 сен 2011, 12:18
Den
У меня SQLServer .Для него выглядело вкратце так :

Dim MyConn As ADODB.Connection
Dim MyRecordset As ADODB.Recordset
Dim MyCommand As ADODB.Command
Dim ConnectionString As String
Dim sqlstr As String
Dim i As Integer
Dim party As String
Dim temmpst As String

Sheets("Gal_TblSheet").Select
Rown = ActiveSheet.UsedRange.Rows.Count -- прикинем кол-во строчек где данные...
.....
' Открываем АДО-Коннекш
Set MyConn = New ADODB.Connection
ConnectionString = "Provider=sqloledb;Data Source=sqlserver;Initial Catalog=baza1;User Id=user;Password=password;"
MyConn.CursorLocation = 3
MyConn.Open ConnectionString
If MyConn.State <> adStateOpen Then
MsgBox ("Не удалось установить связь с SQL-сервером по параметрам соединения")
End If

For li1 = 8 To Rown
temmpst = ActiveSheet.Cells(li1, 3)
party = Mid(LCase(temmpst), InStr(LCase(temmpst), "партия") + 8, Len(temmpst) - (InStr(LCase(temmpst), "партия") + 8))
sqlstr = "select partyprice.f$price from dbo.t$dparty dparty inner join dbo.t$partyprice partyprice on dparty.f$atl_nrec=partyprice.f$cparty and dparty.f$name='" & party & "' and partyprice.f$cpodr=0"
Set MyRecordset = MyConn.Execute(sqlstr)

If MyRecordset.EOF Then
'MsgBox "Файл не содержит записей !"
Else
' MyRecordset.MoveFirst
' MsgBox "Rec in cursor=" + Str(MyRecordset.RecordCount)
End If

Do While Not MyRecordset.EOF
'i = i + 1
'Debug.Print MyRecordset.Fields("f$price")
'MsgBox (MyRecordset.Fields("f$price"))
'Cells(i, 3).Value = MyRecordset.Fields("f$name")
ActiveSheet.Cells(li1, 7) = MyRecordset.Fields("f$price")
ActiveSheet.Cells(li1, 15) = ActiveSheet.Cells(li1, 7) * ActiveSheet.Cells(li1, 14)
ActiveSheet.Cells(li1, 17) = ActiveSheet.Cells(li1, 7) * ActiveSheet.Cells(li1, 14)
MyRecordset.MoveNext
Loop

MyRecordset.Close
....

Если у Вас другая платформа, то провайдера другого может потребуется использовать....

Re: Добавление поля в шаблон XLT

Добавлено: 28 сен 2011, 10:03
kdm
Спасибо за код! :smile:
У нас правда Галактика на Oracle,буду тестировать.

Re: Добавление поля в шаблон XLT

Добавлено: 05 апр 2013, 16:25
zna
День добрый, коллеги!
Прошу пролить свет в тёмный для меня угол:
В ФРО имеется полезный отчётец "Отчёты - Отчёты пользователя - Справка по инвентаризации расчётов с дебиторами/кредиторами", приглянувшийся главбуху, в котором, однако есть малый изьян: в листах Excel "Справка по дебиторам" и "Справка по кредиторам" не заполняются поля "Дата начала задолженности".
В шаблоне UserRep_SpravkaDebet.xlt на листе Gal_VarSheet обнаружена переменная "ДатаНачало" типа Date. Собственно, вопрос: можно ли её использовать для упомянутого поля, и если да, то как?
Через ADO- коннекшн зацепиться, понятно, можно, но сложно сие, хотелось бы меньшим потом обойтись..

Re: Добавление поля в шаблон XLT

Добавлено: 05 апр 2013, 17:10
Den
zna писал(а):В шаблоне UserRep_SpravkaDebet.xlt на листе Gal_VarSheet обнаружена переменная "ДатаНачало"
Это, наверное, все же дата начала периода за который отчет строим имеется ввиду...
Я когда давно помню меня попросили сделать...дак вроде дата начало задолженности там у каждой конторы своя могла возникать ,по смыслу возникновения оной...

Re: Добавление поля в шаблон XLT

Добавлено: 05 апр 2013, 17:16
RAJAH
zna
Этим отчётом лучше не пользоваться. http://www.tyumbit.ru/gal_forum/viewtop ... =4&t=12280

Re: Добавление поля в шаблон XLT

Добавлено: 05 апр 2013, 17:43
Gella
Наши бухи делают этот отчет за год для аудиторов. Дату начала задолженности не заполняют.Аудиторов этот отчет устраивает.

Re: Добавление поля в шаблон XLT

Добавлено: 08 апр 2013, 09:07
zna
RAJAH писал(а):zna
Этим отчётом лучше не пользоваться. http://www.tyumbit.ru/gal_forum/viewtop ... =4&t=12280
Спасибо, познавательная темка..

Re: Добавление поля в шаблон XLT

Добавлено: 08 апр 2013, 11:09
edward_K
Альтернативой могла бы быть докомпиляция интерфейса в месте вывода - там все же проще поля добавлять, но разработчик к сожалению не делает возможности безболезненного вклинывания в код и приходится перехватывать целиком процедуру - что не имея доступа к исходникам сделать невозможно. На доработку отчетов на основе xlt разработчик идет очень тяжело. Поэтому при необходимости добавить где то поле пишите в свою ТП типа "просим добавить возможность вывода своих полей и указывать свой шаблон по умолчанию там то и просим описать такую возможность в примере докомпиляции" - а вдруг сделают? С фастрепортом все таки попроще с докомпиляцией.