Список форумов BOSSForum.RU - Форум. БОСС-Кадровик
Независимый форум, посвященный системе БОСС-Кадровик
и всему, что с ней связано
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

Перемещение между полями в диалоге редактирования.

 
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> X-язык
Предыдущая тема :: Следующая тема  
Автор Сообщение
Mikhail



Зарегистрирован: 16.08.2012
Сообщения: 177
Откуда: Москва

СообщениеДобавлено: Пт Июн 21, 2013 10:13    Заголовок сообщения: Перемещение между полями в диалоге редактирования. Ответить с цитатой

Всем привет.
Сделал несколько пользовательских объектов типа "список", создал для них диалоги редактирования. Операции добавления/обновления/удаления работают корректно, да и в целом все ок, кроме одного момента: при открытии диалога для редактирования перемещение между полями диалога возможно только по кнопке "TAB". Установить курсор в новое произвольное поле с помощью мыши не удается - курсор остается в прежнем поле.
Если ввести заведомо неверные данные которые не удовлетворяют условиям проверки (секция Update/Insert), то мы возвращаемся обратно к диалогу и тогда можем свободно перемещаться между полями используя мышь.
Кто-нибудь сталкивался с такой ситуацией? Подскажите, пожалуйста, какой параметр диалога я упускаю или дело в чем-то еще?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RVV
Большой шоколадный орден
Большой шоколадный орден


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

СообщениеДобавлено: Пт Июн 21, 2013 11:58    Заголовок сообщения: Ответить с цитатой

Версия RPexec какая?
Диалог динамический или нет?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mikhail



Зарегистрирован: 16.08.2012
Сообщения: 177
Откуда: Москва

СообщениеДобавлено: Пт Июн 21, 2013 12:15    Заголовок сообщения: Ответить с цитатой

RPexec 10.29.00.000
Диалог - объект замещения типа "Диалог", указан в качестве диалога редактирования для объекта типа "Список".
Сам диалог весьма простой, более того, их несколько и в большинстве своем они однотипны и для них всех свойственно такое поведение, что свидетельствует о наличии систематической ошибки с моей стороны, но в чем эта ошибка не могу понять )
Пример кода раздела "Динамический ресурс" одного из таких диалогов:
Код:
alias _dlgresource = (
/*Version of Dynamic Resource*/
ver=4011;
/*Dialog(rect,options), menu, sline, {help}*/
(0, 0, 750, 279, 0xca0),,,{};
/*Update/OK Trigger*/
 1,{BEFORE
{
--пробиваем дату изменения в поле user_hart.mdate
let @new:mdate = CONVERT (date, GETDATE());

--проверка на наличие пересекающихся записей
local _check = 0;
select top 1 user_hart.id
into :_check
from user_hart
where user_hart.pid = @user_hart_dlg:pid
   and @user_hart_dlg:fromd <= user_hart.tod
   and @user_hart_dlg:tod >= user_hart.fromd;

if _check <> 0 then error Пересечение с действуещей записью;

--проверка на корректность вводимых сумм, дат и выбор сотрудника
if @user_hart_dlg:pid = 0 then error Выберите сотрудника;
if @user_hart_dlg:mobile_sum < 0 then error Премия за мобильность не может быть отрицательной;
if @user_hart_dlg:rent_fact < 0 then error Доплата за аренду жилья не может быть отрицательной;
if @user_hart_dlg:rent_max < 0 then error Доплата за аренду жилья не может быть отрицательной;
if @user_hart_dlg:trans_num < 0 then error Количество поездок не может быть отрицательным;
if @user_hart_dlg:rent_fact > @user_hart_dlg:rent_max then error Доплата за аренду жилья превышает максимально допустимое значение;
if @user_hart_dlg:fromd > @user_hart_dlg:tod then error Период действия хартии введен неверно;
};};
/*Insert Trigger*/
 3,{BEFORE
{
--пробиваем дату изменения в поле user_hart.mdate
let @new:mdate = CONVERT(date, GETDATE());

--проверка на наличие пересекающихся записей
local _check = 0;
select user_hart.id
into :_check
from user_hart
where user_hart.pid = @user_hart_dlg:pid
   and @user_hart_dlg:fromd <= user_hart.tod
   and @user_hart_dlg:tod >= user_hart.fromd;

if _check <> 0 then error Пересечение с действуещей записью;

--проверка на корректность вводимых сумм, дат и выбор сотрудника
if @user_hart_dlg:pid = 0 then error Выберите сотрудника;
if @user_hart_dlg:mobile_sum < 0 then error Премия за мобильность не может быть отрицательной;
if @user_hart_dlg:rent_fact < 0 then error Доплата за аренду жилья не может быть отрицательной;
if @user_hart_dlg:rent_max < 0 then error Доплата за аренду жилья не может быть отрицательной;
if @user_hart_dlg:trans_num < 0 then error Количество поездок не может быть отрицательным;
if @user_hart_dlg:rent_fact > @user_hart_dlg:rent_max then error Доплата за аренду жилья превышает максимально допустимое значение;
if @user_hart_dlg:fromd > @user_hart_dlg:tod then error Период действия хартии введен неверно;
};};
/*Let/Init SQL*/
 5,{pid = 0;
mobile_sum = 0;
rent_fact = 0;
rent_max = 0;
trans_num = 0;
dms = 0;
fromd = '1900-01-01';
tod = '1900-01-01';
uname = @@NetName;
mdate = CONVERT(date, GETDATE());};
/*Lookup(pFilter,options),field,{sql},link,draw,data,'hint'*/
E,(20, 20, 35, 20, 0x0),"ФИО:",(210, 15, 230, 20, 0x204),2,{user_hart_vw;},0,3,1,"";
/*InputLine(rect,options),field,{sql},'hint'*/
E,(20, 50, 185, 20, 0x0),"Премия за мобильность:",(210, 50, 65, 20, 0x0),3,{},"";
/*InputLine(rect,options),field,{sql},'hint'*/
E,(20, 80, 185, 20, 0x0),"Компенсация аренды жилья (факт):",(210, 80, 65, 20, 0x0),4,{},"";
/*InputLine(rect,options),field,{sql},'hint'*/
E,(290, 80, 40, 20, 0x0),"(макс):",(335, 80, 75, 20, 0x0),5,{},"";
/*Buttons(rect,options), name*/
N,(425, 75, 30, 30, 0x0),user_vo73_mnu;
/*InputLine(rect,options),field,{sql},'hint'*/
E,(20, 110, 185, 20, 0x0),"Количество поездок домой:",(210, 110, 65, 20, 0x0),6,{},"";
/*Buttons(rect,options), name*/
N,(290, 105, 30, 30, 0x0),user_trans_hist_mnu;
/*RadioButtons(rect,options),field,{text},'hint'*/
R,(20, 140, 185, 20, 0x0),"ДМС для родственников:",(210, 135, 65, 30, 0x8000),7,{Нет
Есть},"";
/*InputLine(rect,options),field,{sql},'hint'*/
E,(20, 170, 185, 20, 0x0),"Период действия хартии    (с даты):",(210, 170, 75, 20, 0x100),8,{},"";
/*InputLine(rect,options),field,{sql},'hint'*/
E,(310, 170, 50, 15, 0x0),"(по дату):",(365, 170, 75, 20, 0x100),9,{},"";
);
dialog{
/*init procedure*/

/*tab procedure*/
TAB {};
/* sql */
@user_hart_dlg
select
   id,
   pid,
   mobile_sum,
   rent_fact,
   rent_max,
   trans_num,
   dms,
   fromd,
   tod,
   uname,
   mdate
from user_hart;
},0x10,"";
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RVV
Большой шоколадный орден
Большой шоколадный орден


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

СообщениеДобавлено: Пт Июн 21, 2013 12:50    Заголовок сообщения: Ответить с цитатой

Ошибка в RPexec
Со слов разработчиков, исправлено в версии не ниже 11.2.9.2
Так что, ждем новый RPexec
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mikhail



Зарегистрирован: 16.08.2012
Сообщения: 177
Откуда: Москва

СообщениеДобавлено: Пт Июн 21, 2013 17:45    Заголовок сообщения: Ответить с цитатой

RVV, большое спасибо за ответ.
Интересно, что подобная ситуация не возникает с ранее созданными диалогами.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов BOSSForum.RU - Форум. БОСС-Кадровик -> X-язык Часовой пояс: GMT + 4
Страница 1 из 1

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


Pоwerеd by рhpВB © 2001, 2005 рhpВB Grouр
Русская поддержка phрВB
Rambler's Top100 Рейтинг@Mail.ru Список форумов BOSSForum.RU