Вопрос решился следующим образом: я добавил проверку и взятие данных из свойств перед объявлением формы "_TESTFRM", странная логика если честно, не понимаю почему именно так, но работает ... Вот такой код в итоге получился, может кому пригодится ...
public class PwregCursor : DataEditorBusinessLogic.CursorLogic
{
public override SqlCmdText GetSqlFilter()
{
var date_begin = Date.FirstDateOfMonth(Settings.DateNow);
if (Cursor.Properties.Contains("DATE_D_"))
{
date_begin = Cursor.Properties.Get<DateTime>("DATE_D_");
}
var date_end = Date.LastDateOfMonth(Settings.DateNow);
if (Cursor.Properties.Contains("END_"))
{
date_end = Cursor.Properties.Get<DateTime>("END_");
}
var n_kdk = "";
if (Cursor.Properties.Contains("N_KDK_"))
{
n_kdk = Cursor.Properties.Get<string>("N_KDK_");
}
var rcentr = "";
if (Cursor.Properties.Contains("RCENTR_"))
{
rcentr = Cursor.Properties.Get<string>("RCENTR_");
}
var ceh = "";
if (Cursor.Properties.Contains("CEH_"))
{
ceh = Cursor.Properties.Get<string>("CEH_");
}
var Cond = ITnet2.Server.Dialogs.InputForm.Activate("_TESTFRM",
new Dictionary<string, object> { { "DATE_D_", date_begin } , { "END_", date_end } , { "N_KDK_", n_kdk } , { "RCENTR_", rcentr} , { "CEH_", ceh} });
if (Cond.Success)
{
string Conditions = "";
// условие по дате C
date_begin = Cond.InputFormValues.GetValue<DateTime>("DATE_D_");
Cursor.Properties.Set("DATE_D_", date_begin); // запись значений данных в свойство
if (date_begin != null)
{
Conditions += " cast(PWREG.DATE_D as date) >= cast(@date_begin as date) ";
}
// условие по дате ПО
date_end = Cond.InputFormValues.GetValue<DateTime>("END_");
Cursor.Properties.Set("END_", date_end); // запись значений данных в свойство
if (date_end != null)
{
Conditions += "and cast(PWREG.DATE_D as date) <= cast(@date_end as date)";
}
n_kdk = Cond.InputFormValues.GetValue<string>("N_KDK_");
Cursor.Properties.Set("N_KDK_", n_kdk); // запись значений данных в свойство
rcentr = Cond.InputFormValues.GetValue<string>("RCENTR_");
Cursor.Properties.Set("RCENTR_", rcentr); // запись значений данных в свойство
ceh = Cond.InputFormValues.GetValue<string>("CEH_");
Cursor.Properties.Set("CEH_", ceh); // запись значений данных в свойство
// условие по сотруднику
if (n_kdk != null && n_kdk.Length > 0)
{
Conditions += " and PWREG.N_KDK = @n_kdk ";
}
// условие по рабочему центру
if (rcentr != null && rcentr.Length > 0)
{
Conditions += " and PWREG.RCENTR = @rcentr ";
}
// условие по цеху
if (ceh != null && ceh.Length > 0)
{
Conditions += " and PRCR.CEH = @ceh ";
}
return new SqlCmdText(string.Format(Conditions),
new SqlParam("n_kdk", n_kdk.ToString()),
new SqlParam("rcentr", rcentr.ToString()),
new SqlParam("ceh", ceh.ToString()),
new SqlParam("date_begin", date_begin),
new SqlParam("date_end", date_end));
}
return 0;
}
}
сергей кузьмин, не совсем понял что вы имеете в виду)
этот большой код выполняет функцию фильтрации при входе в курсор (бд), т.е. при входе я ввожу в форму параметры отбора и далее выходит бд с нужными данными, код свою функцию выполняет, но вот при открытии формы не выводятся даты, которые запоминаются в свойствах курсора ... в принципе это единственный код по работе, больше нет, сама форма собрана конструктором
Написано
Войдите на сайт
Чтобы задать вопрос и получить на него квалифицированный ответ.