Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 14 May 2007 20:46 Post subject: Урок 202 Пример написания плагина для начинающих
По просьбе в предыдущей теме попробуем сделать совместными усилиями задачу по созданию собственного прайс-листа.
Цель темы:
- помочь научиться пользоваться отладчиком
- выработать пример написания решения средствами харбора
Основные задачи:
- отражать позиции включенные в прайс-лист
- иметь свою цену и ее групповое заполнение
Уточнения:
Заказчик хочет решение аналогично стандартному усложнив поиском/сортировкой по своей цене и для каких-то своих целей
на экране видеть отражение реестр картотеки и номенклатуры
Вопросы,попытки сбить с мысли:
А теперь вопрос - а что если делать сразу по номенклатурному справочнику и делать по нему обновление меток включения в прайс номенклатурного номера или ставить свои метки ?
Это упрощает задачу в плане создания реестра но осложняет автоматическое включение/исключение из прайс-листа.
Но может тут опять таки выручит кнопочка обновления неавтоматическая или этот пункт критичен ?
Вам нравится прайс-лист с повтором номенклатуры по количеству складов ? Если все-таки остаетесь на своем - давайте приступать.
Last edited by nordk on 16 May 2007 21:18; edited 1 time in total
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 15 May 2007 18:14 Post subject:
Для начала разбор полетов:
1. Почему Вы уверене что у Вас работает dbSetFilter() ?
Подумайте чего не хватает в этой строке ?
2. Экран у Вас получился кривой и косой Давайте чуть улучшим.
Дело в том что у вас длина cColhead меньше 80 символов, а содержимое планируется на всю ширину экрана, поэтому у Вас заголовок отцентровался и левая граница далеко уползла.
Приведите сColhead путем добавления пробелов до длины в 80
символов....
Теперь продолжим.
Установим mlabel в индекс mlabel все в этой же функции и пропишем
реляцию mkart-mlabel посредством
Code:
F_SETRELATION("MLABEL","UPPER(GRUP+NNUM)")
а в aHeads добавим элемент массива
Code:
{"Цена из mlabel..............","mlabel->OCENA1"}
Исправляем исходник и смотрим.
Дальше пишем: а что нам еще собственно тут надо из mlabel
1. Почему Вы уверене что у Вас работает dbSetFilter() ?
Подумайте чего не хватает в этой строке ?
да, странно... фигня какая-то... Первые девять строчек в инитлисте - пустые, потом всё нормально, но всё равно, пустые строчки попадаются а чего не хватает???
Quote:
2. Экран у Вас получился кривой и косой Давайте чуть улучшим.
Во всём виноват дядя Бил! это глюк Ctrl+C/Ctrl+V У меня всё ОК. Только... я бы хотел узнать, как в aHead уменьшить размер поля NAME, например до 34 символов...
Quote:
Теперь продолжим.
Установим mlabel в индекс mlabel все в этой же функции и пропишем
реляцию mkart-mlabel посредством Код:
F_SETRELATION("MLABEL","UPPER(GRUP+NNUM)")
а в aHeads добавим элемент массива Код:
{"Цена из mlabel..............","mlabel->OCENA1"}
Есть, только... после выполнения строчеи "F_SETRELATION" - программа вылетает в Главное меню
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 16 May 2007 13:14 Post subject:
Да не
Я же СПЕЦИАЛЬНО пишу так, чтобы Вы не просто копировали а задумывались. Моя то задача не НАПИСАТЬ а НАУЧИТЬ...
Дак вот по пункту 1
Вы не указали к какому алиасу применять DBSETFILTER()
И он применяется к алиасу по умолчанию.
Вот с этого места давайте и научимся смотреть алиас по умолчанию.
Вставьте перед DBSETFILTER() строчку
Code:
ALTD()
и перекопилируйте задачу с отладчиком и должите что на этой строке открывается окно отладчика.
По пункту 2 - я не просто так написал. Это не с копированием проблемы. Это Инитлист таки должен работать и если даже у Вас
по какой-то причине все ок - Вы потом этот "привет" получите, а
потому устраните замечания плз
По пункту 3 ответ аналогичен будет пункту 1.
Давайте потратим чуток времени на обучение работы с отладчико
КРУТО!!! вот это круто!!! заработало ОК!!! Можно переходить ко второму экрану... В принципе, на скока я понимаю, можно в этом же инитлисте вытащить 21-ой строчкой (после прямой линии
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 16 May 2007 17:16 Post subject:
Ну вобщем-то Вы правильно понимаете.
Теперь по поводу функций и их применения.
Да Вы можете менять текущую рабочую область.
А может не меняя ее использовать функцию к конкретной рабочий области (алиасу).
Т.е. еще можно было написать
mkart->( dbSetFilter() )
mkart->( F_SETRELATION() )
Именно это я и пропустил сознательно в своих советах
Теперь о длине поля - вы наверно хотите сказать о размере
столбца NAME а не о заголловке - заголовок то - это простая
текстовая строка. Но вроде Вы и так в Вашем примере поле форматируете. Посяните Ваш вопрос пожалуйста.
Ну а про mlabel совершенно верно - через SAY или SAYSCREEN()
Вы можете все реализовать и в данном случае более сложный
механизм просто без надобности на мой взгляд
ОК, СПАСИБО ОГРОМНОЕ!!! Ещё вопросик... почему, когда я нажимаю Enter (корректеровака) у меня появляется окошко aHead (что вполне нормально), но оно почему-то перекрывает собой кусок инитлиста... Блин, как бы объяснить-то... Короче оно должно быть посередине. оно и есть посередине, но справа и слева него, пока оно горит пусто, а не перекрытый инитлист. То есть оно горит в середине экрана, а перекрывает собой несколько строчек (в данном случае 7) Не понянто?
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