Страница 1 из 1
Функция RereadRecord
Добавлено: 18 окт 2017, 10:22
Espada
Доброго дня. столкнулся с такой ситуацией, что не могу обновить интерфейс счета фактуры. раньше, когда работал с Vip файлами использовал процедуру RereadRecord(#Basedoc), однако при использовании его в frm файле, пишет, что нет такой функции поля или метода. Подскажите пожалуйста как эту процедуру использовать в FRM, или может есть какие альтернативы? спасибо.
Re: Функция RereadRecord
Добавлено: 18 окт 2017, 10:51
Den
Разумеется, данный метод нельзя использовать в FCOM
Re: Функция RereadRecord
Добавлено: 18 окт 2017, 10:52
Espada
Den писал(а):Разумеется, данный метод нельзя использовать в FCOM
а есть альтернатива?)
Re: Функция RereadRecord
Добавлено: 18 окт 2017, 12:17
RAJAH
Довольно странный вопрос... Какова цель?
Re: Функция RereadRecord
Добавлено: 18 окт 2017, 12:20
Espada
RAJAH писал(а):Довольно странный вопрос... Какова цель?
в счет фактуру импортирую данные в спецификацию. данные заполняются нормально, но отображаются изменения только после того как перезайду в сам счет. так вот я и думал, мб есть возможность обновления интерфейса, что бы изменения отображались сразу?
Re: Функция RereadRecord
Добавлено: 18 окт 2017, 12:31
m0p3e
Через докомпиляцию интерфейса можно попробовать.
Код: Выделить всё
HandleEvent
cmPrintDoc :
{
If inherited::HandleEvent(cmPrintDoc)<>heAbort
RescanPanel(..);
}
End;
Re: Функция RereadRecord
Добавлено: 18 окт 2017, 12:55
Espada
m0p3e писал(а):Через докомпиляцию интерфейса можно попробовать.
Код: Выделить всё
HandleEvent
cmPrintDoc :
{
If inherited::HandleEvent(cmPrintDoc)<>heAbort
RescanPanel(..);
}
End;
я ещё не совсем разобрался с декомпиляцией) я так понимаю, это в свойство формы счета записывается, мол при выполнении функции печати обновляется интерфейс.
Re: Функция RereadRecord
Добавлено: 18 окт 2017, 14:53
m0p3e
Код: Выделить всё
alter interface <interfacename>;
HandleEvent
cmPrintDoc :
{
If inherited::HandleEvent(cmPrintDoc)<>heAbort
RescanPanel(..);
}
End;
End.
После успешного вызова события cmPrintDoc будет выполнен RescanPanel. Нужно смотреть конкретный интерфейс на предмет своих заморочек, но общая идея такая.
Re: Функция RereadRecord
Добавлено: 18 окт 2017, 16:18
Espada
m0p3e писал(а):Код: Выделить всё
alter interface <interfacename>;
HandleEvent
cmPrintDoc :
{
If inherited::HandleEvent(cmPrintDoc)<>heAbort
RescanPanel(..);
}
End;
End.
После успешного вызова события cmPrintDoc будет выполнен RescanPanel. Нужно смотреть конкретный интерфейс на предмет своих заморочек, но общая идея такая.
что-то мне кажется, что проще код заполнения спецификации перенести в vip, создать кнопку "Заполнить" и использовать там RereadRecord)
Re: Функция RereadRecord
Добавлено: 18 окт 2017, 16:58
Espada
у меня только вопросик ещё возник, при переносе кода) я использую create view но т.к. я их писал под прототип PRBDOC, я мог использовать системные переменные basedocnrec и PosNrec, для обращения к таблице basedoc и spstep соответственно. подскажите пожалуйста, как тут присвоить эти данные переменным, которые я сам создал)
Re: Функция RereadRecord
Добавлено: 18 окт 2017, 19:40
m0p3e
Espada писал(а):что-то мне кажется, что проще код заполнения спецификации перенести в vip, создать кнопку "Заполнить" и использовать там RereadRecord)
Насчет проще сомнительно, т.к. код в frm-ке уже написан и работает, но то что правильнее - однозначно.
В какой интерфейс/окно встраиваемся (GetIfcCurrentFieldName)?
Re: Функция RereadRecord
Добавлено: 19 окт 2017, 10:02
Espada
m0p3e писал(а):Espada писал(а):что-то мне кажется, что проще код заполнения спецификации перенести в vip, создать кнопку "Заполнить" и использовать там RereadRecord)
Насчет проще сомнительно, т.к. код в frm-ке уже написан и работает, но то что правильнее - однозначно.
В какой интерфейс/окно встраиваемся (GetIfcCurrentFieldName)?
выстраиваемся в интерфейс Счет, ДО на продажу: window wvschet
Re: Функция RereadRecord
Добавлено: 19 окт 2017, 11:40
m0p3e
Код: Выделить всё
#component "L_BaseDoc"
alter interface VSchet_Release;
Create View as select SpStep AddSpStep; //На всякий случай используем свой синоним
window wVSchetZ;
HandleEvent
cmValue50 :
{
If UpdateTable
{
StartNewVisual ( vtRotateVisual,vfTimer,'Title',0 );
ClearBuffer(#AddSpStep);
AddSpStep.cStepDoc := StepDoc.nrec;
..............................................
If Insert Current AddSpStep <> tsOk
Message('Ошибка добавления спецификации!',Error);
StopVisual( '',0 );
RescanPanel($pStep); //или ReReadRecord(#SpStep);
};
};
end;
end;
end.
Добавляем кнопку с вызовом cmValue50 (не используется в фейсе (по крайней мере в версии имеющихся у меня сырцов).
Если нужен цикл по спецификации, то
Код: Выделить всё
cmValue50 :
{
If UpdateTable
{
PushPos(#SpSTep);
StartNewVisual ( vtRotateVisual,vfTimer,'Title',0 );
_loop SpStep
{
ClearBuffer(#AddSpStep);
AddSpStep.cStepDoc := StepDoc.nrec;
..............................................
If Insert Current AddSpStep <> tsOk
Message('Ошибка добавления спецификации!',Error);
StopVisual( '',0 );
PopPos(#SpStep);
};
RescanPanel(#$pStep); //или ReReadRecord(#SpStep);
};
};
Re: Функция RereadRecord
Добавлено: 19 окт 2017, 13:21
Espada
m0p3e писал(а):Код: Выделить всё
#component "L_BaseDoc"
alter interface VSchet_Release;
Create View as select SpStep AddSpStep; //На всякий случай используем свой синоним
window wVSchetZ;
HandleEvent
cmValue50 :
{
If UpdateTable
{
StartNewVisual ( vtRotateVisual,vfTimer,'Title',0 );
ClearBuffer(#AddSpStep);
AddSpStep.cStepDoc := StepDoc.nrec;
..............................................
If Insert Current AddSpStep <> tsOk
Message('Ошибка добавления спецификации!',Error);
StopVisual( '',0 );
RescanPanel($pStep); //или ReReadRecord(#SpStep);
};
};
end;
end;
end.
Добавляем кнопку с вызовом cmValue50 (не используется в фейсе (по крайней мере в версии имеющихся у меня сырцов).
Если нужен цикл по спецификации, то
Код: Выделить всё
cmValue50 :
{
If UpdateTable
{
PushPos(#SpSTep);
StartNewVisual ( vtRotateVisual,vfTimer,'Title',0 );
_loop SpStep
{
ClearBuffer(#AddSpStep);
AddSpStep.cStepDoc := StepDoc.nrec;
..............................................
If Insert Current AddSpStep <> tsOk
Message('Ошибка добавления спецификации!',Error);
StopVisual( '',0 );
PopPos(#SpStep);
};
RescanPanel(#$pStep); //или ReReadRecord(#SpStep);
};
};
спасибо большое, разобрался. всё работает)