View previous topic :: View next topic |
Author |
Message |
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 01 Nov 2007 20:11 Post subject: УРОК 202. Окно ввода средствами QINPUT |
|
|
Появилась интересная задачка:
организовать окно ввода как писал автор красивое.
Если я правильно понял, то сначала надо определить 3
параметра, потом на основании их осуществить непосредственный
ввод кода партнера.
А вообще буду признателен за точное и подробное описание задач |
|
Back to top |
|
 |
vla
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
|
Posted: 01 Nov 2007 22:48 Post subject: |
|
|
ОК.
Идея такая:
Нужен ввод дополнительных характеристик партнеров.
Плагин для правки доп.инфы по текущему партнеру запускается, например, по Shift-F7.
Часть характеристик вводится из пользовательских справочников, часть без справочника. Для простоты примера можно все хранить в существующем поле, например, ADRESS2.
(Хотя по жизни, думаю, лучше все хранить в массиве (мемо-поле) в расширении таблицы PARTNER по примеру CARDSPRI-CARDSSEC, но это уже к уроку не относится, равно как и ведение пользовательских справочников).
Ввод информации видится как в технической настройке раб.станции:
для параметров, вводимых через справочник, хранится код, а в форме ввода показывается и код и название.
Пример формы дополнительных характеристистик партнера:
строка1: Тип партнера: [ ] (ввод через справочник типов)
строка2: Вид партнера: [ ] (ввод через справочник видов, подчиненный типу)
строка3: емэйл (текст без справочника)
Справочники:
1. Типы партнеров.
CODE N 6,0 (код типа)
NAME C 30 (название типа)
пример данных: 1 Город, 2 Межгород
2. Виды партнеров.
TYPE N 6,0 (код вида)
NAME C 30 (название вида)
CODE N 6,0 (код типа, к которому относится вид)
пример данных:
1 Ленинский р-н 1
2 Кировский р-н 1
3 Караганда 2
4 Усть-Каменогорск 2
Находясь на первой строке, выбирается тип партнера (CODE).
При переходе ко второй строке на справочник видов накладывается фильтр по выбранному типу(CODE=CODE), чтобы выбирать города только для типа Межгород, а районы только для типа Город (типа иерархии). Сохраняется TYPE.
Третья строка вводится произвольно.
Если уже заполнено - видим текущее значение.
Как-то так видится задача.
Реальный список характеристик потом можно будет наплодить уже опираясь на пример. Реально недостающих характеристик много - кто торговый представитель, контактное лицо, договор, срок расчетов, максимальный кредит и т.д.
Для чего все это нужно - например, для анализа сегментов продаж.
Это тоже, кстати, повод для интересного многим примера - плагин, создающий перекрестную таблицу в Excell. |
|
Back to top |
|
 |
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 02 Nov 2007 00:14 Post subject: |
|
|
Даааа.... Пожалуй прав был Дениска. Несколько другую задачу ожидал увидеть. Ну да ладно.
Давайте начнем с уточнений.
1.Сами справочники необходимо хранить в своих базах.
а стало быть нужен интерфейс их заполнения.
При данной постановке видится 2 вида решения:
- создаем две БД в первой храним первую характеристику, во
второй - вторую
- первую характеристику храним в массиве, который заполняем в конфигурационном текстовом файле, поскольку характеристик будет явно немного и врядли будут добавляться, вторую в отдельной БД
2.Можно сделать интерфейс заполнения внутри самого справочника
будет ли это красиво....Дело Вашего вкуса
3.Не надо мудрить с мемо-полями - создаем в БД партнеров свои поля |
|
Back to top |
|
 |
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 02 Nov 2007 00:17 Post subject: |
|
|
Что касается построения универсальной сводной таблицы в Excel
то у меня такой опыт уже имеется: делал универсальную
сводную таблицу для анализа движения товаров, регулируемую
пользователем с кучей параметров. Так что подобный урок можем
провести.
Но спешу разочаровать - возможности сводной таблицы и возможности самого Excel жутко ограниченны |
|
Back to top |
|
 |
Дениска
Joined: 26 Feb 2002 Posts: 649
|
Posted: 02 Nov 2007 08:09 Post subject: |
|
|
vla wrote: | Реально недостающих характеристик много - кто торговый представитель, контактное лицо, договор, срок расчетов, максимальный кредит и т.д.
Для чего все это нужно - например, для анализа сегментов продаж.
Это тоже, кстати, повод для интересного многим примера - плагин, создающий перекрестную таблицу в Excell. |
А точно все эти данные нужно обязательно в БЭСТ-е видеть, а не в другой программе? Возможно вам стоит посмотреть CRM программы. К примеру, Monitor CRM (у них раньше был (и наверное и сейчас есть) импорт данных из БЭСТ-а).
P.S. Надеюсь на развития этого Урока этот комментарий не повлияе |
|
Back to top |
|
 |
vla
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
|
Posted: 02 Nov 2007 08:53 Post subject: |
|
|
Дениска wrote: |
А точно все эти данные нужно обязательно в БЭСТ-е видеть, а не в другой программе? Возможно вам стоит посмотреть CRM программы. К примеру, Monitor CRM (у них раньше был (и наверное и сейчас есть) импорт данных из БЭСТ-а).
P.S. Надеюсь на развития этого Урока этот комментарий не повлияет |
Точно в БЭСТе. Пример:
В расходных накладных (в полях пользователя) регистрируется автомобиль, водитель, маршрут и т.д.
Monitor CRM из произвольных полей пользователя данные не вытащит. Если не прав - буду рад  |
|
Back to top |
|
 |
itman

Joined: 05 Apr 2002 Posts: 1247 Location: Ильин Е.Ю. Occupation: Cio Interests: Кинель
|
Posted: 02 Nov 2007 08:53 Post subject: |
|
|
Похожую задачу решали с помощью доп. полей в справочник партнеров. (торговый агент, регион продаж).
Для анализа - формирование сводной таблицы из баз движения товаров и базы партнеров.
Плагин запускается стандартным образом, по ctrl-F5 (горячие клавишы на плагины доступны в БЭСТ5 3.4). В окне, через справочники выбираются значения.
Данные, производные от адреса, проще и брать из адреса, но для этого следует поле адреса заполнять стандартным образом, т.е. с использованием КЛАДР.
Давайте конкретизируем задачу, какие значения, каким образом. А с учетом того, что это учебный пример а не коллективное решение задачи - задачу попроще и решение в двух вариантах, для Б4+ и для Б5. |
|
Back to top |
|
 |
vla
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
|
Posted: 02 Nov 2007 09:05 Post subject: |
|
|
nordk wrote: |
Давайте начнем с уточнений.
1.Сами справочники необходимо хранить в своих базах.
а стало быть нужен интерфейс их заполнения.
При данной постановке видится 2 вида решения:
- создаем две БД в первой храним первую характеристику, во
второй - вторую
- первую характеристику храним в массиве, который заполняем в конфигурационном текстовом файле, поскольку характеристик будет явно немного и врядли будут добавляться, вторую в отдельной БД
2.Можно сделать интерфейс заполнения внутри самого справочника
будет ли это красиво....Дело Вашего вкуса
3.Не надо мудрить с мемо-полями - создаем в БД партнеров свои поля |
По п.1 - думаю, что две БД будет более универсальным примером.
По п.2 - сделать заполнение внутри справочника, и фиг с ним, со вкусом Главное- функционально, надо добавить - на ходу добавили.
По п.3 - почему подумал про мемо - некоторые поля бывают длинными (контактное лицо и емэйл, например), и не хочется раздувать PARTNER. |
|
Back to top |
|
 |
vla
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
|
Posted: 02 Nov 2007 09:16 Post subject: |
|
|
Может, пока я выложу "рыбу" плагина с открытием пользовательских справочников, созданием по ним двух makerefer, и чтением-записью результатов в partner-adress2 ? |
|
Back to top |
|
 |
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 02 Nov 2007 10:47 Post subject: |
|
|
vla wrote: | По п.1 - думаю, что две БД будет более универсальным примером.
По п.2 - сделать заполнение внутри справочника, и фиг с ним, со вкусом Главное- функционально, надо добавить - на ходу добавили.
По п.3 - почему подумал про мемо - некоторые поля бывают длинными (контактное лицо и емэйл, например), и не хочется раздувать PARTNER. |
Сначала хочу сказать что многие характеристики уже имеются в БЭСТ-5
По п.1 скажу что две базы менее универсальный пример.
п2. принято
п.3 можно и не раздувать справочник партнеров а сделать отдельную таблицу с характеристиками.
Давайте лучше вы создадите 2 нужные базы с индексами
позволящими иерархию. Напишете их структуру сюда и сделаете
заготовку в которой откроете эти две базы и базу партнеров.
Выложите сюда наработку и следующим шагом мы с Вами организуем справочники.
Третьим шагом будет QINPUT собственно
Четвертый это корректировка и пополнение справочников внутри них. |
|
Back to top |
|
 |
vla
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
|
Posted: 02 Nov 2007 11:04 Post subject: |
|
|
nordk wrote: |
п.3 можно и не раздувать справочник партнеров а сделать отдельную таблицу с характеристиками.
|
В общем согласен, а для чистоты урока предлагаю практиковаться на существующем поле partner->adress2.
nordk wrote: |
Давайте лучше вы создадите 2 нужные базы с индексами
позволящими иерархию. Напишете их структуру сюда и сделаете
заготовку в которой откроете эти две базы и базу партнеров.
Выложите сюда наработку и следующим шагом мы с Вами организуем справочники.
Третьим шагом будет QINPUT собственно
Четвертый это корректировка и пополнение справочников внутри них. |
ОК.
Структура и пример заполнения пользовательских справочников - в начале темы.
Базу партнеров не открываем, т.к. предолагается, что вызываем плагин стоя на нужной записи.
Заготовка:
Code: |
//корректировка доп.информации о партнере
//к уроку 202 (QINPUT)
function main()
Local p_vid,p_typ,p_post
Local aRef
Local aSet,aSetKey
altd()
aSet:=SaveSet()
aSetKey:=SaveSetKey()
NETUSE("PART_T","part_t.dbf",,.F.) //справочник типов партнеров
NETUSE("PART_V","part_v.dbf",,.F.) //справочник видов партнеров
p_typ:=val(token(partner->adress2,,1)) //подтянули текущее значение типа
p_vid:=val(token(partner->adress2,,2)) //подтянули текущее значение вида
p_post:=alltrim(token(partner->adress2,,3)) //подтянули текущее значение емэйла
//
//
if NoOrYes("Изменять информацию о партнере",2,{" Да "," Нет "})=1
partner->(RECLOCK())
partner->adress2:=str(p_typ,6,0)+';'+str(p_vid,6,0)+';'+ltrim(p_post)
partner->(F_DBUNLOCK())
endif
part_t->( DBCLOSEAREA() )
part_v->( DBCLOSEAREA() )
RestSetKey(aSetKey)
RestSet(aSet)
return nil
|
Last edited by vla on 02 Nov 2007 11:44; edited 1 time in total |
|
Back to top |
|
 |
Дениска
Joined: 26 Feb 2002 Posts: 649
|
Posted: 02 Nov 2007 11:44 Post subject: |
|
|
vla wrote: |
Code: |
p_typ:=val(token(partner->adress2,1)) //подтянули текущее значение типа
p_vid:=val(token(partner->adress2,2)) //подтянули текущее значение вида
p_post:=alltrim(token(partner->adress2,3)) //подтянули текущее значение емэйла
|
|
На сколько я понял, то у вас значения строки разделены символом ";". Тогда наверное правильней так:
Code: |
token(partner->adress2,";"1)
|
? |
|
Back to top |
|
 |
vla
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
|
Posted: 02 Nov 2007 11:45 Post subject: |
|
|
Ага, уже исправил  |
|
Back to top |
|
 |
nordk
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
|
Posted: 02 Nov 2007 15:48 Post subject: |
|
|
Приведите пожалуйста формат таблиц part_t и part_v и созданных к ним индекс |
|
Back to top |
|
 |
vla
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
|
Posted: 02 Nov 2007 17:51 Post subject: |
|
|
nordk wrote: | Приведите пожалуйста формат таблиц part_t и part_v и созданных к ним индексов |
Пожалуйста
Просто не хотел повторяться...
Справочники:
1. Типы партнеров (part_t).
CODE N 6,0 (код типа)
NAME C 30 (название типа)
пример заполнения:
1 Город
2 Межгород
2. Виды партнеров (part_v).
TYPE N 6,0 (код вида)
NAME C 30 (название вида)
CODE N 6,0 (код типа, к которому относится вид)
пример заполнения:
1 Ленинский р-н 1
2 Кировский р-н 1
3 Караганда 2
4 Усть-Каменогорск 2
Индексы не создавал, т.к. пока не вижу необходимост |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © phpBB Group
|