Задача: сделать интерфес выбора должностных лиц, подписывающих документ. Список лиц, как правило, не превышает 10 чел., поэтому вызывать Persons для этой задачи - не совсем правильно, учитывая численность работающих (более 1000). Поэтому, более подходящим является, например, элемент RadioButton.
Вместе с тем, указанный список - вещь непостоянная, зависящая от изменений в штатном расписании и причуд руководства.
Вопрос: можно ли список хранить отдельно от интерфейса - например, в текстовом файле, откуда он будет подставляться в диалог выбора?
Динамичный интерфейс без перекомпиляции
Модераторы: m0p3e, edward_K, Модераторы
Динамичный интерфейс без перекомпиляции
Галактика 8.10, Oracle 10g / 10.2.0.4
-
- Постоянный гость
- Сообщения: 68
- Зарегистрирован: 29 мар 2005, 17:49
Re: Динамичный интерфейс без перекомпиляции
Лучше ХРАНИТЕ В ЛЮБОЙ НЕ ИСПОЛЬЗУЕМОЙ ТАБЛИЧКЕ в БД
Re: Динамичный интерфейс без перекомпиляции
Можно извратиться с настройками. Например сделать аналог "Доступные контрагенты". Все довольно просто. Таблица есть.
Re: Динамичный интерфейс без перекомпиляции
Внимательно изучив накопленный на форуме опыт , пришел к решению задачи таким образом.
Создается текстовый файл podpis.txt, где каждая строчка - ФИО и должность подписывающего, разделенные двоеточием.
Файл цепляется интерфейсом:
interface select_podp 'Документ подпишет' doaccept;
show at (,,60,20);
table struct tmp_db
(
dol: String,
fio: String
)
with index
(
tmp_db01 = fio
);
create view var _dol:string _fio:string;
as select * from tmp_db;
var f1n : string;
tmpStr : string;
Parameters _dol, _fio;
Browse sel_podp;
fields fio 'ФИО' : protect;
dol 'Должность' : protect;
end;
File My1File;
handleevent
cmInit: begin
delete all tmp_db;
f1n := 'podpis.txt';
If My1File.OpenFile(f1n,stOpen) then
{
do
{
My1File.ReadLn(tmpStr);
tmp_db.dol := ExtractDelimitedWord(tmpStr,1,':');
tmp_db.fio := ExtractDelimitedWord(tmpStr,2,':');
insert current tmp_db;
}
While Not My1File.EOF;
}
Else Message ('Невозможно открыть файл!');
end;
cmDefault: begin
_dol := tmp_db.dol;
_fio := tmp_db.fio;
end;
end;
end.
Создается текстовый файл podpis.txt, где каждая строчка - ФИО и должность подписывающего, разделенные двоеточием.
Файл цепляется интерфейсом:
interface select_podp 'Документ подпишет' doaccept;
show at (,,60,20);
table struct tmp_db
(
dol: String,
fio: String
)
with index
(
tmp_db01 = fio
);
create view var _dol:string _fio:string;
as select * from tmp_db;
var f1n : string;
tmpStr : string;
Parameters _dol, _fio;
Browse sel_podp;
fields fio 'ФИО' : protect;
dol 'Должность' : protect;
end;
File My1File;
handleevent
cmInit: begin
delete all tmp_db;
f1n := 'podpis.txt';
If My1File.OpenFile(f1n,stOpen) then
{
do
{
My1File.ReadLn(tmpStr);
tmp_db.dol := ExtractDelimitedWord(tmpStr,1,':');
tmp_db.fio := ExtractDelimitedWord(tmpStr,2,':');
insert current tmp_db;
}
While Not My1File.EOF;
}
Else Message ('Невозможно открыть файл!');
end;
cmDefault: begin
_dol := tmp_db.dol;
_fio := tmp_db.fio;
end;
end;
end.
Галактика 8.10, Oracle 10g / 10.2.0.4
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Динамичный интерфейс без перекомпиляции
а все таки лучше создать свою табличку ( как подсмотри в конвертере), не забудь потом вызвать
UPDATE X$FILES WHERE XF$CODE = 0 SET XF$CHECKSUM = 0;
так ты дашь возможность пользователю самому попдравлять список должностей.
UPDATE X$FILES WHERE XF$CODE = 0 SET XF$CHECKSUM = 0;
так ты дашь возможность пользователю самому попдравлять список должностей.
Re: Динамичный интерфейс без перекомпиляции
Edward_K
Я не сторонник по всякому случаю создавать свои таблицы и вообще менять словарь
А подправлять список - можно добавить в интерфейс кнопку, которая будет запускать ProcessText.
Я не сторонник по всякому случаю создавать свои таблицы и вообще менять словарь
А подправлять список - можно добавить в интерфейс кнопку, которая будет запускать ProcessText.
Галактика 8.10, Oracle 10g / 10.2.0.4
-
- Новичок
- Сообщения: 21
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Украина. Киев.
- Контактная информация:
Re: Динамичный интерфейс без перекомпиляции
Всем привет.
Иногда использую следующую методику решения вопроса хранения таких данных.
1) Делаю внешний аттрибут с "Финсированным" названием для таблицы X$Files
2) Создаю значение внешнего аттрибута для первой записи в X$Files
3) Мемо-поле значения аттрибута использую как место хранения временной таблицы в виде строк с разделителями
4) Для удобства пишу интерфейс редактирования это таблицы.
Выгоды:
а)не нужна докомпиляция.
а)данных храняться в базе, а не во внешних файлах.
б)реализованы средсва доступа пользователя к данным.
Иногда использую следующую методику решения вопроса хранения таких данных.
1) Делаю внешний аттрибут с "Финсированным" названием для таблицы X$Files
2) Создаю значение внешнего аттрибута для первой записи в X$Files
3) Мемо-поле значения аттрибута использую как место хранения временной таблицы в виде строк с разделителями
4) Для удобства пишу интерфейс редактирования это таблицы.
Выгоды:
а)не нужна докомпиляция.
а)данных храняться в базе, а не во внешних файлах.
б)реализованы средсва доступа пользователя к данным.