Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 01 Nov 2007 20:11 Post subject: УРОК 202. Окно ввода средствами QINPUT
Появилась интересная задачка:
организовать окно ввода как писал автор красивое.
Если я правильно понял, то сначала надо определить 3
параметра, потом на основании их осуществить непосредственный
ввод кода партнера.
А вообще буду признателен за точное и подробное описание задач
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.
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 02 Nov 2007 00:14 Post subject:
Даааа.... Пожалуй прав был Дениска. Несколько другую задачу ожидал увидеть. Ну да ладно.
Давайте начнем с уточнений.
1.Сами справочники необходимо хранить в своих базах.
а стало быть нужен интерфейс их заполнения.
При данной постановке видится 2 вида решения:
- создаем две БД в первой храним первую характеристику, во
второй - вторую
- первую характеристику храним в массиве, который заполняем в конфигурационном текстовом файле, поскольку характеристик будет явно немного и врядли будут добавляться, вторую в отдельной БД
2.Можно сделать интерфейс заполнения внутри самого справочника
будет ли это красиво....Дело Вашего вкуса
3.Не надо мудрить с мемо-полями - создаем в БД партнеров свои поля
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 02 Nov 2007 00:17 Post subject:
Что касается построения универсальной сводной таблицы в Excel
то у меня такой опыт уже имеется: делал универсальную
сводную таблицу для анализа движения товаров, регулируемую
пользователем с кучей параметров. Так что подобный урок можем
провести.
Но спешу разочаровать - возможности сводной таблицы и возможности самого Excel жутко ограниченны
Реально недостающих характеристик много - кто торговый представитель, контактное лицо, договор, срок расчетов, максимальный кредит и т.д.
Для чего все это нужно - например, для анализа сегментов продаж.
Это тоже, кстати, повод для интересного многим примера - плагин, создающий перекрестную таблицу в Excell.
А точно все эти данные нужно обязательно в БЭСТ-е видеть, а не в другой программе? Возможно вам стоит посмотреть CRM программы. К примеру, Monitor CRM (у них раньше был (и наверное и сейчас есть) импорт данных из БЭСТ-а).
P.S. Надеюсь на развития этого Урока этот комментарий не повлияе
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 из произвольных полей пользователя данные не вытащит. Если не прав - буду рад
Похожую задачу решали с помощью доп. полей в справочник партнеров. (торговый агент, регион продаж).
Для анализа - формирование сводной таблицы из баз движения товаров и базы партнеров.
Плагин запускается стандартным образом, по ctrl-F5 (горячие клавишы на плагины доступны в БЭСТ5 3.4). В окне, через справочники выбираются значения.
Данные, производные от адреса, проще и брать из адреса, но для этого следует поле адреса заполнять стандартным образом, т.е. с использованием КЛАДР.
Давайте конкретизируем задачу, какие значения, каким образом. А с учетом того, что это учебный пример а не коллективное решение задачи - задачу попроще и решение в двух вариантах, для Б4+ и для Б5.
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.
Joined: 15 Mar 2005 Posts: 60 Location: Гаклин Владимир Ильич Occupation: ООО БэстСиб, консультант Interests: Новосибирск
Posted: 02 Nov 2007 09:16 Post subject:
Может, пока я выложу "рыбу" плагина с открытием пользовательских справочников, созданием по ним двух makerefer, и чтением-записью результатов в partner-adress2 ?
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 собственно
Четвертый это корректировка и пополнение справочников внутри них.
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
p_typ:=val(token(partner->adress2,1)) //подтянули текущее значение типа
p_vid:=val(token(partner->adress2,2)) //подтянули текущее значение вида
p_post:=alltrim(token(partner->adress2,3)) //подтянули текущее значение емэйла
На сколько я понял, то у вас значения строки разделены символом ";". Тогда наверное правильней так:
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
Индексы не создавал, т.к. пока не вижу необходимост
All times are GMT + 4 Hours Goto page 1, 2, 3, 4, 5Next
Page 1 of 5
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