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

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

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


Форум

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

Страницы: Пред. 1 ... 15 16 17 18 19 20 21 22 23 24 25 ... 95 След.
Как создать папку?
 
Цитата
Саак Шахламджян пишет:
А как создать новую директорию (папку) в системе?


MAKEDIR([имя папки])

Код
MAKEDIR("C:\testdir")
Создать XML-объект
 
Мы про БЭСТ-5 говорим ?
Вот примерчик

Код
LOCAL oXml:=HXMLDoc():New("UTF-8")
Ввод параметров с помощью QInput, Ошибка при вызове QInput
 
Цитата
Сергей Джулай пишет:
переписали следующим образом

ТОЧНО !
Я на эти грабли сам уже 3 раза наступал, забываю опять потом долго ищу.
И вот опять не вспомнил - чую только, что что-то жутко знакомое....
В итоге ушел пользоваться @Say @Get
Как добавить запись в справочник номенклатур?
 
У Вас же исходники в client лежат :)
Посмотрите в описании класса. Думаю найдете
Как добавить запись в справочник номенклатур?
 
Вот некий примерчик.
Код не я писал, но вроде как работать должен...попробуйте

Код
LOCAL cFilesPath,oMlabelRow 
LOCAL aSet, aSetKey
local oScladMlabel:=ScladMLabelList():Init()
aSet:=SaveSet()
aSetKey:=SaveSetKey()
cFilesPath:='c:\TEMP\'
netuse("TEST",cFilesPath+"TEST.DBF",,.F.)
oMLabelRow := NIL
oScladMLabel := NIL
oScladMlabel:=ScladMLabelList():Init()
oScladMlabel:NewGrupStrat:=1
oScladMlabel:Protocol:=0

TEST->(dbgotop() )
Busy(.T., "MLABEL IS PREPARING...")
do while (TEST->(!eof()))

oMlabelRow:=MlabelRow():Init()
oMlabelRow:Grup :=TEST->GRC
oMlabelRow:Nnum :=ConvToAnsiCp(TEST->NUM)
oMlabelRow:Name :=ConvToAnsiCp(TEST->NAME)
oMlabelRow:FullName :=ConvToAnsiCp(TEST->NAME)
oMlabelRow:NAMECOUNT :=ConvToAnsiCp(TEST->COUNT)
oMlabelRow:Ed :=alltrim('oo.')
oMlabelRow:CODE :=ConvToAnsiCp(TEST->ART)
oScladMlabel:AddMLabel(oMlabelRow)
TEST->(dbskip())
enddo
Busy(.F.)
oScladMLabel:LargeRun() 

RestSet(aSet)
RestSetKey(aSetKey)
Как добавить запись в справочник номенклатур?
 
Увидел попытку создать объект в памяти и наполнить его свойствами
Но нигде не увидел старт метода создать - RUN
Ввод параметров с помощью QInput, Ошибка при вызове QInput
 
Вот рабочий код переделанной функции dialog

Код
Function MyDialog( cMess, cPict, cVar, cZag, cWhen, cValid, cColBox, cRef )
   Local Ret_ := NIL, i,j, lOne:=VALTYPE(cVar)#'A'
   Local nTop, nLeft, nBottom, nRight, nLen
   Local aSet := {SaveSet()}
   Local S
   LOCAL aMess, aPict, aVar, aWhen, aValid, aRef
   Private xVar
   Private GetList := {}
ALTD()
   IF cZag == NIL
      cZag := ''
   ENDIF
   nLen := LEN(cZag)+2
   iIF(VALTYPE(cMess)#'A',cMess:={cMess},NIL)
   iIF(VALTYPE(cPict)#'A',cPict:={cPict},NIL)
   iIF(VALTYPE(cVar)#'A',cVar:={cVar},NIL)
   iIF(VALTYPE(cWhen)#'A',cWhen:={cWhen},NIL)
   iIF(VALTYPE(cValid)#'A',cValid:={cValid},NIL)
   iIF(VALTYPE(cRef)#'A',cRef:={cRef},NIL)
   IF cMess=NIL
      cMess:=ARRAY(LEN(cVar))
      AFILL(cMess,'Введите значение ')
   ENDIF
   IF cColBox = NIL
      cColBox = "N/W"
   ENDIF
   MemVar->xVar:=ARRAY(LEN(cVar))

   IF LEN(cVar)>LEN(cMess)
      aSIZE(cMess,LEN(cVar))
   ENDIF
   IF LEN(cVar)>LEN(cPict)
      aSIZE(cPict,LEN(cVar))
   ENDIF
   IF LEN(cVar)>LEN(cWhen)
      aSIZE(cWhen,LEN(cVar))
   ENDIF
   IF LEN(cVar)>LEN(cValid)
      aSIZE(cValid,LEN(cVar))
   ENDIF
   IF LEN(cVar)>LEN(cRef)
      aSIZE(cValid,LEN(cRef))
   ENDIF
   IF LEN(cVar) >20
      FOR i:=1 TO LEN(cVar) STEP 20
         aMess:={}
         aPict:={}
         aVar:={}
         aWhen:={}
         aValid:={}
         aRef:={}
         FOR j=i TO MIN(LEN(cVar),i+19)
            AADD(aMess,cMess[j])
            AADD(aPict,cPict[j])
            AADD(aVar,cVar[j])
            AADD(aWhen,cWhen[j])
            AADD(aValid,cValid[j])
            AADD(aRef,cRef[j])
         NEXT
         aVar:=MYDIALOG(aMess, aPict, aVar, cZag+' стр.'+STR(i/20+1,2,0), aWhen, aValid, cColBox, aRef )
         IF LASTKEY() = K_ESC
            EXIT
         ELSE
            FOR j=i TO MIN(LEN(cVar),i+19)
               cVar [j]:=   aVar  [j-i+1]
            NEXT
         ENDIF
      NEXT
      Ret_ := ARRAY(LEN(cVar))
      aEVAL(cVar,{|x,i|x:=x,Ret_[i]:=if(LastKey()<>K_ESC,cVar[i],BLANK(cVar[i],.T.))})
   ELSE
      Begin Sequence //ANDKOR
         nTop    := INT((MaxRow()-LEN(cVar))/2) - 1
         nBottom := nTop+LEN(cVar) + 1
         FOR i:=1 to LEN(cVar)
            Do Case
               Case ValType(cVar[i])=="C"
                    nLen := MAX(nLen,;
 X Len( cMess[i] ) + if( Empty(cPict[i]),;
 X IF(LEN(cVar[i])+Len( cMess[i] )>75,;
 X (cPict[i]:='@KS'+TRIM(STR(75-Len( cMess[i] ),2,0)),;
 X 75-Len( cMess[i] )),;
 X LEN(cVar[i])),;
 X Len( TransForm(SPACE(200),cPict[i]))) + 3)
               Case ValType(cVar[i])=="D"
                    nLen := MAX(nLen,Len( cMess[i] ) + 11)
               Case ValType(cVar[i])=="N"
                    nLen := MAX(nLen,Len( cMess[i] ) + if( Empty(cPict[i]),(cPict[i]:='9999999999999.99999',19),Len( TransForm(SPACE(200),cPict[i]))) + 3)
               Case ValType(cVar[i])=="L"
                    nLen := MAX(nLen,Len( cMess[i] ) + 4)
            EndCase
         NEXT
         nLeft   := INT((MaxCol() - nLen)/2)
         nRight  := nLeft + nLen
         SetColor(cColBox)
         ShadowBox(IF(EMPTY(cZag),"",cZag),nTop, nLeft, nBottom, nRight)
         FOR i:=1 to LEN(cVar)
            if( ValType( cMess[i] ) != "C", cMess[i] := "Введите значение", NIL )
            @ nTop+i, nLeft + 2  SAY cMess[i]
            SetCursor(SC_NORMAL)
            MemVar->xVar[i] := cVar[i]
            IF Empty (cRef[i])
             IF EMPTY(cPict[i])
                @nTop+i,nLeft+Len(cMess[i])+3 GET MemVar->xVar[i]
             ELSE
                @nTop+i,nLeft+Len(cMess[i])+3 GET MemVar->xVar[i] PICTURE cPict[i]
             ENDIF
            ELSE
             IF EMPTY(cPict[i])
                @nTop+i,nLeft+Len(cMess[i])+3 REFER cRef[i] GET MemVar->xVar[i]
             ELSE
                @nTop+i,nLeft+Len(cMess[i])+3 REFER cRef[i] GET MemVar->xVar[i] PICTURE cPict[i]
             ENDIF
            ENDIF
            if( !Empty( cWhen[i] ), ATAIL(MemVar->GetList):preblock := &('{||'+cWhen[i]+'}'), NIL )
            if( !Empty( cValid[i] ), ATAIL(MemVar->GetList):postblock := &('{||'+cValid[i]+'}'), NIL )
            ATAIL(MemVar->GetList):display()
         NEXT
         READ
         IF lOne
            Ret_:=if(LastKey()<>K_ESC,MemVar->xVar[1],BLANK(MemVar->xVar[1],.T.))
         ELSE
            Ret_ := ARRAY(LEN(cVar))
            aEVAL(cVar,{|x,i|x,Ret_[i]:=if(LastKey()<>K_ESC,MemVar->xVar[i],BLANK(MemVar->xVar[i],.T.))})
         ENDIF
      Recover USING S  //ANDKOR
      SayError('Ошибка при вводе данных')
      End Sequence //ANDKOR
   ENDIF

   RestSet( aSet[1] )

Return Ret_


Собственно тут виден пример также,как в стандарте в GET применять использование справочников

По самой теме считаю консультации Алексея Новикова абсолютно правильными.
Не увидел в начале оборота SaveSetKey() - RestSetKey()
Уверен что ошибка не связана с QINPUT
Без отладчика и более подробного кода дать ответ именно по Вашему исх. коду можно было только так, как это сделал Алексей
Как добавить запись в справочник номенклатур?
 
Цитата
Алексей Быватов пишет:
В примере:
oDoc:AddRow("00003","0000000000002","Дуб",,10)

Пример приведен для создания строк ДОКУМЕНТА по существующим номенклатурным номерам и аналитикам.

Цитата
Алексей Быватов пишет:
А если у меня приходуется "Береза", как создать такую запись в накладной прихода?

Такая аналитика должна быть до создания документа - ее следует создавать.

При установке БЭСТа в папке client(сейчас не помню точный путь) есть файлы с исходным кодом. Там есть объект и пример создания номенклатурного номера.
Выгрузка файлов dbf для банк-клиента, функция SaveKbFile выгружает в не читаемый тип DBase
 
Есть такая функция SetSix()
Перед созданием файла DBF старого формата ей можно пользоваться в БЭСТе вот так


x:=SetSix()
создаем файл
SetSix(a)

В программировании в БЭСТе это точно работает.
Попробуйте - может и Вам поможет
Создаём базу на основе старой. Непонятности и неприятности.
 
Не совсем понял причем тут программирование приложений.
Переношу тему в общую по БЭСТ-5
Как передать параметр из пользовательской формы в спецфункцию?
 
FUNCTION RunForm(nm, lVisible, aParams, oParent, lModal, nVM, bParentWindowState)
Как передать параметр из пользовательской формы в спецфункцию?
 
Пятый параметр lModal
Как передать параметр из пользовательской формы в спецфункцию?
 
Цитата
ОАО КРССУ пишет:
терминальном режиме

В терминальном режиме у меня один BDLL на всех.
Я его просто кладу и все :)

Цитата
ОАО КРССУ пишет:
А в "Приложениях пользователя" работать будет?

Нет.
Считайте что непосредственно в exe прописаны определенные формы для этого и все.
Как передать параметр из пользовательской формы в спецфункцию?
 
Цитата
ОАО КРССУ пишет:
У кнопки ModalResult, как грамотно настроить поведение формы в зависимости от значения? Выставление параметра ModalResult - mrCancel и CancelButton - bButton1 не влияет на закрытие формы, закрывает только ::close


Свойство ModalResult класса xbButton
используется только на формах с горячим вводом (Автотранспорт\ВВод маршрута, Договора\Ввод договора и т.д.)
значение mrOk - ставиться кнопке ОК
значение mrCancel - ставиться кнопке Отмена
В "простой форме" - оно не задействовано
Другими словами прочитали и забудьте эти свойства :lol: Для Вас только Close
Как передать параметр из пользовательской формы в спецфункцию?
 
Цитата
ОАО КРССУ пишет:
При компиляции проекта в BestIDE, в папке Client\Bin\Userlibs создается myform.bdll и в серверной части \Server\Data\Pro\userlibs тоже. Но при отладке программы файлы в клиентском каталоге запираются другими пользователями терминала, в результате чего проект при запуске из БЭСТ5 не обновляется

для обновления клиентских мест есть механизм сервис-паков.
Кладете туда bdll и она обновится при старте на клиентском месте
Как передать параметр из пользовательской формы в спецфункцию?
 
Прошу прощения - работал на выставке.
Цитата
ОАО КРССУ пишет:
Как взаимосвязаны программы/модули (unit.prg) и формы (form.prg), можно ли вызывать их друг из друга?

Не надо друг из друга вызывать prg
Пишете в них функции, получается некая библиотека.
Если функции не STATIC то собственно они видны и ее достаточно подгрузить, чтобы ими пользоваться. И разумеется из разных prg этими функциями можно пользоваться.
Как передать параметр из пользовательской формы в спецфункцию?
 
Цитата
ОАО КРССУ пишет:
Действительно можно попробовать уместить все в одной форме.

Делаете форму диадлога
делаете форму вторую
Пишете в тексте все как Вам надо по работе с формами.

Цитата
ОАО КРССУ пишет:
Где бы пример посмотреть?

В самом БЭСТе
Работа задачи договоров Program Files\best\Best5_34\Client\Source\xHarbour\Contract_cls.bws

Все кнопки и формы пробуйте настраивать через инспектор в настройке формы.
А Код Выполнения по кнопке уже по событию на Click и т.п.
Как передать параметр из пользовательской формы в спецфункцию?
 
Цитата
ОАО КРССУ пишет:
передачу параметров из формы в плагин и обратно

Тогда мне вот это непонятно.
Зачем для такой формы еще какой-то плдагин ?
А нельзя все как-то объединить ?
В bws вы можете собрать целую библиотеку плагинов и обменивайтесь через переменный на здоровье чем котите.

МОжет как-то на примере ?
То ли Вопрос жутко примитивный и непонятно что может быть непонятно :)
То ли я никак понять не могу: что требуется
Накопительные дисконтные карты
 
Разработка готового решения по дисконтным картам ведется для БЭСТ-5 компанией - разработчиком
Как передать параметр из пользовательской формы в спецфункцию?
 
Речь идет о штатной экранной форме в новых окнах ?
Печать счетов-фактур и Торг-12 в Приходе
 
Возьмите форму из расхода и настройте ее в приходе
При формировании новой записи основного прайс-листа НЕТ НАИМЕНОВАНИЯ
 
Цитата
Александр Гершанов пишет:
Причина оказалась в том, что файл malabel.dbf и некоторые другие файлы скопировали из папки SCLAD в корень базы данных. Интересно, что в целом блок ТОВАРЫ работал штатно.

Не интересно. Это было в БЭСте всегда.
Отдельные пользователи таким образом пытались делать единый номенклатурный справочник для нескольких БД.
Надо из программы на VBA сформированные хозоперации положить в main.dbf
 
Это вариант запуска плагина написанного в БЭСТе через командную строку.
Да в БЭСТ-4 такая возможность тоже была.
Надо из программы на VBA сформированные хозоперации положить в main.dbf
 
Цитата
Александр Гершанов пишет:
Вероятно, можно было бы произвести запись в Main.DBF и непосредственно из VBA.

Если этот скрип написан в плагине БЭСТА. :!:
Из внешних программ в БЭСТ лучше не писать в принципе ! Тем более VBA.....
Определение уровня в STRUCT
 
Цитата
ОАО КРССУ пишет:
dbseek(struct->parent_id=My_id_parent)


Вот здесь Вы пишете совершенно не то !!!
Почитайте внимательно про DBSEEK()
Сюда надо класть значение для поиска по индексному ключу
А вы кладете логическое значение которое будет либо .T. либо .F.
Скорее всего такая конструкция работать не будет. Надо именно как я Вам написал.
Там все очень просто
Вы делаете поиск по значению parent_id текущей строки
Она ссылается на строку уровнем выше и по SEEK она перейдет на ту строку.
В той строке значение будет ссылкой на следующий уровень.
Т.е. Вам надо по сути:
1, найти нужную строку по ссылке из kadry_ordmove
В найденной строке определяете на сколько уровней надо подняться и делаете SEEK по id_parent
строки на которой стоите.
И больше ничего выдумывать не требуется
Страницы: Пред. 1 ... 15 16 17 18 19 20 21 22 23 24 25 ... 95 След.