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

список макросов Акцент
На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
 
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.0
Предыдущая тема :: Следующая тема  
Автор Сообщение
AllexL



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

СообщениеДобавлено: Вт Мар 05, 2013 3:15 pm    Заголовок сообщения: Ответить с цитатой

Oleksandr писал(а):
AllexL писал(а):

Вообще-то такой код надо выносить на beforeSave. Вы ж не знаете, сколько строк будет пересчитываться? Если, к примеру, 2 тысячи? Да на каждый recalc? Smile

Согласен! Только я не очень понял как с ним работать. Его только в ручную вызывать что ли (FireBeforeSave)?

В режиме проводок - вызывается автоматом, в режиме формы - ручками дергать
Код:
templateInvoker.FireBeforeSave refCancel
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Oleksandr
Гость





СообщениеДобавлено: Вт Мар 05, 2013 4:00 pm    Заголовок сообщения: Ответить с цитатой

Угу, разобрался
Вернуться к началу
cветлана
Гость





СообщениеДобавлено: Вт Мар 05, 2013 4:39 pm    Заголовок сообщения: Ответить с цитатой

спасибо Вам большое
Вернуться к началу
cветлана
Гость





СообщениеДобавлено: Чт Мар 07, 2013 8:50 am    Заголовок сообщения: Ответить с цитатой

перепроводила старые проводки с помощью этого шаблона, проводилось, а если создаю новый документ , пишет Требуется объект: 'Trans(...).AgTo'
Вернуться к началу
kris



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

СообщениеДобавлено: Чт Мар 07, 2013 9:17 am    Заголовок сообщения: Ответить с цитатой

cветлана писал(а):
перепроводила старые проводки с помощью этого шаблона, проводилось, а если создаю новый документ , пишет Требуется объект: 'Trans(...).AgTo'

Естественно. В новом документе корреспондент еще не установлен. Нужна проверка. Или, как уже рекомендовали (и что правильнее!), выносить на BeforeSave.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
cветлана
Гость





СообщениеДобавлено: Чт Мар 07, 2013 9:23 am    Заголовок сообщения: Ответить с цитатой

по русски я понимаю что проверяет на наличие корреспондентов, но где это в коде я не понимаю, какую часть кода нужно вынести за beforе save?
Вернуться к началу
Oleksandr
Гость





СообщениеДобавлено: Чт Мар 07, 2013 11:12 am    Заголовок сообщения: Ответить с цитатой

kris писал(а):
cветлана писал(а):
перепроводила старые проводки с помощью этого шаблона, проводилось, а если создаю новый документ , пишет Требуется объект: 'Trans(...).AgTo'

Естественно. В новом документе корреспондент еще не установлен. Нужна проверка. Или, как уже рекомендовали (и что правильнее!), выносить на BeforeSave.

+1 Надо было мне сразу писать в BeforeSave.

Светлана, выложите еще раз код вашего шаблона полностью
Вернуться к началу
cветлана
Гость





СообщениеДобавлено: Чт Мар 07, 2013 11:14 am    Заголовок сообщения: Ответить с цитатой

код

Последний раз редактировалось: cветлана (Чт Мар 07, 2013 12:07 pm), всего редактировалось 1 раз
Вернуться к началу
Oleksandr
Гость





СообщениеДобавлено: Чт Мар 07, 2013 11:25 am    Заголовок сообщения: Ответить с цитатой

В код шаблона нужно добавить такую процедуру:
Код:
Sub TEMPLATE_BEFORESAVE(OP, ByRef CANCEL)
 '{{ BEGIN_BEFORESAVE
 '}} END_BEFORESAVEE
 Dim i
 With op
   For i = 1 To .TransList(4).Rows
      .Trans(4, i).MiscId(19) = .Trans(4, i).AgTo.Parent.Params("Затраты: Группа 02").Value2
   Next
 End With
End Sub

Этот код убрать из процедуры Sub Template_OnRecalc(op) :
Код:

 Dim i
 With op
   For i = 1 To .TransList(4).Rows
      .Trans(4, i).MiscId(19) = .Trans(4, i).AgTo.Parent.Params("Затраты: Группа 02").Value2
   Next
 End With

И в код формы добавить в конце процедуры сохранения (обычно с названием "Sub SaveOperation"), такие строки:
Код:
Dim Cancel: Cancel = False
Op.TemplateInvoker2.FireBeforeSave Cancel


Последний раз редактировалось: Oleksandr (Чт Мар 07, 2013 11:33 am), всего редактировалось 5 раз(а)
Вернуться к началу
Oleksandr
Гость





СообщениеДобавлено: Чт Мар 07, 2013 11:27 am    Заголовок сообщения: Ответить с цитатой

kris писал(а):
Или, как уже рекомендовали (и что правильнее!), выносить на BeforeSave.

Кстати EnumTrans работает в шаблонах?
А то в классах как-то не очень
Вернуться к началу
cветлана
Гость





СообщениеДобавлено: Чт Мар 07, 2013 11:38 am    Заголовок сообщения: Ответить с цитатой

код

Последний раз редактировалось: cветлана (Чт Мар 07, 2013 12:07 pm), всего редактировалось 1 раз
Вернуться к началу
Oleksandr
Гость





СообщениеДобавлено: Чт Мар 07, 2013 11:41 am    Заголовок сообщения: Ответить с цитатой

вроде все верно. в коде формы не забудьте
Вернуться к началу
olimp
Site Admin


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

СообщениеДобавлено: Чт Мар 07, 2013 11:43 am    Заголовок сообщения: Ответить с цитатой

Вставлю свои 5 копеек Smile
Замените этот код
Код:
    Dim i
    With op
        For i = 1 To .TransList(4).Rows
            .Trans(4, i).MiscId(19) = .Trans(4, i).AgTo.Parent.Params("Затраты: Группа 02").Value2
        Next
    End With


На этот
Код:
Dim prm

   set prm = createlibobject("map")
   Op.TransList(4).EnumTrans GetRef("SetMscRow"), prm


function SetMscRow(Tr, byref prm)
   SetMscRow = true

        if Tr.AgToID = 0 then exit sub
   if not prm.exists(Tr.AgToID) then
           if Tr.AgTo.Parent is nothing then exit sub
      prm(Tr.AgToID) = Tr.AgTo.Parent.Params("Затраты: Группа 02").Value2
   end if

   Tr.MiscId(19) = prm(Tr.AgToID)
End function


1. контроль за наличием корреспондента и наличие у него родителя
2. на большом количестве строк прирост скорости будет ощутимым.


Последний раз редактировалось: olimp (Чт Мар 07, 2013 12:02 pm), всего редактировалось 1 раз
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
Oleksandr
Гость





СообщениеДобавлено: Чт Мар 07, 2013 11:47 am    Заголовок сообщения: Ответить с цитатой

То есть EnumTrans в шаблонах работает?
п.с. А это ошибку не выдаст?
exit sub
Вернуться к началу
cветлана
Гость





СообщениеДобавлено: Чт Мар 07, 2013 11:55 am    Заголовок сообщения: Ответить с цитатой

я не знаю как в коде формы прописать, форма с расширением afm как ее открыть
Вернуться к началу
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Акцент -> Акцент 7.0 Часовой пояс: GMT + 2
На страницу Пред.  1, 2, 3, 4, 5, 6, 7, 8  След.
Страница 5 из 8

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


Powered by phpBB © 2001, 2005 phpBB Group