УРОК 202. Окно ввода средствами QINPUT
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2, 3, 4, 5  Next  :| |:
-> Программирование в БЭСТ-4

#1: УРОК 202. Окно ввода средствами QINPUT Author: nordkLocation: Горбунов Константин PostPosted: 01 Nov 2007 20:11
    —
Появилась интересная задачка:
организовать окно ввода как писал автор красивое.

Если я правильно понял, то сначала надо определить 3
параметра, потом на основании их осуществить непосредственный
ввод кода партнера.
А вообще буду признателен за точное и подробное описание задач

#2:  Author: vlaLocation: Гаклин Владимир Ильич PostPosted: 01 Nov 2007 22:48
    —
ОК.
Идея такая:
Нужен ввод дополнительных характеристик партнеров.
Плагин для правки доп.инфы по текущему партнеру запускается, например, по 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.

#3:  Author: nordkLocation: Горбунов Константин PostPosted: 02 Nov 2007 00:14
    —
Даааа.... Пожалуй прав был Дениска. Несколько другую задачу ожидал увидеть. Ну да ладно.
Давайте начнем с уточнений.
1.Сами справочники необходимо хранить в своих базах.
а стало быть нужен интерфейс их заполнения.
При данной постановке видится 2 вида решения:
- создаем две БД в первой храним первую характеристику, во
второй - вторую
- первую характеристику храним в массиве, который заполняем в конфигурационном текстовом файле, поскольку характеристик будет явно немного и врядли будут добавляться, вторую в отдельной БД
2.Можно сделать интерфейс заполнения внутри самого справочника
будет ли это красиво....Дело Вашего вкуса
3.Не надо мудрить с мемо-полями - создаем в БД партнеров свои поля

#4:  Author: nordkLocation: Горбунов Константин PostPosted: 02 Nov 2007 00:17
    —
Что касается построения универсальной сводной таблицы в Excel
то у меня такой опыт уже имеется: делал универсальную
сводную таблицу для анализа движения товаров, регулируемую
пользователем с кучей параметров. Так что подобный урок можем
провести.
Но спешу разочаровать - возможности сводной таблицы и возможности самого Excel жутко ограниченны

#5:  Author: Дениска PostPosted: 02 Nov 2007 08:09
    —
vla wrote:
Реально недостающих характеристик много - кто торговый представитель, контактное лицо, договор, срок расчетов, максимальный кредит и т.д.
Для чего все это нужно - например, для анализа сегментов продаж.
Это тоже, кстати, повод для интересного многим примера - плагин, создающий перекрестную таблицу в Excell.


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

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

#6:  Author: vlaLocation: Гаклин Владимир Ильич PostPosted: 02 Nov 2007 08:53
    —
Дениска wrote:

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

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

Точно в БЭСТе. Пример:
В расходных накладных (в полях пользователя) регистрируется автомобиль, водитель, маршрут и т.д.
Monitor CRM из произвольных полей пользователя данные не вытащит. Если не прав - буду рад

#7:  Author: itmanLocation: Ильин Е.Ю. PostPosted: 02 Nov 2007 08:53
    —
Похожую задачу решали с помощью доп. полей в справочник партнеров. (торговый агент, регион продаж).
Для анализа - формирование сводной таблицы из баз движения товаров и базы партнеров.
Плагин запускается стандартным образом, по ctrl-F5 (горячие клавишы на плагины доступны в БЭСТ5 3.4). В окне, через справочники выбираются значения.
Данные, производные от адреса, проще и брать из адреса, но для этого следует поле адреса заполнять стандартным образом, т.е. с использованием КЛАДР.
Давайте конкретизируем задачу, какие значения, каким образом. А с учетом того, что это учебный пример а не коллективное решение задачи - задачу попроще и решение в двух вариантах, для Б4+ и для Б5.

#8:  Author: vlaLocation: Гаклин Владимир Ильич PostPosted: 02 Nov 2007 09:05
    —
nordk wrote:

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

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

#9:  Author: vlaLocation: Гаклин Владимир Ильич PostPosted: 02 Nov 2007 09:16
    —
Может, пока я выложу "рыбу" плагина с открытием пользовательских справочников, созданием по ним двух makerefer, и чтением-записью результатов в partner-adress2 ?

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

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

Давайте лучше вы создадите 2 нужные базы с индексами
позволящими иерархию. Напишете их структуру сюда и сделаете
заготовку в которой откроете эти две базы и базу партнеров.
Выложите сюда наработку и следующим шагом мы с Вами организуем справочники.
Третьим шагом будет QINPUT собственно
Четвертый это корректировка и пополнение справочников внутри них.

#11:  Author: vlaLocation: Гаклин Владимир Ильич PostPosted: 02 Nov 2007 11:04
    —
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

#12:  Author: Дениска PostPosted: 02 Nov 2007 11:44
    —
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)

?

#13:  Author: vlaLocation: Гаклин Владимир Ильич PostPosted: 02 Nov 2007 11:45
    —
Ага, уже исправил

#14:  Author: nordkLocation: Горбунов Константин PostPosted: 02 Nov 2007 15:48
    —
Приведите пожалуйста формат таблиц part_t и part_v и созданных к ним индекс

#15:  Author: vlaLocation: Гаклин Владимир Ильич PostPosted: 02 Nov 2007 17:51
    —
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

Индексы не создавал, т.к. пока не вижу необходимост



-> Программирование в БЭСТ-4


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2, 3, 4, 5  Next  :| |:
Page 1 of 5

Powered by phpBB © 2001, 2005 phpBB Group