Главная
Новый форум
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

УРОК 202. Окно ввода средствами QINPUT
Goto page 1, 2, 3, 4, 5  Next
 
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4
View previous topic :: View next topic  
Author Message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 01 Nov 2007 20:11    Post subject: УРОК 202. Окно ввода средствами QINPUT Reply with quote

Появилась интересная задачка:
организовать окно ввода как писал автор красивое.

Если я правильно понял, то сначала надо определить 3
параметра, потом на основании их осуществить непосредственный
ввод кода партнера.
А вообще буду признателен за точное и подробное описание задач
Back to top
View user's profile Send private message Send e-mail
vla



Joined: 15 Mar 2005
Posts: 60
Location: Гаклин Владимир Ильич
Occupation: ООО БэстСиб, консультант
Interests: Новосибирск

PostPosted: 01 Nov 2007 22:48    Post subject: Reply with quote

ОК.
Идея такая:
Нужен ввод дополнительных характеристик партнеров.
Плагин для правки доп.инфы по текущему партнеру запускается, например, по 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
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 02 Nov 2007 00:14    Post subject: Reply with quote

Даааа.... Пожалуй прав был Дениска. Несколько другую задачу ожидал увидеть. Ну да ладно.
Давайте начнем с уточнений.
1.Сами справочники необходимо хранить в своих базах.
а стало быть нужен интерфейс их заполнения.
При данной постановке видится 2 вида решения:
- создаем две БД в первой храним первую характеристику, во
второй - вторую
- первую характеристику храним в массиве, который заполняем в конфигурационном текстовом файле, поскольку характеристик будет явно немного и врядли будут добавляться, вторую в отдельной БД
2.Можно сделать интерфейс заполнения внутри самого справочника
будет ли это красиво....Дело Вашего вкуса
3.Не надо мудрить с мемо-полями - создаем в БД партнеров свои поля
Back to top
View user's profile Send private message Send e-mail
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 02 Nov 2007 00:17    Post subject: Reply with quote

Что касается построения универсальной сводной таблицы в Excel
то у меня такой опыт уже имеется: делал универсальную
сводную таблицу для анализа движения товаров, регулируемую
пользователем с кучей параметров. Так что подобный урок можем
провести.
Но спешу разочаровать - возможности сводной таблицы и возможности самого Excel жутко ограниченны
Back to top
View user's profile Send private message Send e-mail
Дениска



Joined: 26 Feb 2002
Posts: 649



PostPosted: 02 Nov 2007 08:09    Post subject: Reply with quote

vla wrote:
Реально недостающих характеристик много - кто торговый представитель, контактное лицо, договор, срок расчетов, максимальный кредит и т.д.
Для чего все это нужно - например, для анализа сегментов продаж.
Это тоже, кстати, повод для интересного многим примера - плагин, создающий перекрестную таблицу в Excell.


А точно все эти данные нужно обязательно в БЭСТ-е видеть, а не в другой программе? Возможно вам стоит посмотреть CRM программы. К примеру, Monitor CRM (у них раньше был (и наверное и сейчас есть) импорт данных из БЭСТ-а).

P.S. Надеюсь на развития этого Урока этот комментарий не повлияе
Back to top
View user's profile Send private message
vla



Joined: 15 Mar 2005
Posts: 60
Location: Гаклин Владимир Ильич
Occupation: ООО БэстСиб, консультант
Interests: Новосибирск

PostPosted: 02 Nov 2007 08:53    Post subject: Reply with quote

Дениска wrote:

А точно все эти данные нужно обязательно в БЭСТ-е видеть, а не в другой программе? Возможно вам стоит посмотреть CRM программы. К примеру, Monitor CRM (у них раньше был (и наверное и сейчас есть) импорт данных из БЭСТ-а).

P.S. Надеюсь на развития этого Урока этот комментарий не повлияет

Точно в БЭСТе. Пример:
В расходных накладных (в полях пользователя) регистрируется автомобиль, водитель, маршрут и т.д.
Monitor CRM из произвольных полей пользователя данные не вытащит. Если не прав - буду рад
Back to top
View user's profile Send private message
itman



Joined: 05 Apr 2002
Posts: 1247
Location: Ильин Е.Ю.
Occupation: Cio
Interests: Кинель

PostPosted: 02 Nov 2007 08:53    Post subject: Reply with quote

Похожую задачу решали с помощью доп. полей в справочник партнеров. (торговый агент, регион продаж).
Для анализа - формирование сводной таблицы из баз движения товаров и базы партнеров.
Плагин запускается стандартным образом, по ctrl-F5 (горячие клавишы на плагины доступны в БЭСТ5 3.4). В окне, через справочники выбираются значения.
Данные, производные от адреса, проще и брать из адреса, но для этого следует поле адреса заполнять стандартным образом, т.е. с использованием КЛАДР.
Давайте конкретизируем задачу, какие значения, каким образом. А с учетом того, что это учебный пример а не коллективное решение задачи - задачу попроще и решение в двух вариантах, для Б4+ и для Б5.
Back to top
View user's profile Send private message Send e-mail
vla



Joined: 15 Mar 2005
Posts: 60
Location: Гаклин Владимир Ильич
Occupation: ООО БэстСиб, консультант
Interests: Новосибирск

PostPosted: 02 Nov 2007 09:05    Post subject: Reply with quote

nordk wrote:

Давайте начнем с уточнений.
1.Сами справочники необходимо хранить в своих базах.
а стало быть нужен интерфейс их заполнения.
При данной постановке видится 2 вида решения:
- создаем две БД в первой храним первую характеристику, во
второй - вторую
- первую характеристику храним в массиве, который заполняем в конфигурационном текстовом файле, поскольку характеристик будет явно немного и врядли будут добавляться, вторую в отдельной БД
2.Можно сделать интерфейс заполнения внутри самого справочника
будет ли это красиво....Дело Вашего вкуса
3.Не надо мудрить с мемо-полями - создаем в БД партнеров свои поля

По п.1 - думаю, что две БД будет более универсальным примером.
По п.2 - сделать заполнение внутри справочника, и фиг с ним, со вкусом Главное- функционально, надо добавить - на ходу добавили.
По п.3 - почему подумал про мемо - некоторые поля бывают длинными (контактное лицо и емэйл, например), и не хочется раздувать PARTNER.
Back to top
View user's profile Send private message
vla



Joined: 15 Mar 2005
Posts: 60
Location: Гаклин Владимир Ильич
Occupation: ООО БэстСиб, консультант
Interests: Новосибирск

PostPosted: 02 Nov 2007 09:16    Post subject: Reply with quote

Может, пока я выложу "рыбу" плагина с открытием пользовательских справочников, созданием по ним двух makerefer, и чтением-записью результатов в partner-adress2 ?
Back to top
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 02 Nov 2007 10:47    Post subject: Reply with quote

vla wrote:
По п.1 - думаю, что две БД будет более универсальным примером.
По п.2 - сделать заполнение внутри справочника, и фиг с ним, со вкусом Главное- функционально, надо добавить - на ходу добавили.
По п.3 - почему подумал про мемо - некоторые поля бывают длинными (контактное лицо и емэйл, например), и не хочется раздувать PARTNER.

Сначала хочу сказать что многие характеристики уже имеются в БЭСТ-5
По п.1 скажу что две базы менее универсальный пример.
п2. принято
п.3 можно и не раздувать справочник партнеров а сделать отдельную таблицу с характеристиками.

Давайте лучше вы создадите 2 нужные базы с индексами
позволящими иерархию. Напишете их структуру сюда и сделаете
заготовку в которой откроете эти две базы и базу партнеров.
Выложите сюда наработку и следующим шагом мы с Вами организуем справочники.
Третьим шагом будет QINPUT собственно
Четвертый это корректировка и пополнение справочников внутри них.
Back to top
View user's profile Send private message Send e-mail
vla



Joined: 15 Mar 2005
Posts: 60
Location: Гаклин Владимир Ильич
Occupation: ООО БэстСиб, консультант
Interests: Новосибирск

PostPosted: 02 Nov 2007 11:04    Post subject: Reply with quote

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
View user's profile Send private message
Дениска



Joined: 26 Feb 2002
Posts: 649



PostPosted: 02 Nov 2007 11:44    Post subject: Reply with quote

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
View user's profile Send private message
vla



Joined: 15 Mar 2005
Posts: 60
Location: Гаклин Владимир Ильич
Occupation: ООО БэстСиб, консультант
Interests: Новосибирск

PostPosted: 02 Nov 2007 11:45    Post subject: Reply with quote

Ага, уже исправил
Back to top
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 02 Nov 2007 15:48    Post subject: Reply with quote

Приведите пожалуйста формат таблиц part_t и part_v и созданных к ним индекс
Back to top
View user's profile Send private message Send e-mail
vla



Joined: 15 Mar 2005
Posts: 60
Location: Гаклин Владимир Ильич
Occupation: ООО БэстСиб, консультант
Interests: Новосибирск

PostPosted: 02 Nov 2007 17:51    Post subject: Reply with quote

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
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4 All times are GMT + 4 Hours
Goto page 1, 2, 3, 4, 5  Next
Page 1 of 5

 
Jump to:  
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

Rambler
Rambler's Top100 Рейтинг@Mail.ru