colima / openbravoposru

Automatically exported from code.google.com/p/openbravoposru
0 stars 1 forks source link

При загрузке большого количества наименований (более 5600) меню продажи зависает #6

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
Очередная проблема!!!
При загрузке большого количества 
наименований у меня было 5600.
Openbravo POS не раскрывают меню продажи зависая.
При этом активности приложения так и 
сервера баз данных нет.
Использовал БД MySQL

Original issue reported on code.google.com by svinin...@gmail.com on 30 Apr 2009 at 9:45

GoogleCodeExporter commented 9 years ago
Удивительно вчера сам с такой проблемой 
столкнулся, решается просто в команде 
запуска
выдели больше памяти, у меня для 
справочника товара в 10000 наименований 
установлено
значение выделено для java -Xmx256m.

Original comment by svinin...@gmail.com on 30 Apr 2009 at 9:46

GoogleCodeExporter commented 9 years ago
Проблема еще в том что на кассовых машинах 
это максимум памяти.

Original comment by svinin...@gmail.com on 30 Apr 2009 at 9:46

GoogleCodeExporter commented 9 years ago
Тогда только организовывать терминальную 
сессию. Проблема при большом количестве
будет и с распечаткой этикеток на все 
товары сразу и с справочником товаров.  

Ещё вопрос на какой ОС запускаете Openbravo POS? 

Original comment by svinin...@gmail.com on 30 Apr 2009 at 9:50

GoogleCodeExporter commented 9 years ago
Чтобы было понятно о чем речь

Openbravo POS выбрал на замену работающей 1С.
На кассовых машинах стоит лицензионная 
Винда.
Кассовые машины работают только в режиме 
продажи товара для других целей они не
предназначаются. По этому проблемы с 
распечаткой этикеток нет.
Номенклатурная база огромная до 6000 
наименований.
Количественный оборот товара высокий по 
этому необходим партионный учет.
Определение товара производится через 
стандартные штрих коды.
Кроме всего имеются именные дисконты 
которые тоже анализируются через штрих код.
Отличие в том что на дисконте не 
используется стандарт EAN13.

Original comment by wor...@mail.ru on 30 Apr 2009 at 10:19

GoogleCodeExporter commented 9 years ago
По дисконтным картам вам пока ничего не 
отвечу, сам над этой проблемой работаю,
недельки через две что-то смогу конкретное 
сказать. 

По поводу работы с такой номенклатурой 
могу предложить увеличить память или 
запустить
терминальный сервер к которому будут 
подключаться кассы, т.е. принцип тонких
клиентов. Но я так понимаю Вы используете 
драйверы оборудование под Windows, по этому
вряд-ли в вашем случае это реализуемо.

По поводу партионного учёта у меня есть 
несколько вопрос, ознакомьтесь с ними в Issue 7

Original comment by svinin...@gmail.com on 30 Apr 2009 at 10:59

GoogleCodeExporter commented 9 years ago
Частичное решение проблемы с большим 
количеством записей
Ищем строчку в файле JCatalog.java
tnbbutton = new ThumbNailBuilder(width, height, 
"com/openbravo/images/package.png");
и изменяем ее на 
        tnbbutton = new ThumbNailBuilder(500, 12, "com/openbravo/images/package1.png" );
При этом надо добавить прикрепленный фай в 
каталог com/openbravo/images

При кол-ве 1800 наименований OpenBravoPOS Съел на 40 
метров памяти меньше

Original comment by wor...@mail.ru on 4 May 2009 at 6:54

Attachments:

GoogleCodeExporter commented 9 years ago
В принципе можно вообще попробовать убрать 
картинки предпросмотра. Другой вопрос если
они нужны, что делать?

Original comment by svinin...@gmail.com on 4 May 2009 at 9:01

GoogleCodeExporter commented 9 years ago
нужен флаг в настройках который и будет 
отвечать за вывод иконок

Original comment by wor...@mail.ru on 4 May 2009 at 9:31

GoogleCodeExporter commented 9 years ago
> При загрузке большого количества 
наименований у меня было 5600.

Поделитесь секретом как грузили такое 
кол-во в бд?

Original comment by StalinPo...@gmail.com on 5 May 2009 at 8:49

GoogleCodeExporter commented 9 years ago
Генерировал в Pentaho Data Integration, а затем 
обновлял записи в базе.

Original comment by svinin...@gmail.com on 6 May 2009 at 3:21

GoogleCodeExporter commented 9 years ago
Выложил схему. Проверти настройки для 
Вашего сервера БД, в моём случае 
предполагается
использование MySQL

Original comment by svinin...@gmail.com on 6 May 2009 at 4:02

Attachments:

GoogleCodeExporter commented 9 years ago
Я грузил через шлюз в виде Аксеса т.к. у меня 
источник данных 1С грузиться очень
быстро хотя база очень большая.
Схематично выглядит так 1c-Access-mysql использую 
источник ODBC MySQL & FoxODBC

Original comment by wor...@mail.ru on 6 May 2009 at 7:23

GoogleCodeExporter commented 9 years ago
Я использую PDI вместо MS Access, из-за его 
кросплатформенности и свободности. Вместо
ODBC я использую JDBC, а так в принципе решение 
аналогичное. Кроме этого в
предлагаемом алгоритме Generate Products.ktr в 
качестве эксперимента по порядку
генерируются коды товаров, а в случайном 
порядке названия товаров и цены закупки.

Но возникли некоторые проблемы при 
заполнении БД, связанные с скоростью 
добавления
записей в таблицу товаров БД Openbravo POS, при 
заполнении средняя скорость 15-20
строк/с, т.е. для 100 тысяч записей это около 1 
часа. Необходимая скорость около
30-40 строк/с, т.е. около 30 минут на 
заполнение/обновление.

Вопрос, отчего зависит скорость 
обновления/добавления записей в БД MySQL?

Какие оптимальные настройки параметров 
сервера MySQL необходимы для увеличения
показателя скорости?

Какое железо необходимо для повышения 
скорости до требуемого уровня?

Original comment by svinin...@gmail.com on 6 May 2009 at 1:55

GoogleCodeExporter commented 9 years ago
Надо проанализировать 2 момента
1) Какова скорость чтения из базы источника 
т.е. с какой скоростью вы получаете эти
данные. Ошибки в основном в запросах к базе 
их оптимизация. Если у Вас используются
циклы при выборке то будет очень долго. 
2) Попробуйте заменить драйвер JDBC на тот-же 
ODBC и посмотрите изменение скорости

Original comment by wor...@mail.ru on 6 May 2009 at 3:40

GoogleCodeExporter commented 9 years ago
Продолжаем эксперимент. 

Загружаем 100.000 товаров в базу через PDI 
занимает это около 8 часов.

Заменяем картинку.

Запускаем с выделением 1 Гбайта памяти 
-Xmx1024m, всего на машине где запускается
клиент 2Гбайта памяти.

Ждём около 5 минут, панель Продаж работает, 
панель Товаров тоже, при работе всё быстро.

Выходим и снова пытаемся запустить, памяти 
опять не хватает.

Похоже всё таки для такого объёма товаров 
программа всё таки не оптимизирована, а
соответственно не предназначена. Буду 
переписываться с разработчиками может, 
что-то
подскажут и помогут
[http://forge.openbravo.com/plugins/espforum/view.php?group_id=101&forumid=43492
1&topicid=6994638#6994638].

Original comment by svinin...@gmail.com on 8 May 2009 at 6:14

GoogleCodeExporter commented 9 years ago
Получил ответ от разработчиков. 
Оказывается проблема известна
https://issues.openbravo.com/view.php?id=7624 с февраля 2009 года, 
планировали
устранить в версии 2.30, но перенесли решение 
на версию 2.40. Так что будем ждать.

Для нетерпеливых могу рекомендовать 
закоментировать следующие строки в JCatalog.java:

java.util.List<ProductInfoExt> products = m_dlSales.getProductCatalog(catid);

for (ProductInfoExt prod : products) {
    jcurrTab.addButton(new ImageIcon(tnbbutton.getThumbNailText(prod.getImage(),
getProductLabel(prod))), new SelectedAction(prod));
    }

Но в этом случае пользователи смогут 
искать товары только по штрих коду.

Данное решение не касается работы с окном 
Товары и различных диалогов поиска по
товару без применения масок в фильтре. 
Работа с данными функциями при 100k записей
товаров работает медленно, но при задании 
параметра -Xmx512m, иначе всё равно
программа выходит на "OutOfMemoryError".

Original comment by svinin...@gmail.com on 8 May 2009 at 9:16

GoogleCodeExporter commented 9 years ago
Есть еще предложение как уменьшить 
нагрузку на компьютер в запросе который 
делает
выборку товара надо установить лимит для 
вывода на экран в виде top 100. Уменьшение
нагрузки поможет сделать подчинение 
товара к каталогу. в этом случае выборка 
будет
делаться уже узко направленно. Как пример 
Когда делаете загрузку создавайте группы
хотя-бы используя алфавитный указатель.

Original comment by wor...@mail.ru on 17 Jul 2009 at 2:08

GoogleCodeExporter commented 9 years ago
Попробовал внести усовершенствование в 
исходный код введя параметр отвечающий за
вывод каталога по товарам внизу панели в 
окне Продажи, это позволит избавится от
проблемы загрузки большого количества при 
продаже.

Необходимые изменения исходного кода 
находятся в r204.

Для применения необходимо в ресурсе 
Ticket.Buttons снять комментарий с строки:

    <catvisible value="false" />

Original comment by svinin...@gmail.com on 24 Sep 2009 at 8:22

GoogleCodeExporter commented 9 years ago
Для выбора товара из списка может быть 
использовано окно Список товаров.

Original comment by svinin...@gmail.com on 24 Sep 2009 at 8:39

Attachments:

GoogleCodeExporter commented 9 years ago
Также сейчас в окне Список товаров стало 
доступен поиск на русском языке. Issue 111

Original comment by svinin...@gmail.com on 13 Apr 2011 at 9:17

GoogleCodeExporter commented 9 years ago

Original comment by svinin...@gmail.com on 13 Apr 2011 at 9:17

GoogleCodeExporter commented 9 years ago

Original comment by svinin...@gmail.com on 18 Apr 2011 at 2:11

GoogleCodeExporter commented 9 years ago
Добрый день,

А где можно скачать эту версию?

Original comment by setsen_b...@yahoo.com on 15 Sep 2012 at 6:36

GoogleCodeExporter commented 9 years ago
В Downloads Новогодняя версия 2012 содержит эти 
изменения

Original comment by svinin...@gmail.com on 15 Sep 2012 at 5:02