ФИНАНСЫ БЕЗ ПРОБЛЕМ(tm):
ПЕРЕГОВОРНЫЙ ПУНКТ II

Добро пожаловать, Гость. Пожалуйста, выберите:
Вход || Регистрация.
28.02.20 в 19:44:39


Наш сайт | Cтаpый форум (до 08.2003 года) | Интернет-магазин & Центр загрузок |
Главная | Помощь | Поиск | Участники | Вход | Регистрация
Модифицированный Клиент CLW32:
Из документации ...
На форуме...

Использование Клиента FCM:
1. Отчетный период и журнал операций.
2. Печать.
3. Экспорт.
4. Многострочная операция.
5. Редактирование многострочных операций.
http://www.fwp-client.com

Работа с ФБП через браузер:
Настройка для лечебных учреждений, оказывающих медицинские услуги:
На форуме...
http://vasoft.ru

Технический аудит настройки.
[Читать]

ФИНАНСЫ БЕЗ ПРОБЛЕМ (сетевая) и Opencart:
предлагаем:
1. Выгрузка новых покупателей из интернет-магазина в план счетов и сохранение информации в extrd.dat.
2. Выгрузка данных о заказанном товаре и сохранение в ФБП в журнале операций, номер заказа регистрируем в плане счетов как с.счет.
3. Українська локалізація.






   Финансы без пpоблем: Пеpеговоpный Пункт II
   ФБП для начинающих

   Подскажите
« Предыдущая Тема | Следующая Тема »
Страниц: 1 ... 13 14 15 16 17  ...  20 Ответить | Уведомлять | Послать Тему | Печатать
   Автор  Тема: Подскажите  (Прочитано 12070 раз)
Denis, Dnepropetrovsk

***



Я люблю этот Форум!

   
Просмотреть Профиль | E-мэйл

Сообщений: 129
Re: Подскажите
« Ответить #210 В: 29.01.13 в 11:32:24 »
Цитировать | Править

Ну если Вас устраивает 2 сек. на выполнение формы за месяц и Вам не нужно знать как можно сделать менее 1 сек. за любой отчетный период, то это Ваше право.
Могу предложить еще вариант переименуйте Ваши долгоиграющие формы так, чтобы они начинались на "H". Такие формы не автообновляются после каждого изменения в базе даже если в клиенте стоит обновлять все.
 
Судя по примерам в Ваших постах в ваших формах Rewind запускается в циклах, данные хранятся и сортируются в медленном массиве.
 
Я Вам предлагаю на примере показать как можно сделать отчетную форму в один проход по ленте фактов (1 rewind на всю форму) и используя быстрый массив для хранения и обработки данных, которая будет выполняться на порядок быстрее и мало зависеть от выбранного отчетного периода.
 
От использования первичных документов я лично отказался давно и Вам советую (не могу понять зачем хранить документ на диске, если его можно формировать на летуHuh).
 
Если клиент форм разрушает мозг, тогда зачем его использовать, есть Excel и браузеры для получения презентабельного вида документов.
 
Если у Вас есть формы, завешивающие сервер, то в них скорее всего есть ошибки, которые необходимо определить и устранить (на 99.9% уверен что там ошибка программиста).
Зарегистрирован
VLV

***



Я люблю Финансы без проблем!

   
Просмотреть Профиль |

Сообщений: 228
Re: Подскажите
« Ответить #211 В: 29.01.13 в 12:05:33 »
Цитировать | Править

Quote:
Если клиент форм разрушает мозг, тогда зачем его использовать

 
Приношу извинения...не удачную фразу  в адрес KLFF поправил...фраза была про моменты и в клиенте и сервере..а не клиент в целом (Ё-мае, Денис, нельзя так перефразировать)
Активно его использую и без него не смог бы реализовать учет путевых листов и  РМ товароведа в рознице. А в рамках заявленного назначения(Отчетные формы Win - качества) Клфф вообще вопросов нет. И очень благодарен Александру, благодаря активной его помощи АРМ кассира с подключением фискального регистратора(и Др) тоже возможно. И мелочи относятся именно к последнему применению(они касаются и сервера, я уже описывал здесь чего мне не хватило). Причем пока не выяснено, виноват ли в этом клиент. Проблема связана с размножением файлов ответа от сервера. Здесь обсуждалось...пока не во все моменты удалось вникнуть.  
Очень бы хотелось чтобы и клиент форм тоже развивался.
 
Quote:
Судя по примерам в Ваших постах в ваших формах Rewind запускается в циклах

 
В первом случае ДА. (Время выполн в январе старого года адаптера: 5сек) (в январе нового года адаптера 30 мин)
Второй алгоритм однопроходовый, но не на set а на sed-массиве. И строит документ налету, а не хранит на диске. Время выполнения меньше 1 сек.
 
Quote:
Я Вам предлагаю на примере

Денис, идея использования быстрого массива и однопроходовости мне понятна и сегодня использую этот подход для "Несвязанных ОФ". Буду еще переосмысливать ваши советы.
Вот покажите на примере сортировку по наименованию как у вас сделана, оч интересно.
 
« Изменён в : 29.01.13 в 14:03:22 пользователем: VLV » Зарегистрирован
Denis, Dnepropetrovsk

***



Я люблю этот Форум!

   
Просмотреть Профиль | E-мэйл

Сообщений: 129
Re: Подскажите
« Ответить #212 В: 29.01.13 в 15:55:15 »
Цитировать | Править

Сортировка по наименованию стандартная:
# СЧЕТ sort [n2 #]
#  
но если перебирать все субсчета не нужно тогда сортировка массива:
sort array a
 
 
А чем у Вас отличаются связанные и несвязанные ОФ ??
 
Если хотите разобраться, как сделать быструю форму, предлагаю совершенно бесплатно переделать Вашу форму так, чтобы она выполнялась в 1 проход по ленте (Скорость выполнения будет зависеть только от количества фактов в выбранном периоде, а не от количества субсчетов как у Вас) время выполнения будет меньше 1сек на любом периоде Cool.
Если интересно, присылайте Вашу *.rpt  на мой e-mail  в профиле Grin
Зарегистрирован
Boris, Kiev.
Moderator

*****



Адепт ФБП  с 1996г.

   
Просмотреть Профиль | E-мэйл

Сообщений: 842
Re: Подскажите
« Ответить #213 В: 29.01.13 в 16:02:53 »
Цитировать | Править

а так:
 
#*AC sort [get %,[strip([n1#]+SF)]]
 
не делаете?
Зарегистрирован
Denis, Dnepropetrovsk

***



Я люблю этот Форум!

   
Просмотреть Профиль | E-мэйл

Сообщений: 129
Re: Подскажите
« Ответить #214 В: 29.01.13 в 16:16:29 »
Цитировать | Править

on 29.01.13 в 16:02:53, Boris, Kiev. wrote:
а так:
 
#*AC sort [get %,[strip([n1#]+SF)]]
 
не делаете?

 
 
Если нужна более сложная сортировка то и сложнее условие можно наворотить  
Тут скобки лишние по-моему: Grin
#*AC sort [get %,[strip [n1#]+SF]]
так тоже должно работать, только  SF должно содержать строковое значение  Cool
Зарегистрирован
Boris, Kiev.
Moderator

*****



Адепт ФБП  с 1996г.

   
Просмотреть Профиль | E-мэйл

Сообщений: 842
Re: Подскажите
« Ответить #215 В: 29.01.13 в 17:10:48 »
Цитировать | Править

всё так, в SF и отражаем всю нашу сложность. Smiley
« Изменён в : 29.01.13 в 18:47:24 пользователем: Boris, Kiev. » Зарегистрирован
VLV

***



Я люблю Финансы без проблем!

   
Просмотреть Профиль |

Сообщений: 228
Re: Подскажите
« Ответить #216 В: 30.01.13 в 17:26:17 »
Цитировать | Править

Quote:
А чем у Вас отличаются связанные и несвязанные ОФ ??  

 
Несвязанная, одинокая...Запустилась отработала без переходов...закрылась и забылась...
 
Иные одна из другой выплывают и рушатся если на Set%, по поводу них и отсылал в прошлое, объясняя почему активно использую Sed.
 
Quote:
Скорость выполнения будет зависеть только от количества фактов в выбранном периоде, а не от количества субсчетов

 
Если речь, например, про оборотку где в Экстра остатки, то от количества субсчетов зависеть будет.
 
Вообщем уговорили Вы меня переделать форму на один проход. Ну и спасибоSmiley
Правад в set% разместил только индексы строк  по позициям товаров, а остальное посредством привычного sed-массива...за 500mS отрабатывает и в январе НГ адаптера не глючит, этого уже для меня вполне...
 
Кстати постоянно натыкаюсь на проблемму с передачей параметров в подпрограмму, Жаль что пока не исправлена.
 
По сортировке интересно как маленькие и большие буквы вместе собрать.
« Изменён в : 31.01.13 в 07:10:46 пользователем: VLV » Зарегистрирован
VLV

***



Я люблю Финансы без проблем!

   
Просмотреть Профиль |

Сообщений: 228
Re: Подскажите
« Ответить #217 В: 30.01.13 в 17:31:57 »
Цитировать | Править

* ОФ Оборотная ведомость ПО ПОДРАЗДЕЛЕНИЮ(ВЫВОДИТ ТОЛЬКО ПОЗ С ОБОРОТАМИ. ДЛЯ ДР ВАРИАНТОВ КОЕ ЧТО ДОБАВИТЬ НУЖНО)
ARRAY %
IX='OB'                                          Дополнительный индекс массива
QS=0  
NS=0                                             pointer
F=YC*100+MF+[VLDH]/100; L=YC*100+ML+[VLLD]/100
REWIND FACTS RANGE F,L
:LOOPID
SEARCH {1, 'тмцта'}
IF [success] = 1                                 Перебор фактов в пределах периода
  SP=[FACT_F 2]
  NA=[CP[N2 *SP],1,20]
    IF [GET%,SP]=0                               ЕСЛИ Обознач не встречалось
      QS=QS+1                                    Счетчик строк
      NS=NS+1                                    Указатель на новую строку
      A=[SET%,SP,NS]                             Сохраняем новый указатель на строку в индексе обозначения
        CALL SEDX (IX,NS,1,NS)                  Номер строки
        CALL SEDX (IX,NS,2,SP)                  Счет, субсчет
        CALL SEDX (IX,NS,3,[N2 *SP])            Намен, хар-ка, вид, сорт
         EI=[:EIOB SP,1]
        CALL SEDX (IX,NS,4,EI)                  Наименов единицы измерения
         QB=[:QB]
        CALL SEDX (IX,NS,5,[:QB])               ОстНач
        CALL READ_F                              ВЕРНЕТ QP,QR ИЗ ПРОЧИТАННОГО ФАКТА
        CALL SEDX (IX,NS,6,QP)                  Приход
        CALL SEDX (IX,NS,7,QR)                  Расход
*         QE=[:QE]
        CALL SEDX (IX,NS,8,[:QE])               Остаток А ЗДЕСЬ ПРОХОДИТ ВЫЗОВ ТК ВЛОЖЕННОСТЬ ПОДПРОГРАММ ДРУГАЯ
          Y=''; IF (QB+QP-QR)<-0.00001 Y='*';ENDIF
        CALL SEDX (IX,NS,9,Y)                   * Звездочка-минусовой остаток(можно минусовое кол-во еще здесь писать)
*        CALL SEDDX (IX,NS,10,[:CUE])    ЖАЛЬ ЧТО НЕ ПРОХОДИТ ИЗ-ЗА ОШИБКИ ФБП
         CU=[:CUE]                                   учетная
        CALL SEDX (IX,NS,10,CU)              Цена учетная
          SU=QE*CU
        CALL SEDX (IX,NS,11,SU)                 Сумма учетная
    ELSE                                                Позиция уже есть в массиве
        HS=[GET%,SP]                             Читаем указатель на строку товара
        CALL READ_F                              ВЕРНЕТ QP,QR ИЗ ПРОЧИТАННОГО ФАКТА
         QP=[:GEDX IX,HS,6]+QP
        CALL SEDX (IX,HS,6,QP)                  Приход
         QR=[:GEDX IX,HS,7]+QR
        CALL SEDDX (IX,HS,7,QR)                  Расход
Остаток он из ЭхПар
         QB=[:QB]
          Y=''; IF (QB+QP-QR)<-0.00001 Y='*';ENDIF
        CALL SEDX (IX,HS,9,Y)                   * Звездочка
    ENDIF
GOTO LOOPID
ENDIF
************************************************
CALL SEDQS (QS)
CALL SEDQC (11)
* Форматируем колонки
CALL SEDFL (1,5,0)
CALL SEDFL (2,9,0)
CALL SEDFL (3,35,0)
CALL SEDFL (4,9,2)
CALL SEDFL (5,9,2)
CALL SEDFL (6,9,2)
CALL SEDFL (7,9,2)
CALL SEDFL (8,9,2)
CALL SEDFL (9,9,2)
CALL SEDFL (10,9,2)
CALL SEDFL (11,9,2)
* Сортировка
CALL SORDXTBL (IX,3)
CALL RENUMDX (IX,1)
* Печатаем
CALL PRNTBLDX (IX)
« Изменён в : 30.01.13 в 17:51:31 пользователем: VLV » Зарегистрирован
Denis, Dnepropetrovsk

***



Я люблю этот Форум!

   
Просмотреть Профиль | E-мэйл

Сообщений: 129
Re: Подскажите
« Ответить #218 В: 31.01.13 в 11:41:17 »
Цитировать | Править

Ну вот видите, 500 мс уже лучше 5 сек.
И это только устранение лишних проходов по ленте фактов дало 10-кратное ускорение.
 
По поводу Вашего стиля программирования имхо излишнее использование подпрограмм, как в вашем примере, сильно затрудняет поиск узких мест и, как следствие, оптимизацию кода, а так же практически не влияет на скорость разработки приложенияWink
 
Например у Вас для накопления QP 2 вызова подпрограммы
"
QP=[:GEDX IX,HS,6]+QP  
CALL SEDX (IX,HS,6,QP)  
"
А можно записать одной строкой, не используя подпрограмм:
[sed IX+HS+'6',[ged IX+HS+'6']+QP]
 
Зачем писать подпрограмму размером в 1 строчку кода Huh
 
 
 
Теперь чтобы убедить Вас использовать [set %,.. вместо [sed ... привожу профиль:
Тут тестируем накопление суммы чисел от 1 до 100000,  используя get массив  и ged массив
 
~   ~|0001 *Тест
~   ~|0002 *.on
~   ~|0003 *,off
~   1|0004 array %
~   ~|0005 [sed 'Индекс',0]
~   2|0006 for i=1 to 100000
#  6.3%  44|0007     [plus %,'Индекс',i]
 ################## 93.2% 655|0008     [sed 'Индекс',[ged 'Индекс']+i]
~   1|0009 endfor
~   ~|0010 stop
 
Как видите использование [plus %,..  быстрее [sed ..    примерно 15-кратное (при включенном fastged  - без fastged все еще печальней для [sed), так что 500 мс превращается в 30-40 мс  Cheesy
Зарегистрирован
BBBB

**



Я люблю этот Форум!

   
Просмотреть Профиль |

Сообщений: 79
Re: Подскажите
« Ответить #219 В: 08.02.13 в 17:09:11 »
Цитировать | Править

Что-то не получается запустить clw под системoй Windows Server 2003 64-х битной. Может подскажет кто? При этом ФБП:сервер 32-х битный запускается.
Зарегистрирован
Boris, Kiev.
Moderator

*****



Адепт ФБП  с 1996г.

   
Просмотреть Профиль | E-мэйл

Сообщений: 842
Re: Подскажите
« Ответить #220 В: 08.02.13 в 20:31:29 »
Цитировать | Править

on 08.02.13 в 17:09:11, BBBB wrote:
Что-то не получается запустить clw под системoй Windows Server 2003 64-х битной. Может подскажет кто? При этом ФБП:сервер 32-х битный запускается.

DEP отключили для clw.exe?
Зарегистрирован
BBBB

**



Я люблю этот Форум!

   
Просмотреть Профиль |

Сообщений: 79
Re: Подскажите
« Ответить #221 В: 09.02.13 в 09:10:46 »
Цитировать | Править

Да, там где это делается стоит птичка напротив Включить DEP только для основных программ и служб Windows.
Зарегистрирован
Boris, Kiev.
Moderator

*****



Адепт ФБП  с 1996г.

   
Просмотреть Профиль | E-мэйл

Сообщений: 842
Re: Подскажите
« Ответить #222 В: 09.02.13 в 11:50:58 »
Цитировать | Править

on 09.02.13 в 09:10:46, BBBB wrote:
Да, там где это делается стоит птичка напротив Включить DEP только для основных программ и служб Windows.

Попробуйте выбрать второй вариант и в списке ниже укажите свой модуль клиента, который собираетесь пользовать, их там может быть несколько.
Зарегистрирован
BBBB

**



Я люблю этот Форум!

   
Просмотреть Профиль |

Сообщений: 79
Re: Подскажите
« Ответить #223 В: 11.02.13 в 10:24:24 »
Цитировать | Править

А так все запустилось, спасибо.
Зарегистрирован
BBBB

**



Я люблю этот Форум!

   
Просмотреть Профиль |

Сообщений: 79
Re: Подскажите
« Ответить #224 В: 09.12.13 в 14:36:19 »
Цитировать | Править

Подскажите, пожалуйста, как средствами clw запретить на определенном рабочем месте реакцию на раздел Формы на клиенте и возможность редактирования? То есть, разрешается только запускать Формы на сервере.
Зарегистрирован
Страниц: 1 ... 13 14 15 16 17  ...  20 Ответить | Уведомлять | Послать Тему | Печатать

« Предыдущая Тема | Следующая Тема »

Powered by YaBB 1 Gold - SP 1.3.2!
Forum software copyright й 2000-2004 Yet another Bulletin Board