Список форумов Акцент Акцент
официальный форум разработчика программы Акцент
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Динамически привязать проводки из шаблона к ScrollGrid

 
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 6.0
Предыдущая тема :: Следующая тема  
Автор Сообщение
Sasha
Гость





СообщениеДобавлено: Вт Ноя 30, 2010 11:39 am    Заголовок сообщения: Динамически привязать проводки из шаблона к ScrollGrid Ответить с цитатой

Помогите с проблемой.
Нужно, при открытии документа по шаблону, вычитать проводки из самого шаблона и задать соответствующее количество строк в ScrollGrid + привязать проводку своей строке.
Что-то у меня нет мыслей как правильно подойти к этому делу.
P.S. Вся суть в том, чтобы человек мог сделать новый шаблон (изменить количество проводок и задать некоторые значения), подключить форму и все что он наваял отобразилось автоматом на екране.
Вернуться к началу
Александр Омеленчук



Зарегистрирован: 05.02.2009
Сообщения: 39
Откуда: Донецк

СообщениеДобавлено: Вт Ноя 30, 2010 4:59 pm    Заголовок сообщения: ШОШО? Ответить с цитатой

ШОШО?

Вообще цель мероприятия можно уточнить..?

И нужен ли вообще шаблон... может документ без шаблона делать?

напр. Бух.справка
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Sasha
Гость





СообщениеДобавлено: Вт Ноя 30, 2010 5:23 pm    Заголовок сообщения: Ответить с цитатой

именно бух справка
человек хочет иметь форму которая бы подошла под любой шаблон (почти под любой).
схема приблизительно такая:
создали шаблон с проводками (5шт) и забили некоторые даннные (счет, кореспондент, объект...). подключили к шаблону форму. нажали создать документ и вуаля в таблице почти все заполнено осталось проставить суммы.
внезапно захотелось создать другой шаблон (например не 5 а 10 проводок с другими значениями). создали, подключили эту же форму и вперед с песней.
где-то так. Smile
Вернуться к началу
AllexL



Зарегистрирован: 10.03.2005
Сообщения: 434
Откуда: Donetsk

СообщениеДобавлено: Вт Ноя 30, 2010 6:37 pm    Заголовок сообщения: Re: Динамически привязать проводки из шаблона к ScrollGrid Ответить с цитатой

Sasha писал(а):
Помогите с проблемой.
Нужно, при открытии документа по шаблону, вычитать проводки из самого шаблона и задать соответствующее количество строк в ScrollGrid + привязать проводку своей строке.
Что-то у меня нет мыслей как правильно подойти к этому делу.
P.S. Вся суть в том, чтобы человек мог сделать новый шаблон (изменить количество проводок и задать некоторые значения), подключить форму и все что он наваял отобразилось автоматом на екране.

По теме:
Код:

set tempOp = Workarea.CreateOperation
tempOp.TemplateId = <tml_id>
tempOp.TemplateInvoker.FireAll
Op.transCount = tempOp.transCount
Dim numRows, i
numRows = 0
For i = 1 to op.transCount
    Op.transList(i).Rows = tempOp.Translist(i).Rows
   numRows = numRows + tempOp.Translist(i).Rows
Next
sgrdMegaGrid.Rows = numRows


А теперь внимание - вопрос: для чего сей огород?
Без четкой постановки задачи вы получите 73.5 разных ответа.

Из предыдущего поста видно, что заполнение через журнал операций не такая уж безумная идея Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
kris



Зарегистрирован: 12.01.2006
Сообщения: 371

СообщениеДобавлено: Ср Дек 01, 2010 9:33 am    Заголовок сообщения: Ответить с цитатой

Насколько я понимаю, у человека в каждом наборе проводок по одной проводке (это довольно типично для бух справки). Если это так, то можно бинды в скроллгриде сделать "наоборот" и привязаться не к "Op.Trans(1,ScrollGrid.BindRow)", а к "Op.Trans(ScrollGrid.BindRow,1)".
Так поможет?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Sasha
Гость





СообщениеДобавлено: Ср Дек 01, 2010 9:34 am    Заголовок сообщения: Ответить с цитатой

с этой частью понятно. вычитали и задали количество проводок.
а как их привязать (и отобразить) в гриде? то есть задать datasource ?
Вернуться к началу
Sasha
Гость





СообщениеДобавлено: Ср Дек 01, 2010 9:40 am    Заголовок сообщения: Ответить с цитатой

kris писал(а):
Насколько я понимаю, у человека в каждом наборе проводок по одной проводке (это довольно типично для бух справки). Если это так, то можно бинды в скроллгриде сделать "наоборот" и привязаться не к "Op.Trans(1,ScrollGrid.BindRow)", а к "Op.Trans(ScrollGrid.BindRow,1)".
Так поможет?


когда мне поставили єту задачу, я думал: не вопрос, вычитаю количество проводок и динамически задам параметры грида. ан нет.
при такой схеме "Op.Trans(1,ScrollGrid.BindRow)" создается translist с строками а в шаблоне заданы проводки в виде translist-ов и оно пишет все в первую проводку (первый translist). во всяком случае я так понял.
Вернуться к началу
kris



Зарегистрирован: 12.01.2006
Сообщения: 371

СообщениеДобавлено: Ср Дек 01, 2010 9:40 am    Заголовок сообщения: Ответить с цитатой

Sasha писал(а):
с этой частью понятно. вычитали и задали количество проводок.
а как их привязать (и отобразить) в гриде? то есть задать datasource ?

Если у вас несколько проводок в каждом наборе, то или через промежуточную операцию или никак. Или руками на OnCellClick, OnCellChanged. Конечно, возможно, но как-то очень через одно место.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
kris



Зарегистрирован: 12.01.2006
Сообщения: 371

СообщениеДобавлено: Ср Дек 01, 2010 9:42 am    Заголовок сообщения: Ответить с цитатой

Sasha писал(а):
когда мне поставили єту задачу, я думал: не вопрос, вычитаю количество проводок и динамически задам параметры грида. ан нет.
при такой схеме "Op.Trans(1,ScrollGrid.BindRow)" создается translist с строками а в шаблоне заданы проводки в виде translist-ов и оно пишет все в первую проводку (первый translist). во всяком случае я так понял.

Читать внимательно мой пост Twisted Evil если не подходит, то очень внимательно читать пост AllexL. Все ответы вам даны.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Sasha
Гость





СообщениеДобавлено: Ср Дек 01, 2010 10:34 am    Заголовок сообщения: Ответить с цитатой

Всем огромное спасибо.
Я немножко не в том русле размышлял. Теперь все ясно. Все получилось.
Вернуться к началу
AllexL



Зарегистрирован: 10.03.2005
Сообщения: 434
Откуда: Donetsk

СообщениеДобавлено: Ср Дек 01, 2010 11:02 am    Заголовок сообщения: Ответить с цитатой

kris писал(а):
Читать внимательно мой пост Twisted Evil если не подходит, то очень внимательно читать пост AllexL. Все ответы вам даны.

Добавлю еще немножко кода:
Данная функция возвращает по номеру строки таблицы sgrdMegaGrid соответствующую проводку операции
Код:

Function getTransactionByRowNo(ByVal rowNo)
Dim i, trNo, row
row = sgrdMegaGrid.Rows
trNo = 0
While row>0
  trNo = trNo+1
  row = row - Op.translist(trNo).Rows
Wend
set getTransactionByRowNo = Op.Trans(trNo, Op.translist(trNo)-row)
End Function

Требование - sgrdMegaGrid.rows должен содержать общее количество проводок операции, тогда в DataSource можно писать выражение
Код:

getTransactionByRowNo(sgrdMegaGrid.BindRow).AgentFromBind
getTransactionByRowNo(sgrdMegaGrid.BindRow).EntBind
getTransactionByRowNo(sgrdMegaGrid.BindRow).RowNo
getTransactionByRowNo(sgrdMegaGrid.BindRow).TransNo
etc....
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
kris



Зарегистрирован: 12.01.2006
Сообщения: 371

СообщениеДобавлено: Ср Дек 01, 2010 1:15 pm    Заголовок сообщения: Ответить с цитатой

AllexL писал(а):
kris писал(а):
Читать внимательно мой пост Twisted Evil если не подходит, то очень внимательно читать пост AllexL. Все ответы вам даны.

Добавлю еще немножко кода:
Данная функция возвращает по номеру строки таблицы sgrdMegaGrid соответствующую проводку операции
Код:

Function getTransactionByRowNo(ByVal rowNo)
Dim i, trNo, row
row = sgrdMegaGrid.Rows
trNo = 0
While row>0
  trNo = trNo+1
  row = row - Op.translist(trNo).Rows
Wend
set getTransactionByRowNo = Op.Trans(trNo, Op.translist(trNo)-row)
End Function

Требование - sgrdMegaGrid.rows должен содержать общее количество проводок операции, тогда в DataSource можно писать выражение
Код:

getTransactionByRowNo(sgrdMegaGrid.BindRow).AgentFromBind
getTransactionByRowNo(sgrdMegaGrid.BindRow).EntBind
getTransactionByRowNo(sgrdMegaGrid.BindRow).RowNo
getTransactionByRowNo(sgrdMegaGrid.BindRow).TransNo
etc....

Не пойдет. Грид-то (наверняка) не рид онли чтобы простыми функциями обойтись. Если уж идти по этому пути, то писать класс, в нем Property Get и Let... Но это уже совсем другая история и совсем уж паранойя. А делать ссылки через функции... Ей-богу проще во временную операцию все писать, а ее обрабатывать на онлоад и кэнсейв.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 6.0 Часовой пояс: GMT + 2
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group