Добавлено: Чт Мар 07, 2013 9:17 am Заголовок сообщения:
cветлана писал(а):
перепроводила старые проводки с помощью этого шаблона, проводилось, а если создаю новый документ , пишет Требуется объект: 'Trans(...).AgTo'
Естественно. В новом документе корреспондент еще не установлен. Нужна проверка. Или, как уже рекомендовали (и что правильнее!), выносить на BeforeSave.
Добавлено: Чт Мар 07, 2013 11:12 am Заголовок сообщения:
kris писал(а):
cветлана писал(а):
перепроводила старые проводки с помощью этого шаблона, проводилось, а если создаю новый документ , пишет Требуется объект: 'Trans(...).AgTo'
Естественно. В новом документе корреспондент еще не установлен. Нужна проверка. Или, как уже рекомендовали (и что правильнее!), выносить на BeforeSave.
+1 Надо было мне сразу писать в BeforeSave.
Светлана, выложите еще раз код вашего шаблона полностью
Добавлено: Чт Мар 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 раз(а)
Добавлено: Чт Мар 07, 2013 11:43 am Заголовок сообщения:
Вставлю свои 5 копеек
Замените этот код
Код:
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 раз
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах