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

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

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


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 ... 48 49 50 51 52 53 54 55 56 57 58 ... 95 След.
Структура main.dbf, БЭСТ5
 
Цитата
Александр Батищев пишет:
Да, Харбор штука шустрая, мне и удивительно, что в базе всего 350000 проводок и такое "проседание" по скорости.


Мне тоже когда-то было удидивительно и я был таким же.
Также не понимал Сан Саныча.
Я сегодня специально еще раз пробежался по исходникам CR и DR.
У меня после псевдобейсика БЭСТ-4 есть некий осадок, но я там вижу скоб Сан Саныча причем сходу.И сразу понимаю что подход неграмотным назвать нельзя.

Тут Вопрос оптимизации анализа множества условий.
Причем каждый пункт расчета нельзя сказать, что Плохо продуман....
Да, в примитивном случае можно наложить скоб и будет все быстро, но потом у кого то высняется что в 1 случае из 1000 бывает вот такая ситуация, у другого другая и универсальность бывает расплатой за скорость. Оптимизация кода вещь непростая и не всегда понятно:
- то ли код не оптимизирован, то ли тот кто просит упростить - не все свои варианты просчитал....
Таким образом порой действительно именно плагин под Заказчика бывает,что это правильное решение, потому что общее решение трогать нельзя под кого-то индивидуально.
Вот такие тонкости приходится КБ постоянно учитывать

Я даже пытался найти кусок кода который можно дополнительно выложить, к тому, что есть в общей поставке и понял, что и этого не смогу предоставить - потому что это не одна функция - это сразу целая библиотека функций увязанных друг с другом....
Казалось бы примитивная задача внутри представляет достаточно сложный механизм.

Поэтому вывод один - если будете делать свой скоб, просто постарайтесь все предусмотреть, применительно к Заказчику, но Ваш плагин может оказаться очень шустрым применительно к конкретной задаче. Если добавляете строки - используйте ADDREC() - эта штатная функция невидимо от Вас сама заполняет ключевые гуиды.
Никаких append из клиппера - там именно уже продумано.
Но гуидов как оказалось бывает много и их иногда надо создавать, как написал Сан Саныч, я сходу не написал - потому что сомневался: а надо ли....

P.S. Прошу все мои ответы принимать за желание помочь. У меня не всегда как у Сан Саныча получается сходу видеть ответ и сходу понять суть Вопроса,но тем не менее моя задача разгрузить шефа от повседневных вопросов, поэтому на мои глупые Вопросы просьба не обижаться.К тому же тут очень сильно помогают Алексей Новиков и Евгений Ильин, иногда помогает Денис. Ответы грамотные, профессиональные.
За это ребятам пользуясь случаем мой низкий поклон.
Если что,Сан Саныч сам впишет правильный ответ.
Программирование в БЭСТ 5, Связь между системным сегментом и файлом dbf
 
Сан Саныч уже пообещал запрос отключить, а вот почему банк данных столько строится ?
Это на базе в 300 тысяч проводок ?
Запускаете задачу локально на сервере?
В это время еще какие-то задачи крутятся ?
Структура main.dbf, БЭСТ5
 
Цитата
Александр Батищев пишет:
Заметили ещё одну особенность: в случае использования DR и CR на сервере отчёт отчёт формировался за 5-7 минут, а на клиенте более 40 и выключили не дождавшись...

Характерный случай неоптимизированного сервера под файл-серверные потребности БЭСТа.
Обычно при такой ситуации мы давали системную администратору задачу, чтобы скорость работы по сети не уступала локальной существенно.
Не знаю над чем он там колдовал, но в итоге скорость работы что локально, что по сети были примерно одинаковые.
Структура main.dbf, БЭСТ5
 
Цитата
Александр Батищев пишет:
Харбор, потому что, база большая, 352503 проводки и пользователей 53 человека будет. Хотя для SQL, это не объём должен быть...

Хочу развенчать миф про SQL, потому как наши программисты в нем постоянно "варятся"
Могу сразу сказать скорость работы харбора настолько высока, что нам удавалось обеспечить работу до 200 мест, в то время как на SQL-платформах специалисты с опаской оценивают объемы при работе 100 пользователей...
Никакого бешеного прироста в скорости на том же объеме SQL на самом деле не даст, а при грамотном проектировании. Прироста добиться можно, но зачастую можно оказаться медленнее :) Все зависит от конкретной задачи и способов ее решения.
Разница тут скорее не харбор- SQL, а формат хранения данных. Один рассчитан на большой объем, другой нет.

В свое время Александр Гершанов обращался с вопросом, что у него в базе было около миллиона проводок и мне доводлилось доказывать что харбор умеет работать с таким массивом очень быстро. Так что 300 тысяч для харбора это не размер :)

В функциях которые Вы критикуете, применяется именно скоб и работают они не медленно, а если использовать банк данных, то практически моментально. Но они написаны не конкретно под Вашу задачу, они написаны для большого числа вариантов ситуаций.
Ускорить решение можно только путем упрощения задачи под частный случай, но при этом следует помнить, что могут быть подводные камни, которые на тестовых примерах вы не увидите...(что вероятно и вызывает сомнение у Сан Саныча в том, что у вас получится лучше)
Структура main.dbf, БЭСТ5
 
Цитата
Александр Батищев пишет:
описания полей я читаю..., а спрашиваю, потому что, непонятно написано... и Вопрос возник не на пустом месте, и вообще если Вы такой опытный и умный, то дайте ссылку где почитать и не устраивайте выпендрёж.


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

Если в БЭСТе что-то неудобно сделано, нам необходимо четкая аргументация что, почему и зачем, в какой ситуации и по какой причине это имеет место. И это тоже нормально. Критика нужна в конструктивной форме, иначе она не имеет смысла.

Насчет документирования и подсказок.
Если пользователю что-то непонятно написано - то интересно всегда знать что конкретно.
Бывает, что люди не читают и узнают тут (на форуме) где почитать.

На все остальное Сан Саныч Вам написал.
Списки в Сбербанк в формате Excel для БЭСТ-4
 
И у меня такой же индексный ключ. Так что от пакета это не зависит.
И по исходному коду как видите он ищет....
У меня фамилия прекрасно передаются, на чем искать проблему не вижу....
Могу только этот файл предложить открыть заново и сделать по нему поиск.
Но думаю что у вас будет тоже самое.
Дублирование строк заказа
 
Однозначно индексные файлы строк заказа.
При сбитом индексе строки новые создаются, после реиндексации старые подключаются дополнительно к новым.
Терминал-сервер ?
Списки в Сбербанк в формате Excel для БЭСТ-4
 
Задача с форматом стобцов была вылечена следующими исправлениями.
1.В массиве aWide при объявлении поставлены такие значения:
Код
{5,24,11,11,11,10,10}

2.В раздел "столбцы" в самый конец добавил 2 строчки
Код
oAS:columns("B:B"):Rows:NumberFormat = "@"
 oAS:columns("F:F"):Rows:NumberFormat:=REPLICATE("#",10)+"0"+cDecSep+REPLICATE("0",2)


Исправленый исходный текст и откомпилированную версию сейчас перевыложу
Списки в Сбербанк в формате Excel для БЭСТ-4
 
По поводу связи с cardspri я не стал время тратить на установку индексных ключей, потому как у меня в демобазе он итак стоит с нужным индексом.
Я все тестирую на 53 пакете - посмотрите по ALT_INS на cardspri у вас и на его текущий индексный ключ в этой точке программы.
Списки в Сбербанк в формате Excel для БЭСТ-4
 
Замечания принимаются без проблем
1.У меня работает на моей демобазе с фамилией,именем,отчеством.
2.ФОрматирование колонок добавить это не проблема, давайте поправлю
3.Сумма у меня тоже нормально отображается.
Есть подозрение что для разных Excel надо подгонку делать.
Исходный текст я разместил, могу подсказать как прямо в нем поправить.
Структура main.dbf, БЭСТ5
 
Ну вот одно из последствий,короче это поле однозначно важное и ему подобные тоже.

Хочется спросить: а само описание назначения полей в БЭСТе Александр читает ?
Структура main.dbf, БЭСТ5
 
val_id - Гуид Валюты, если Вы зполняетет сами то он обязателен разумеется !!!
Иначе проводка не будет знать по какой валюте она живет, последствия думаю не изучал никто.

idmain - гуид связи с банком данных.
Думаю что он создается в момент расчета банка данных и Вам это поле никак не заполнить да и не надо.

А если сделать через импорт проводок штатными средствами - то Вы собственно увидите все поля, которые нужны, поглядев на эту запись через FoxBro
Структура main.dbf, БЭСТ5
 
Давайте уточним как Вы хотите делать генерацию проводок - самостоятельно или штатными средствами ? Т.е. как Вы это делаете ?
Программирование в БЭСТ 5, Связь между системным сегментом и файлом dbf
 
Штатные функции вы менять не можете.
Могу предложить описание кода на базе которого Вы создадите свой, но при изменении идеологии программы штатный код изменится, а Ваш нет.....
Хочется понять чем они Вам мешают, ведь расчет не обязателен вроде как или я не прав ?
перечисление в банк в БЭСТ 4
 
Ваша просьба выполнена.
Прочитать как еескачать и настроить можно здесь
Ссылка на решение
Списки в Сбербанк в формате Excel для БЭСТ-4
 
Код
#include "excel.ch"
#define xlBottom -4107
#define PeriodToD(_p)     CToD("01/" + Right(_p, 2) + "/" + SubStr(_p, 3, 2))
#define A_ISKOP           If(CURR_MAIN > 0,, 1)

FUNCTION SBER()
   Local aSet,aSetKey
   Local cRange,cStrSum,aWide:={5,24,11,11,11,10,10}
   Local cCode:=_field->code,cName:=_field->NAME
   Local cPartner:=Any("Partner", "CODE",Upper(_FIELD->PARTNER), "SHORTNAME")
   Local cLb_name:=Space(6) + AllTrim(LBL_NAME) + "  за " +;
                 Lower(CMonth(PeriodToD(S_PERIOD))) + " " +;
                 Left(S_PERIOD, 4) + " г."
   Local cHead1:=_FIELD->HEAD1
   Local cHead2:=_FIELD->HEAD2
   PRIVATE cRang,i,cDecSep,cNomer:=1,nAllSum:=0
   PRIVATE oWorkBook,oApp,oAS,nKol,cMacro,aName,nRow,nRow0,nRow1,cString,cBuffer
ALTD()
   If !FindRec("Rectranc", "01", Upper(cCode))
    SayError("Список " + cCode + " пуст!", 15)
    Return ({0,0})
   EndIf

   If _FIELD->STATUS == "1"
    SayError("Список " + cCode + " не расчитан!", 15)
    Return ({0,0})
   EndIf

   aSet:=SaveSet()
   aSetKey:=SaveSetKey()

   DBPush("Rectranc", "01", "SUM>0", {"Upper(CODE)", Upper(cCode),, {"01"}})

   aName:={"cNomer","RECTRANC->NFACC","CARDSPRI->FAM","CARDSPRI->NAME","CARDSPRI->PATR",;
           "RECTRANC->SUM"}

   cBuffer:=""
   cMacro:=""
   IF !EMPTY(aPars).AND.LEN(aPars)=7
      FOR I:=1 to 7
         aWide[i]:=aPars[i]
      NEXT
   ENDIF
ALTD()
   If !rectranc->( DBGOTOP() )
    SayError("В списке " + cCode + " все строки с нулевой суммой!", 15)
    DBPOP()
    RestSetKey(aSetKey)
    RestSet(aSet)
    Return ({0,0})
   EndIf

   TRY
     oApp := CreateObject( "Excel.Application" )
   CATCH
      Alert("Excel не доступен!")
      RETURN .F.
   END

   oApp:Visible := .T.
   oApp:screenUpdating:=.T.
   oApp:displayAlerts:=.T.
   oWorkBook:=oApp:WorkBooks:Add() 
   oAS:=oWorkBook:Worksheets():Add()

   oAS:Activate()
   cDecSep:=oApp:International(xlDecimalSeparator)
   oApp:calculation:=xlCalculationManual
   oAS:Cells:Font:Name := "Courier New"
   oAS:Cells:Font:Size := 8
   oAS:Name:=OemToAnsi("Список в сбербанк")
   FOR I:=1 to 8
      cRange:="A"+STR(i,1)+":G"+STR(i,1)
      oAS:Range(cRange):MergeCells:=.F.
      oAS:Range(cRange):Merge()
   NEXT
   oAS:Range("A1:G1"):HorizontalAlignment:= xlCenter
   oAS:Range("A1:G1"):Font:Bold:=.T.
   oAS:Range("A1"):Value:=OemToAnsi(ALLTRIM("СПИСОК N " + cCode + " " + cName))
   oAS:Range("A3"):Value:=OemToAnsi(Space(6) + "поданных в "+cPartner)
   oAS:Range("A4"):Value:=OemToAnsi(cLb_name)
   oAS:Range("A6"):Value:=OemToAnsi(cHead1)
   oAS:Range("A7"):Value:=OemToAnsi(cHead2)

//столбцы
   oAS:Range("A9"):Value:=OemToAnsi("№ п/п")
   oAS:Range("B9"):Value:=OemToAnsi("Лицевой счет")
   oAS:Range("C9"):Value:=OemToAnsi("Фамилия")
   oAS:Range("D9"):Value:=OemToAnsi("Имя")
   oAS:Range("E9"):Value:=OemToAnsi("Отчество")
   oAS:Range("F9"):Value:=OemToAnsi("Сумма")
   oAS:Range("G9"):Value:=OemToAnsi("Примечание")
   cRange:="A9:G9"
   oAS:Range(cRange):Borders(xlEdgeLeft):Weight:= xlThin
   oAS:Range(cRange):Borders(xlEdgeTop):Weight:= xlThin
   oAS:Range(cRange):Borders(xlEdgeBottom):Weight:= xlThin
   oAS:Range(cRange):Borders(xlEdgeRight):Weight:= xlThin
   oAS:Range(cRange):Borders(11):Weight:= xlThin
   oAS:Columns("A:A"):ColumnWidth:= aWide[1]
   oAS:Columns("B:B"):ColumnWidth:= aWide[2]
   oAS:Columns("C:C"):ColumnWidth:= aWide[3]
   oAS:Columns("D:D"):ColumnWidth:= aWide[4]
   oAS:Columns("E:E"):ColumnWidth:= aWide[5]
   oAS:Columns("F:F"):ColumnWidth:= aWide[6]
   oAS:Columns("G:G"):ColumnWidth:= aWide[7]
   oAS:columns("B:B"):Rows:NumberFormat = "@"
   oAS:columns("F:F"):Rows:NumberFormat:=REPLICATE("#",10)+"0"+cDecSep+REPLICATE("0",2)

   FOR i:=1 TO 6 //по колонкам идем
      cMacro+=IF(i=1,"","+")
      cMacro+="MY_XXTOC("+aName[i]+")+CHR(9)"
   NEXT
   cMacro:=SUBSTR(cMacro,1,LEN(cMacro)-6)+"CHR(13)+CHR(10)"
   nRow1:=nRow0:=nRow:=10
//заполняем строки таблицы   
   RECTRANC->(DBEVAL( {||str_excel()} ) )
   IF LEN(cBuffer)>0
       Wvt_SetClipBoard(cBuffer)
       oAs:Cells(nRow0,1):Select()
       oAS:Paste()
   ENDIF
ALTD()
   cRange:="A"+ALLTRIM(STR(nRow))+":E"+ALLTRIM(STR(nRow))
   oAS:Range(cRange):MergeCells:=.F.
   oAS:Range(cRange):Merge()
   oAS:Range("A"+ALLTRIM(STR(nRow))):Value:=OemToAnsi("Итого")
   oAS:Range("F"+ALLTRIM(STR(nRow))):Value:=nAllSum

//рисуем подвал
   nRow++
   FOR i:=nRow TO (nRow+3)
      cRange:="A"+ALLTRIM(STR(i))+":G"+ALLTRIM(STR(i))
      oAS:Range(cRange):MergeCells:=.F.
      oAS:Range(cRange):Merge()
   NEXT
   oAS:Range("A"+ALLTRIM(STR(nRow))):Value:=OemToAnsi(Space(6) + "Итого перечислено на сумму - " + LTrim(TransForm(nAllSum, RDFLOAT)))
   cRange:="A"+ALLTRIM(STR(nRow))+":G"+ALLTRIM(STR(nRow))
   oAS:Range(cRange):Borders(xlEdgeLeft):Weight:= xlThin
   oAS:Range(cRange):Borders(xlEdgeTop):Weight:= xlThin
   oAS:Range(cRange):Borders(xlEdgeBottom):Weight:= xlThin
   oAS:Range(cRange):Borders(xlEdgeRight):Weight:= xlThin
   nRow++
   cStrSum := NumToRus(nAllSum, GlobalValuta, A_ISKOP)
   oAS:Range("A"+ALLTRIM(STR(nRow))):Value:=OemToAnsi(SPACE(6)+cStrSum)
   nRow++
   oAS:Range("A"+ALLTRIM(STR(nRow))):Value:=OemToAnsi(Space(6)+"Руководитель........:  /            /  " +LBL_BOSS)
   nRow++
   oAS:Range("A"+ALLTRIM(STR(nRow))):Value:=OemToAnsi(Space(6) +"Главный бухгалтер...:  /            /  " + LBL_SHEF)
   cRange:="A"+ALLTRIM(STR(nRow))+":G"+ALLTRIM(STR(nRow))
   oAS:Range(cRange):Borders(xlEdgeLeft):Weight:= xlThin
   oAS:Range(cRange):Borders(xlEdgeTop):Weight:= xlThin
   oAS:Range(cRange):Borders(xlEdgeBottom):Weight:= xlThin
   oAS:Range(cRange):Borders(xlEdgeRight):Weight:= xlThin

   oAs:Range("A1"):Select()
   oApp:screenUpdating:=.T.
   oApp:calculation:=xlCalculationAutomatic
   oApp:displayAlerts:=.T.
   oApp:Visible := .T.

   DBPOP()
   RestSetKey(aSetKey)
   RestSet(aSet)
RETURN NIL

FUNCTION MY_XXTOC(uVal)
LOCAL cType:=VALTYPE(uVal),cFstr
DO CASE
   CASE cType = "N"
   cFStr := IF(uVal=0,"",STRTRAN(ALLTRIM(STR(uVal,19,4)),".",cDecSep))
   CASE cType = "D"
   cFStr := DTOC(uVal)
   CASE cType = "L"
   IF uVal
      cFStr := "True"
   Else
      cFStr := "False"
   EndIF
   CASE cType = "U"
   cFStr:=""
   OTHERWISE
   cFStr:=TRIM(uVal)
ENDCASE
RETURN cFstr

FUNCTION str_excel()
   Local nRec:=CARDSPRI->( RECNO() )
      CARDSPRI->(DBSEEK(UPPER(RECTRANC->TNUM)))
      IF nRow>nRow0
         oAS:Rows(nRow-1):Insert(xlDown)
         oAS:Rows(nRow):Copy(oAS:Rows(nRow-1))
      ENDIF
      cString:=&(cMacro)
      nAllSum+=RECTRANC->SUM
      cBuffer+=cString
      nRow++
      cNomer++
      IF LEN(cBuffer)>60000
         Wvt_SetClipBoard(cBuffer)
         oAs:Cells(nRow0,1):Select()
         oAS:Paste()
         cBuffer:=""
         nRow0:=nRow
      ENDIF
      CARDSPRI->( DBGOTO(nRec) )
RETURN NIL
Списки в Сбербанк в формате Excel для БЭСТ-4
 
Ниже приводится исходный код плагина.

Описание решения:

Предназначено для режима:
Зарплата -> Выходные формы -> Списки и справки -> Списки в сбербанк
Подключение задачи:
1.Скачиваем прикрепленный файл usber.hrb
2.Кладем его в папку PRO\PLUGINS\EXTENSNS\SALARY
3.В указанном выше режиме подключаем:
- нажимаем CTRL_F5
- нажимаем F4
- заполняем:
- Наименование : Списки в сбербанк в Excel
- Имя файла : usber.hrb
- Параметры : Можно не заполнять
Примечание
В параметрах можно указать собственную ширину столбцов отчета
Например: 7,14.5,12,12,12,8,17
Число параметров должно быть строго 7 !!!
- Вызов : По требованию
4.Способ применения:
В верхнем окне заголовков списков нажимаем CTRL_F5 и запускаем настроенное по п.3 решение.
Использование переменных nNumber и nKOLSTROK в HFILEEVAL
 
При работе с пометками в гриде:

1.Применяем MetaBo
2.создаем в списке FieldList переменную X_ISMARK_
и пометки уже работают
3.Для того чтобы встать на первую помеченную строку применяем метод
markfirst() - он вернет номер первой помеченной строки
marknext() - возвращает номер следующий, как только вернул 0 - значит, что больше строк помеченных нет
Печать отмеченых записей
 
Цитата
Юля Хисамова пишет:
Добрый день!
У нас БЭСТ4+. Тоже очень нужно печатать отмеченные записи в накладной и прайс-листе.
Если реализовывать через HFileEval, где Формируется временная таблица, в которую сбрасываются отмеченные записи? Где расположена и как называется чтобы подключится?

Временную таблицу вы создаете сами средствами харбора.
Поскольку она временная ее стараются размещать во временных папках своих или по умолчанию.
Все это организуется средтсвами функции WinReport.
Ее описание есть в описании по программированию в БЭСТе, которое при установке БЭСТа размещается в папке news
Как можно реализовать функцию Сторно авансов в Книге покупок??? Срочно, БЭСТ 5 3,3 сп 45
 
Перейти на версию 3.4.....
перечисление в банк в БЭСТ 4
 
А Вы можете взять Exel-файл, в котором надо мелочи поправить,
внести Ваши попправки, отметить сделанные изменения цветом и дать его мне ?
Списание и экспорт остатков, пакетно
 
1.В картотеке ALT-X - в Excel
2.Приводим столбцы к стандарту импорта строк
3.Импорт строк в накладную
Неудачная попытка скомпилировать файл в Бэсте 5 вер 3,3 SP 38
 
Настройте пути в проекте.
Неудачная попытка скомпилировать файл в Бэсте 5 вер 3,3 SP 38
 
Да,кстати bdll-файл должен лежать в client\bin
Проверьте его наличие и дату его последнего изменения
Неудачная попытка скомпилировать файл в Бэсте 5 вер 3,3 SP 38
 
Вы его не закрываете ?
При старте приложения в окно сами руками переключаетесь ?
Страницы: Пред. 1 ... 48 49 50 51 52 53 54 55 56 57 58 ... 95 След.