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

Как обработать изменение значения поля, подскажите.

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



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

СообщениеДобавлено: Ср Апр 13, 2011 13:58    Заголовок сообщения: Как обработать изменение значения поля, подскажите. Ответить с цитатой

Нужно отловить изменение значения поля с календарем диалога, в процедуре tab по idField не получается, подскажите, пожалуйста.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RVV
Большой шоколадный орден
Большой шоколадный орден


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

СообщениеДобавлено: Ср Апр 13, 2011 16:27    Заголовок сообщения: Ответить с цитатой

Это высший пилотаж Surprised

Для примера можно посмотреть диалог:
hr_dlg_rep_d1
hr_dlg_structs_list

обратите внимание на выставленные "галки" у поля ...
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Аленка



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

СообщениеДобавлено: Ср Апр 13, 2011 17:37    Заголовок сообщения: Ответить с цитатой

RVV
А у меня их нет, может скините сюда какой-нибудь код?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Mike
Большой шоколадный орден
Большой шоколадный орден


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

СообщениеДобавлено: Ср Апр 13, 2011 18:11    Заголовок сообщения: Ответить с цитатой

Процедура TAB hr_dlg_structs_list

if DLGFIELD[''] == '-1' then {
LOCAL _dlgname_ := DLGNAME;

if @@id_firm <> 0 then DISFIELD DLGNAME, id_firm;
}; -- -1

if DLGFIELD[''] == 'id_firm' then {
Let @@id_firm := DLGNAME:id_firm;
}; -- id_firm

if DLGFIELD[''] == 'd_from' then {
if ISDATE(CONVERT(varchar,DLGNAME:d_from[''])) = 0
then { Let DLGNAME:d_from := @@d_from;
drawfield DLGNAME, d_from; }
else { Let @@d_from := DLGNAME:d_from['']; };
}; -- d_from

Msg 2141, @pr_lst_structs_tree;
Let _where_structs := '';
Msg 2041, @pr_lst_structs;

alias _seek = 0x2000;


Процедура TAB hr_dlg_rep_d1

if DLGFIELD[''] == '-1' then {
LOCAL _dlgname_ := DLGNAME;

if @@id_firm <> 0 then {
DISFIELD DLGNAME, id_firm;
ALIAS _where_setup := AND ACVW_SETUP.id_firm = @@id_firm;
};
}; -- -1

if DLGFIELD[''] == 'id_firm' then {
Let @@id_firm := DLGNAME:id_firm;

if @@id_firm <> 0
then { ALIAS _where_setup := AND ACVW_SETUP.id_firm = @@id_firm; }
else { LET _where_setup := ''; };
}; -- id_firm

if DLGFIELD[''] == 'd_from' then {
if ISDATE(CONVERT(varchar,DLGNAME:d_from[''])) = 0
then { Let DLGNAME:d_from := @@d_from;
drawfield DLGNAME, d_from; }
else { Let @@d_from := DLGNAME:d_from['']; };
}; -- d_from


execute hr_prc_review_list;

alias _seek = 0x2000;
--------------------------------------------------------------------------------
d_from - как раз дата
галочка в поле d_from - стоит "не проверять"
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RVV
Большой шоколадный орден
Большой шоколадный орден


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

СообщениеДобавлено: Чт Апр 14, 2011 11:06    Заголовок сообщения: Ответить с цитатой

Поле на диалоге должно быть не EDIT, а LOOKUP
- поставить галку "не проверять" - это отрисует календарь
- поставить @ в "SQL выражение"

То, что написал Mike к делу не относится.
В секции TAB указывается обработка события ...

if DLGFIELD[''] == 'ТАБЛИЦА_ЗАПРОСА.поле' then {

};
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Аленка



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

СообщениеДобавлено: Чт Апр 14, 2011 17:01    Заголовок сообщения: Ответить с цитатой

RVV
Спасибо, попробую. По выполнению отпишусь.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Аленка



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

СообщениеДобавлено: Пт Апр 15, 2011 10:59    Заголовок сообщения: Ответить с цитатой

RVV писал(а):
Поле на диалоге должно быть не EDIT, а LOOKUP
- поставить галку "не проверять" - это отрисует календарь


1. Галка не помогла, календарь на LookUp-e не отрисовался.
2. С чего-то вдруг начала выскакивать ошибка - ругань на кнопку переключателя.


RVV писал(а):
В секции TAB указывается обработка события ...

if DLGFIELD[''] == 'ТАБЛИЦА_ЗАПРОСА.поле' then {

};


Не получилось, пробовала вывести месседж, но в событие не попадала.

Что я делаю не так?
Вот секция SQL

Код:
@period_flt
SELECT * From
(SELECT isnull((select wdate from #period),_wdate)
as pDay,
(SELECT id_prices    
 FROM client.dbo.V_PERIOD_onType
 WHERE v_prd=1 and _wDate between begdate AND enddate
 ) as pMonth,
(SELECT id_prices    
 FROM client.dbo.V_PERIOD_onType
 WHERE v_prd=2 and _wDate between begdate AND enddate
 ) 
as pQuart
,
(SELECT id_prices    
 FROM client.dbo.V_PERIOD_onType
 WHERE v_prd=3 and _wDate between begdate AND enddate
 ) 
as pYear
,
(SELECT isnull((select bDate from #period),_bDate))
as bDate
,
(SELECT isnull((select eDate from #period),_eDate))
as eDate
,_TypePeriod as TypePeriod) t


Код:


Вот так в табе

Код:
if DLGFIELD[''] == 'Т.pDay' then
{@@{msg '11111'};
};
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RVV
Большой шоколадный орден
Большой шоколадный орден


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

СообщениеДобавлено: Пт Апр 15, 2011 11:15    Заголовок сообщения: Ответить с цитатой

Вы просто не умеете их готовить Very Happy

Пишите проще.
Такой SQL в запросе диалога - БРЕД.
Дизайнер просто подавился ....

Диалог предполагает в секции FROM имя таблицы ... одной
А поле должно быть datetime ... тогда Дизайнер все поймет .. он умный Smile

В вашем случае можно написать примитивный запрос от фиктивной таблицы (или вообще без таблицы)

@hr_dlg_rep_d
Select
0 as struct_code
, cast('1900-01-01' as datetime) as d_from
, 0 as id_firm



, а то что вы нагородили вынести в
начальное присвоение значений.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Аленка



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

СообщениеДобавлено: Пт Апр 15, 2011 12:48    Заголовок сообщения: Ответить с цитатой

RVV

Дык, я же предупреждала, что я-чайник, с Дизайнером общаюсь только пару недель.

Изначально мой селект выглядел как ваш. Потом начались непонятки с типом datetime, в результате чего получился такой изврат.
В коде инициализации стоит Set dateformat YMD;
Глобально заданы три переменные _wdate,_bdate,_edate, все as Date.
Тем не менее после пересвоения _wdate, на окне появлялось немылимая дата, что-то из 1905 года... ее так cast интерпретировал.

Пришлось изгаляться и сначала загонять даты во временную таблицу с полями типа datetime, считывать их оттуда, тогда все отображалось правильно.

Понимаю, что слишком все мудрено и наверное, все можно делать проще... но я изучаю Босс Дизайнер в основном методом тыка, поскольку техническое описание на него та еще конфетка!
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
RVV
Большой шоколадный орден
Большой шоколадный орден


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

СообщениеДобавлено: Пт Апр 15, 2011 13:51    Заголовок сообщения: Ответить с цитатой

Обратитесь к разработчикам за консультациями,
и узнайте когда очередные курсы по Дизайнеру.

PS: Пишите проще
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов 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