BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: Пред. 1 2 3 След.
RSS
Спецфункции в своем InitList., Каким обр там формир список спец-й?
 
Цитата
itman пишет:
Самый лучший способ научиться, проанализировать исходники рабочих примеров.
Т.к. initlist перекочевала из БЭСТ-4, все что есть по БЭСТ-4 - применимо и в Б5.
В инструментарии к Б4 приведены рабочие примеры, вот один из них:
....
Там же есть примеры и более функциональных процедур.
Сам пакет можно скачать здесь.

У меня Вопрос по RestSetKey(). Я так понял, что если я её вызываю без параметров, то все горячие клавиши сбрасываются?
Большое спасибо за пример!!! Согласен пример - одна из самых лучших вещей для разбора. Но пример в виде чужой программы не всегда удобно, иногда более чем достаточно описания+кратенького примера. И это во многих случаях удобнее.
 
Все отлично работает!!! Наконец-то!!!
Всем большое спасибо!!!
В своих функциях:
Код
.....
LOCAL aSetKey:=SaveSetKey()
Local aSetKey1:={}
RestSetKey(aSetKey1) 
........
RestSetKey(aSetKey)
return
 
Вы в который раз задаете Вопросы, которые рассматривались и в уроках на старом форуме и обсуждались. Т.е. пытаетесь писать как говорится "с наскока".

Мой Вам совет.
В описаниях функций самого БЭСТа (по описанию БЭСТ-4) ознакомьтесь с перечнем всех функций: какая - зачем и бегло пробегите темы-уроки до конца....
 
Цитата
Саак Шахламджян пишет:

У меня Вопрос по RestSetKey(). Я так понял, что если я её вызываю без параметров, то все горячие клавиши сбрасываются?

Просто SaveSetKey() прекрасно обнуляет все клавиши - для того и создавалась.
Насколько помню исходники функций БЭСТа можете на старом форуме посмотреть
 
Цитата
nordk пишет:
Вы в который раз задаете Вопросы, которые рассматривались и в уроках на старом форуме и обсуждались. Т.е. пытаетесь писать как говорится "с наскока".

Мой Вам совет.
В описаниях функций самого БЭСТа (по описанию БЭСТ-4) ознакомьтесь с перечнем всех функций: какая - зачем и бегло пробегите темы-уроки до конца....

Да вот в том то и дело, что бегло я как раз и просмотрел. И там довольно много примеров, уроков и пр. по поиску InitList, систематизации нет:(

А вот в опсаниях функциях БЭСТ'а(если речь идет о "Программирование в Б-4"), я там такого, увы не нашел... Нет там упоминания об этих функциях.
 
Цитата
Саак Шахламджян пишет:

Да вот в том то и дело, что бегло я как раз и просмотрел. И там довольно много примеров, уроков и пр. по поиску InitList, систематизации нет:(


С удовольствием выслушаю предложения и советы по систематизации. Думаю над тем как опыт старого форума оформить тут.
Заранее спасибо
 
Цитата
nordk пишет:
С удовольствием выслушаю предложения и советы по систематизации. Думаю над тем как опыт старого форума оформить тут.
Заранее спасибо

1. Я даже не представляю всего того перчня функций (именно БЭСТА) которые существуют. Вот сколько их всего, так на вскидку Вы можете сказать?
2. Еще интересен дизайнер приложений. Там как я понимаю есть свои функции, которые не работают при написании спец-й и наоборот. Плюс еще там есть классы, созданные разработчиками, что, пожалуй, тоже очень очень важно, не меньше чем остальное. а)Как тут быть!?? б)Вопрос эмм... насколько сильно отличается дизайнер от редактора XBA(функции БЭСТА) или одно и тоже? в) Приписывать ли разработки создателей БЭСТА к функциям БЭСТ (что туда включать какие классы и ф-ии, сколько их)
3. Нужны ли в описании "неБЭСТ'овские" функции? (Такие как Append BLANK, которая как я понимаю "неБЭСТовская" )
Зная хотя бы ответы на эти вопросы я бы хоть имел представление о том насколько это трудно систематизировать (объем работы).
P.S. Когда-то давно при написании еще в С++ Билдере, где вся справка была на английском (а еще раньше в Borland C 3.1) иногда было трудно понять описание на этом самом англ (или просто мало написано). Когда возникала такая ситуация, то если мне не изменяет память, можно было посмотреть заголовочные чати функций в Include файлах, по которым можно было понять какие данные на вход, а какие на выход и сколько их. Зная это можно было методом "тыка" понять, что это за функция. Тут же, извините, даже перечня ф-й нет. Там же еще было удобно, что они были разбиты в include файлах по группам. Здесь же, как я понимаю, только скомпилированные dll(причем интересующие ф-ии лежат в dll не PE-32 формата), по которым максимум что можно сделать это с "виндовым" отладчиком смотреть эти самые функции (само собой идиотизм).
Изменено: Саак Шахламджян - 10.09.2008 16:46:43
 
На старом форуме, как упомянул Константин - уже все самое необходимое рассматривалось.
Основные и необходимые функции приведены в отдельной теме.
Дело в том, что при написании пользовательских программ "БЭСТовские" функции нужны в строго определенные моменты. Если вы только не собираетесь писать новый модуль по всем внутренним правилам БЭСТа. Описание по XBA не отражает полно, но близко соответствует программированию в Б5.
initlist - основная функция для работы с реестрами. Составить картину по работе с ней легко, материала достаточно. В инструментарии функции разработчика по Б4 приведены в исходных кодах.
По классам - тема интересная, пока малопонятная. Со временем разберемся, я думаю.
Сегодняшний БЭСТ-5 система молодая, хотя бренд старый.

Пока могу предложить черновой вариант справочника пользователя.
На начальном этапе информация способна помочь.
Изменено: itman - 11.09.2008 09:04:03
С уважением,
Ильин Евгений
 
1. Минимум нужны все параметры основных функций (в частности для InitList, QInput, MakeRefer, QBrowse и т.д.) в актуальном состоянии.

Скажем мне помогло сообщение Константина с параметрами QInput (сообщение #74 из темы
QInput для отчета). Этот минимум хотелось бы иметь для всех основных функций. Хотя возможно он уже есть в различных уголках двух форумов и не только ...

Видимо перечень параметров функций лучше их разделить для БЭСТ4 и для БЭСТ5, т.к. есть ощущение, что они уже отличаются.

2. Если будет описание всех этих параметров, то будет совсем замечательно :lol:

3. Нужны минимальные примеры на каждую функцию.

На подобии, как в Уроке 1 по InitList. Скажем мне такие примеры по InitList, QInput, MakeRefer не нужны, а другим могут помочь. А мне бы такой пример помог бы с QBROWSE...
 
Так, у меня опять "шкурный" Вопрос.
Реализую реестр создания заказа, в очень упрощенном варианте.
Пользователь выбирает изделия(кнопкой добавить, с этим проблем нет), они как раз и должны попадать в реестр формирующегося заказа.
3 Варианта его организации.
1. Сам реестр текущего заказа хочу хранить в памяти и отображать initlist'ом. Как "запихать" массив в InitList?
2.Вариант делать временный файл-таблицу невариант, очень уж не хочется!!! (Долго работает и т.п.)
3.Сразу и писать в таблицу, где храняться строки заказа (rbookm). Тоже не очень при отмене придется все удалять.
Мне нравиться вариант 1, но там Вопрос. Если есть еще предложения буду рад.

Цитата
Денис пишет:
1. Минимум нужны все параметры основных функций (в частности для InitList, QInput, MakeRefer, QBrowse и т.д.) в актуальном состоянии.

Скажем мне помогло сообщение Константина с параметрами QInput (сообщение #74 из темы
QInput для отчета). Этот минимум хотелось бы иметь для всех основных функций. Хотя возможно он уже есть в различных уголках двух форумов и не только ...

Видимо перечень параметров функций лучше их разделить для БЭСТ4 и для БЭСТ5, т.к. есть ощущение, что они уже отличаются.

2. Если будет описание всех этих параметров, то будет совсем замечательно

3. Нужны минимальные примеры на каждую функцию.

На подобии, как в Уроке 1 по InitList. Скажем мне такие примеры по InitList, QInput, MakeRefer не нужны, а другим могут помочь. А мне бы такой пример помог бы с QBROWSE...

Да меня, собственно интересовало количество, количество того, что требует описания.

Цитата
itman пишет:
На старом форуме, как упомянул Константин - уже все самое необходимое рассматривалось.
Основные и необходимые функции приведены в отдельной теме.
Дело в том, что при написании пользовательских программ "БЭСТовские" функции нужны в строго определенные моменты. Если вы только не собираетесь писать новый модуль по всем внутренним правилам БЭСТа. Описание по XBA не отражает полно, но близко соответствует программированию в Б5.
initlist - основная функция для работы с реестрами. Составить картину по работе с ней легко, материала достаточно. В инструментарии функции разработчика по Б4 приведены в исходных кодах.
По классам - тема интересная, пока малопонятная. Со временем разберемся, я думаю.
Сегодняшний БЭСТ-5 система молодая, хотя бренд старый.

Пока могу предложить черновой вариант справочника пользователя.
На начальном этапе информация способна помочь.

Хорошо, конечно, что все есть в наличии, но было бы здорово собрать все воедино. Информацию, иногда просто приходиться по крупицам собирать, вычитывать, выпрашивать... А охватить ВСЁ и сразу - невозможно или трудно. Поэтому речь и повёл о систематизации. Справочник по Б-5 меня очень устраивает. Все четко и грамотно. Есть мелочи, которые не устраивают, но это из-за личных вкусов. Ну, м\б некоторые примеры не всю суть раскрывают. Но, зато есть возможность "все потрогать", попробовать. И если меня интересует работа со строками, то ч иду в нужный раздел, с таблицами - также ищу в нужном разделе. А если не до конца понимаю, то есть XBA редактор, отладчик, dbf Viewer...

По поводу классов. Все! Без классов уже никуда!!! Причем довльно давно. Все никак не заставлю их использовать в спец-ях, было бы добнее, наверное. А вот в дизайнере приложений, поковыряв исх. код разработчиков все довольно неплохо получилось (на уровне человека который делает это впервые). Там Вопросы теже самые - "Чего? Куда? и Как?". Компоненты, увы, неописаны. Работать работает, осталось еще понять, "что же я делаю" (По примеру сделать можно, а вот понять как работает - совсем дургой Вопрос)
Изменено: Саак Шахламджян - 11.09.2008 10:42:05
 
Сразу Вопрос, чем не устраивают штатные средства ведения заказов?
Тем более если используется системный файл. Если использовать свои таблицы - дело другое, и Вопрос с удалением решается несложно.
Лично я стараюсь придерживаться принципа - создавать запись в системную таблицу только в том случае, когда прекрасно понимаю смысл значений всех полей. Иначе потом можно наступить на серьезные грабли.
С уважением,
Ильин Евгений
 
Цитата
itman пишет:
Сразу Вопрос, чем не устраивают штатные средства ведения заказов?
Тем более если используется системный файл. Если использовать свои таблицы - дело другое, и Вопрос с удалением решается несложно.
Лично я стараюсь придерживаться принципа - создавать запись в системную таблицу только в том случае, когда прекрасно понимаю смысл значений всех полей. Иначе потом можно наступить на серьезные грабли.

А мне просто деваться некуда. Не устраивает по одной простой причине. В стандартном нет возможности подключать свои спецфункции :(
На стадии формирования заказа изделия еще не существует. Пользователь задает размеры и только потом на него создаются единицы в номенклатрн справочниках и спецификация, материалы в которой также расчитываются по формулам, которые храняться в отдельной таблице + еще и цена расчитывется по формуле(тоже отд таблица) в зависимости от размеров изделия.
Изменено: Саак Шахламджян - 11.09.2008 11:01:21
 
В стандартном заказе есть возможность использования спецфункций.
А почему бы в вашем случае не использовать заказ на услуги, работы, допускающий ввод номенклатуры.
Скажем, услугу по изготовлению такого то изделия.
Потом уже после технол. обработки создавать на основании этого заказа и номенклатур заказ продажи или производственный заказ.
Изменено: itman - 11.09.2008 12:16:53
С уважением,
Ильин Евгений
 
Цитата
itman пишет:
В стандартном заказе есть возможность использования спецфункций.

Поделитесь секретом, где? (Еслы Вы о самом реестре заказов, то само собой там есть. А вот Вы начните создание нового заказа (F4) и в открывшемся окошке попробуйте что-нибудь подключить..)
Цитата
itman пишет:
Потом уже после технол. обработки создавать на основании этого заказа и номенклатур заказ продажи или производственный заказ.

1. Дело в том, что у нас сейчас даже проще. Пользователю достаточно вызвать спецфункцию и изделие само создается, после ввода размеров. После этого ему нужно лишь "включить его в заказ" (завести партию в картотеке скл учета, включить в прайс и набить заказ.)
2. А в таком случае Вы, например могли бы распечатать, скажем счет, с ценами на изделие?
3. После создания такой заявки на изготовление какие дальнейшие действия пользователя??? Снова вручную набить заказ или как? Поподробнее пожалуйста, не пойму какая связь между продажей изделия и услугой на его изготовление?
Изменено: Саак Шахламджян - 11.09.2008 12:44:36
 
Мне сложно представить все ваши БП, это просто как рекомендация к просмотру всех доступных вариантов.
Если делать свой реестр заказов, на базе системного, затем еще и притягивать печать.
Представляете объем работы?

Услуга на изготовление, новая услуга = старт бизнес процесса по подготовке пр-ва заказанного изделия. Далее (я на ходу уже проигрываю), скажем по сохранению плагин обрабатывает заказ, если создана новая номенклатура запускается ваш плагин для создания номенклатуры, проводятся все необходимые действия, в режиме диалога, и формируется заказ (обычный или производственный). оператору останется зайти и распечатать.
В итоге используем системные реестры, и свою математику.
С уважением,
Ильин Евгений
 
Цитата
itman пишет:
Мне сложно представить все ваши БП, это просто как рекомендация к просмотру всех доступных вариантов.
Если делать свой реестр заказов, на базе системного, затем еще и притягивать печать.
Представляете объем работы?

Да Вы не поняли!!!
Не сам реестр заказов, а только при вводе нового!!!
Само собой сами заказы и будут храниться в самом обычном реестре заказов!!!
Мне нужна своя кнопочка F4!!! Нестандартный "ввод" заказов! А после ввода, он будет храниться в обычном реестре заказов. Я только веду речь о том, что мне нужно "свое" формирование заказов!!! Меню ввода, как угодно... Т.е. из реестра заказов (СТАНДАРТНЫХ) пользователь вызывает спец-ю "Сделать новый заказ", а вот после этого нужна визуализация ввода. Реестр партнеров, изделий, кнопки с этим уже проблем нет, осталось организовать "ввод нового".
Вот: "новый заказ"->Выбор партнера "Реестр партнёров" (с этим все в порядке)->Выбор изделия по нажатию кнопки добавить изделие "Реестр изделий"(тоже номально)->"создание изделия" тоже все норм->Возврат в исходную позицию, там где кнопка добавить изделие

А при каждом добавении в окошке висит то, что уже пользователем выбрано. Вот именно с этим списком и проблема, не знаю как реализовать.
Изменено: Саак Шахламджян - 11.09.2008 13:22:38
 
ОК.
а что мешает "(завести партию в картотеке скл учета, включить в прайс и набить заказ.)" в программном режиме?
Если содержимое заказа формируется индивидуально по определенной таблице соответствия, т.е. если с этой задачей можно справится программно.
Как я понял для изделия, которое будет в заказе, базовыми данными являются геом. размеры.
Если такая цепочка осуществима, не проще ли реализовать ее?
1. поступление данных от клиента (заказ на услугу изг.)
2. Обработка данных -> новая номенклатура (по событию - сохр.заказа)
3. Инициализация нового объекта ТМЦ в системе (партии, картотека скл. прайс) (плагин)
4. Генерация нового заказа (плагин)
5. Вывод сообщения с номером заказа
6. Оператор входит в заказ и печатает документы.

Если нет, то
1. Поступление данных от клиента оператору
2. Обработка данных оператором с помощью плагина
3. Инициализация оператором (номенклатура, и т.д.)
4. В реестре заказов по горяч. клавише оператором вызывается процедура создания заказа
5. открывается свой инитлист (при этом надо заполнить шапку)
6. Оператор набивает заказ, включая в него подготовленную номенклатуру
7. Выходим в реестр, заходим вновь чтобы распечатать заказ.

Я правильно понял?
С уважением,
Ильин Евгений
 
Цитата
Вот: "новый заказ"->Выбор партнера "Реестр партнёров" (с этим все в порядке)->Выбор изделия по нажатию кнопки добавить изделие "Реестр изделий"(тоже номально)->"создание изделия" тоже все норм->Возврат в исходную позицию, там где кнопка добавить изделие

А при каждом добавении в окошке висит то, что уже пользователем выбрано. Вот именно с этим списком и проблема, не знаю как реализовать

Сделать реестр, запись либо во временный файл либо непосредственно в заказы.
С временным файлом тормозов быть не должно
С уважением,
Ильин Евгений
 
Цитата
а что мешает "(завести партию в картотеке скл учета, включить в прайс и набить заказ.)" в программном режиме?
Если содержимое заказа формируется индивидуально по определенной таблице соответствия, т.е. если с этой задачей можно справится программно.

Именно этим и занимаюсь - делаю это программно. Остался только один момент. Сделать редактирование заказа. +кое-где по мелочи доделать+потом проверить это все целиком.

Код
поступление данных от клиента (заказ на услугу изг.) 
 Обработка данных -> новая номенклатура (по событию - сохр.заказа)

Даже не стал такой вариант рассматривать. При заполнении заказа нужно проверить правильность геом размеров+найти место "куда эти данные впихнуть"(т.е при стандартном приеме заказа пользователь должен будет их куда-то еще и ввести, по-моему там некуда).
Цитата
itman пишет:
Сделать реестр, запись либо во временный файл либо непосредственно в заказы.
С временным файлом тормозов быть не должно

Таким путем, к сожалению сейчас и пошёл, времени на то, чтобы делать "свои" InitList для массива нету(Да и функцией MessageBox особо не разрисуешься!!!! Линии нарисовать - проблема). К стати, у разработчиков не во временном файле, кажется, храниться, во всяком случае я его не нашёл.
Изменено: Саак Шахламджян - 11.09.2008 14:23:48
 
Саак я до понедельника в командировку.
Хочу сказать что вообще-то на F4 свой заказ такое событие есть при создании заказа еще с БЭСТ-4.
МОжет опять Вопрос осветить возможности ?
И даже на старому форуме есть оргинал исходника к БЭСТ-4 по подобному решению в одной из тем.
Но прошу прощения только после выходных.
 
Цитата
nordk пишет:
Саак я до понедельника в командировку.
Хочу сказать что вообще-то на F4 свой заказ такое событие есть при создании заказа еще с БЭСТ-4.
МОжет опять Вопрос осветить возможности ?
И даже на старому форуме есть оргинал исходника к БЭСТ-4 по подобному решению в одной из тем.
Но прошу прощения только после выходных.

Да суть Вопроса не в этом F4, а в том, что дальше происходит. В том как лучше решить задачу: "Функция создания заказа". Где хранить переменные, как их рисовать. К стати от информации как навесить на F4 свою функции я тоже не откажусь:)
Изменено: Саак Шахламджян - 11.09.2008 17:43:51
 
Саак посмотрите событие вход в прасй-лист.
В БЭСТ-4 оно называется где прайс-лист где картотека товаров. На старом форуме эту возможность описывали и на этом не помню - вроде тоже.

Суть.
Внутри заказа при нажатии F4 запускается Ваш плагин в который передается массив строк заказа если они были
и Вы делаете свой собственный экран создания строк заказа (набора этих строк). В конце Ваш плагин должен вернуть этот же массив со строками заказа.

Если главная функция Вашего плагина вернет .T. , то запустится после выполнения плагина штатный набор в заказ, если .F., то запускаться не будет.

Полный подробный пример в исх. для БЭСТ-4 я публиковал.
В БЭСТ-5 появились аналитики а в остальном я думаю все тоже самое. По краней мере можно разобрать принцип работы. Если у Вас будет совершенно свой способ наполнения заказа - этот пример Вам не актуален.
 
Цитата
nordk пишет:
Саак посмотрите событие вход в прасй-лист.
В БЭСТ-4 оно называется где прайс-лист где картотека товаров. На старом форуме эту возможность описывали и на этом не помню - вроде тоже.

Суть.
Внутри заказа при нажатии F4 запускается Ваш плагин в который передается массив строк заказа если они были
и Вы делаете свой собственный экран создания строк заказа (набора этих строк). В конце Ваш плагин должен вернуть этот же массив со строками заказа.

Если главная функция Вашего плагина вернет .T. , то запустится после выполнения плагина штатный набор в заказ, если .F., то запускаться не будет.

Полный подробный пример в исх. для БЭСТ-4 я публиковал.
В БЭСТ-5 появились аналитики а в остальном я думаю все тоже самое. По краней мере можно разобрать принцип работы. Если у Вас будет совершенно свой способ наполнения заказа - этот пример Вам не актуален.

Последнее, что мы обсуждали - принцип создания нового заказа. Было предложено 3 варианта:
Цитата
Саак Шахламджян пишет:
1. Сам реестр текущего заказа хочу хранить в памяти и отображать initlist'ом. Как "запихать" массив в InitList?
2.Вариант делать временный файл-таблицу невариант, очень уж не хочется!!! (Долго работает и т.п.)
3.Сразу и писать в таблицу, где храняться строки заказа (rbookm). Тоже не очень при отмене придется все удалять.

Был выбран второй вариант - текущ заказ хранить во временном файле.
Уже все доделал. Единственное пришлось, все-таки емного "поизвращаться", причины:
1. SAVESCREEN() не запоминает экран. Она запоминает лишь буковки, которые выведены в этот момент на экран. Ни цветов, ни строк InitList'a, ничего, кроме символов экрана. Это естественно не устраивает при переключении между разными InitList.
2. При вызове 2го InitList все кнопки, "нарисованные на первом" исчезают. Это пожалуй, самая веская причина для "изврата" (Пришлось Do while'ом рисовать первый initlist).
А так, все прекрасно работает, сохраняется, просто здорово.
 
Похоже разобрался с тем, чтобы сделать нормально. Функция SAVESCREEN() работает неправильно\не работает\не так как надо. В общем, именно она является лишней.
При использовании QinitPush() и QinitPush(.T.) все прекрасно работает, не нужны никакие Do while'ы для прорисовки "первого" InitList (у меня двойное вложение так что последний InitList 3й по счету вложенности).
Надо все переделать...
Перед вызовом второго InitList QinitPush() и QinitPush(.T.), по окнчанию соответственно два QInitPop+"сохранение клавиш" (RestSetKey, SaveSetkey).
Так что придется переделать.
 
Цитата
Саак Шахламджян пишет:
Похоже разобрался с тем, чтобы сделать нормально. Функция SAVESCREEN() работает неправильно\не работает\не так как надо. В общем, именно она является лишней.
При использовании QinitPush() и QinitPush(.T.) все прекрасно работает, не нужны никакие Do while'ы для прорисовки "первого" InitList (у меня двойное вложение так что последний InitList 3й по счету вложенности).
Надо все переделать...
Перед вызовом второго InitList QinitPush() и QinitPush(.T.), по окнчанию соответственно два QInitPop+"сохранение клавиш" (RestSetKey, SaveSetkey).
Так что придется переделать.

Срабатывало "как-то через раз". Просто, как я понял, иногда при выходе из моих "Операций" "экран обновлялся",а иногда нет. Добавил еще и QIni(20,2) по выходу из своих операций (у меня 20ть строк), теперь более-менее прилично стало. Единственное, конечно, немного неудобно, приходиться запоминать сколько строк и где именно вызывать QIni(20,2).
Изменено: Саак Шахламджян - 22.09.2008 12:32:54
Страницы: Пред. 1 2 3 След.
Читают тему (гостей: 1)