Здравствуйте!
В плагине (Бэст5) мне нужно ,по синтет.счету и коду аналитики (первый сегмент)
определить значение наименования аналитики.Причем этот сегмент привязан к системному объекту (например,"Партнеры").
1.Устанавливаю скоб в файле Group_Seg c индексом Schet .
2.Беру значение Dim_id для первого сегмента аналитики ( поле Order)
3.Устанавливаю скоб в файле Dim_anl c индексом Id,для получения значения из поля Sys_id.
А дальше возникает ,как определить что мне надо искать значение наименования партнера именно в файле Partner.dbf ,а не в каком либо
другом системном справочнике.(т.е. где находится таблица "присвоений " значений поля Sys_id и системных объектов?).
Т.е. как осуществлять дальнейшую "связку" файлов для извлечения наименования аналитики?
Здравствуйте!
Возникла необходимость запускать прием складских документв из плагина ( Бэст4).
Вот франмент кода:
Private cFile, aSet,aSetKey
dbPush()
aSet:=SaveSet()
aSetKey:=SaveSetKey()
cFile:='c:\OBMEN\PROD\docc.rar'
if !Importd(cFile)
sayandwait('Документы по каким-то причинам не приняты')
endif
RestSetKey(aSetKey)
RestSet(aSet)
dbpop()
Запускаем плагин из реестра приходных документов.
По окончании импорта выводится протокол принятых документов..
Затем появляется красное окно с ошибкой :
ERROR DBCMD/2001 Файл не открыт: DBGOTO
Как с этим бороться?
Для Бэста 5 какая работающая функция существует аналогичная IMPORTD?
Нужно ,чтобы в отчет были выведены данные по условию LEFTCOPY([DialogForm.DataSet1."CDATTR1"],1)="2"
В данном отчете к условию (стандартному) фильтра
{ фильтр на нулевые значения }
If pZero.Checked=False Then DataSet1.Params['cFilting'] := DataSet1.Params['cFilting'] + if(LENGTH(DataSet1.Params['cFilting'])<>0,' and ','')+'(KB<>0 or KP<>0 or KR<>0 or KE<>0)';
Добавляю еще одну строку:
DataSet1.Params['cFilting'] := DataSet1.Params['cFilting'] + if(LENGTH(DataSet1.Params['cFilting'])<>0,' and ','')+'LEFTCOPY(CDATTR1, 1)="2"';
Но при выводе отчета программа ругается на
Error in line 13 File ‘leftcopy.prg’ does not exist
Т.е. выражение для фильтра надо задавть как-то по другому?
Здравствуйте!
Как в плагине правильно обратиться к полю, если имя поля содержится в переменной?
Вот кусок плагина:
Private i,_text,aFieldNames,aTypes
Private aSet,aSetKey,Path_1
dbPush()
aSet:=SaveSet()
aSetKey:=SaveSetKey()
Path_1:=GlobalTmpPath+'spr_6.DBF'
NETUSE('_SPRAV',Path_1)
dbPush('_SPRAV','','',{})
//определяем структуру файла
aFieldNames:=_SPRAV->(Array(Fcount()))
aTypes:=_SPRAV->(Array(Fcount()))
_SPRAV->(AFIELDS(aFieldNames,aTypes,,))
_SPRAV->(dbgotop())
//цикл по всем полям файла
i:=1
do while i<=len(aTypes)
altd()
if aTypes[i]='C'
_SPRAV->(dbgotop())
do while _SPRAV->(RECNO())<_SPRAV->(LASTREC())+1
_text:='_SPRAV->'+aFieldNames[i]
_SPRAV->(dbskip())
enddo
endif
i:=i+1
enddo
dbpop()
_SPRAV->( DbCloseArea())
RestSetKey(aSetKey)
RestSet(aSet)
dbpop()
В данном случае выражение '_SPRAV->'+aFieldNames[i] воспринмается программой как строка,а надо как обращение к полю файла.
Заранее спасибо.
Здравствуйте!
Нигде не нашел примера как в стандартной функции Dialog() применить возможность
выбора значения из нескольких вариантов.Если вообще такая возможность?
Здравствуйте!
Для импорта данных по складским операциям в Бэст4 ("Учет товаров") из данных поставщиков используется механизм
Удаленного склада.При написания плагина проблема встала с генерацией нового номера накладной.
Столкнулся с проблемой аналогичной http://www.bestnet.ru/support/forum/index.php?PAGE_NAME=message&FID=11&TID=1660&MID=11299#message11299 Может быть у кого-то есть кусок кода который решает эту задачу?
Здравствуйте!
Плагин импортирует данные из внешней БД в Бэст4.
Бэст4 не понимает строку alltrim(SPRAV_PROD->PRODUCTNAME) ,т.к.
Длина наименование поля PRODUCTNAME больше 10 символов.
Как обойти эту проблему?
Заранее спасибо.
Здравствуйте!
Организация работает на БЭСТ4 (состав АРМ,Учет материалов,Упр.продажами,Осн.ср-ва,Касса ,Банк,Зарплата).
Планируют перейти на БЭСТ 5 бюджет Автономное гос учреждение.
Можно ли перенести данные в БЭСТ 5 так ,чтобы хотя бы сохранились персональные данные по сотрудникам,все настройки в Зарплате и виды движения в Учете материалов и номенклатурный справочник.
Такой вариант пройдет? :
1.Закрываем в Бэст 4 периоды во всех модулях.
2.Обнуляем ( удаляем ) все начальные остатки.
3.Переносим данные в Бэст5 хозрасчет
4.Переносим данные из Бэст5 хозрасчет в Бэст 5 бюджет Атономное гос учреждение
Заранее спасибо.
С уважением Габов Алексей
Здравствуйте!
Бэст4.
Можно ли и как запускать свой плагин (hrb файл) из пункта меню "Программы пользователей"? Этот файл компилировал из Бэста по F11.
В настройках прописал полный путь к нему .Запускаю из пункта меню
этот файл. Выходит Windows сообщение "не удалось открыть следующий файл".
В настройках нужно еше указывать какие-то параметры или в этом режиме вообще нельзя запускать плагин?
Заранее спасибо.
Здравствуйте!
Проблема ,вроде бы обсуждалась, но эту тему на форуме я не нашел.
Программа Бэст4.
Нижеследующий плагин работает нормально, если путь к открываемому файлу состоит из латинских символов.
Если файл,который нужно открыть находится в подпапке,имя которой содержит кириллицу,то программа ругается на отсутствие файла.Как победить?
Private aDbf,aSet,aSetKey
Private nt,nL,_do,Path,Path_1,cMaska
nt:=10
nL:=10
Path:="C:\temp\base2010\"
cMaska:={"DBF"}
dbPush()
aSet:=SaveSet()
aSetKey:=SaveSetKey()
//sayandwait("Выбираем только файлы справочников.ВЫбор осуществляется до нажатие ESC")
_do := .t.
Do While _do
If LastKey() == 27
_do := .F.
else
Path_1:=Select_Files( nT, nL, Path,cMaska)
sayandwait(Path_1)
NETUSE('_SPRAV',Path_1[1])
sayandwait(alias()+' '+Path_1[1])
_SPRAV->( DbCloseArea())
endif
enddo
RestSetKey(aSetKey)
RestSet(aSet)
dbpop()
Заранее спасибо.
Здравствуйте!
Нужно в плагине для БЭСТ 4 определять где он запускается:
на центральном комплексе или на удаленном складе.
За что можно " зацепиться".
Заранее спасибо.
Здравствуйте!
Может кто-то знает как задается условие связи ведущего и ведомого источника для секционного cross-tab в шаблоне FR для БЭСТ 4 .Через MasterSource или иначе?
Заранее спасибо.
Габов Алексей.
Здравствуйте!
В груповых справках по з/п нужно получить совокупные параметры (налог на доходы)
по конкретному ОКАТО .
На форуме нашел функцию
// Сумма по разным категориям
Function S_ITALL( cBPer, cEPer, cCtg, lOkato )
/*
cBPer - начальный период "2001.01"
cEPer - конечный период "2001.01"
cCtg - категория вида дохода/налога/льгот/вычета
В виде чего задается параметр cCtg
С уважением Габов Алексей.
Здравствуйте!
Для временной таблицы создаю несколько индексов.
Проверяю ключевое выражение с помощью indexkey().
Программа упорно "видит" ключевое выражение только
для последнего индекса DOC_2
Здравствуйте!
БЭСТ 4
Вызываю программу пользователя из книги учета хоз.операций.
Файл PLAN_SCH.DBF доступен с алиаcным именем PLAN
dbpush("PLAN","CODE")
PLAN->(ordsetfocus("CODE"))
......
dbpop()
Можно ли в программе поменять его алиасное имя на другое.
NETUSE применять нельзя, он уже открыт
Если можно,то как?
С уважением Габов Алексей
Здравствуйте!
Нужно проверить символьную переменую или значение поля перед применением функции ОЕМTOANSI() на кодировку ( DOS /WIN).
Есть ли такая функция?
Заранее спасибо.
Габов Алексей.
Здравствуйте!
Возникла необходимость создания нового номера документа,номенклатурного номера и номера партии ("Товары и готовая продукция","Учет материалов" Бэст 4 и Бэст 5 в.3.3)в процессе работы плагина.
Функцию генерации нового номера накладной нашел -NewNumDoc().
Есть ли функции для создания нового номенклатурного номера и номера партии?
Заранее спасибо.
Здравствуйте!
Не получается скомпилировать файл для Бэст 5 вер 3.3 SP 38
Выполняю все по инструкции.
1. Запустите дизайнер приложений Client\Bin\BestIde.exe. Сервер приложений должен быть запущен.
2. Выберите предприятие (Файл-Выбрать базу)
3. Далее Файл-Создать пользовательский проект. В результате создается заготовка для пользовательского проекта userlibpro.bpr. Все пользовательские проекты создаются в папке data\pro\userlibs. В состав проекта вошла программа userlibpro.prg.
4. В окне рабочей области установите курсор на программу Userlibpro.prg (Рабочая область 'userlibs.BWS' 1 - Userlibpro.BPR - Программы) и щелкните по ней мышкой. Откроется окно редактора, напишите в нем:
PROCEDURE MyTest()
SayAndWait("Hello,Best!")
RETURN
5. Нажмите F7 для компиляции. На о сохранении ответьте утвердительно. На сообщения типа "Не указаны библиотеки.." или "Нет реализации:" не обращайте . В результате в папке data\pro\userlibs создалась библиотека userlibpro.bdll, которая будет вызываться БЭСТом по мере необходимости.
6. Поставьте точку останова на строке SayAndWait: (F9 или кликнуть слева от строки).
7. Проверьте настройки пункт меню Проект-Свойства проекта. Закладка Компиляция. Необходимо установить параметры:
<Включить информацию для дебага>;
<Всегда выполнять полную компиляцию>:
<применить ко всем проектам(не перетирая их настройки)>.
8. Нажмите F7 для компиляции.
9. Запустите Best5.exe с параметром -d:
Client\Bin\Best5
Только вот п.6 никак не могу выполнить.Никак не ставится точка останова.
Галочка "соединение с Source Safe" снята.
Далее захожу в реестр накладных (Товары) по Ctrl-F5 ввожу
@MyTest и запускаю.
На экране что-то мелькает.Приветствие не выводится.
Что и куда надо еще поставить или зайти чтобы можно было запустить программку и ее отладить?
С уважением Габов Алексей
Здравствуйте!
Необходимо из Excel взять данные .
Фрагмент кода ниже.
Компиляция проходит.При пошаговом прохождении программа ругается на
строку :
If Range("A1"):SpecialCells(xlLastCell):Value = ""
Пишет: "неизвестная функция".
С помощью данной конструкции можно корректно выделить весь диапазон данных
на листе.Через макросы это работает идеально.Придумал не сам, а взял из книги по EXEL.Очень удобная штука,ни когда не подводила.
Может быть кто подскажет как ее "прикрутить"
FUNCTION EXEL_DBF ()
#include "excel.ch"
#define xlLastCell 11
#define xlByRows 1
#define xlPrevious 2
#define xlByColumns 2
LOCAL oApp,oWorkBook,oWorkSheet,oRange,cFileName
LOCAL nLine:=3,iRow
cFileName:='C:\temp\main.xls'
dbPush()
TRY
oApp := CreateObject( "Excel.Application" ) //попытка создать объект Excel
CATCH
Alert("Excel не доступен!")
RETURN .F.
END
altd()
try
oWorkBook:=oApp:WorkBooks:open(OemToAnsi(cFileName),0)
catch
alert('Ошибка открытия входного файла. Не удалось открыть файл.')
RETURN .F.
end
try
oWorkSheet:=oWorkBook:worksheets(OemToAnsi('MAIN'))
catch
alert('Ошибка открытия входного файла. Не удалось открыть лист с данными')
RETURN .F.
end
//'поиск последней заполненной ячейки на листе
oWorkSheet:Select()
If Range("A1"):SpecialCells(xlLastCell):Value = ""
Cells(Cells:Find("*", ActiveCell:SpecialCells(xlLastCell), , , xlByRows, xlPrevious):Row, Cells:Find("*", ActiveCell:SpecialCells(xlLastCell), , , xlByColumns, xlPrevious):Column):Select()
Else
Range("A1"):SpecialCells(xlLastCell):Select()
EndIf
iRow = Selection:Row
Из Бэста 4+ экспортирую данные в DBF файл,который имеет строго заданный формат.
Причем поле даты по техусловиям в нем имеет длину 8 .
У меня в файле упорно получается 10 , т.е. dd/mm/gggg
Вот фрагмент кода :
Private puth_,aDbf,aSet,aSetKey
altd()
aSet:=SaveSet()
aSetKey:=SaveSetKey()
1.Как плагине программы Бэст 5 в 3.3 sp 33 вывести для просмотра и печати содержимое текстового файла,который был создан в процессе работы плагина?
В плагине программы Бэст 5 в 3.3 sp 33 функция Str2File() работает.
А вот чем заменить функцию View() ?
2. В бэсте 4+ для получения реквизитов собственного предприятия в плагине
применялся такой код :
dbOpenBases({{'PARTNER',LoadPath()+'PARTNER.DBF'}})
IF !dbseek(LBL_OPER).AND.!dbseek("000001")
dbgotop()
ENDIF
Buh_O := If( Empty(ALLTRIM(LBL_SHEF)), ' ', ALLTRIM(LBL_SHEF))
dbCloseBases({'PARTNER'})
А для Бэста 5 в 3.3 переменные типа LBL_INNKPP уже не работают?
Где- то можно посмотреть решение данной ситуации для Бэста 5 в 3.3?
Заранее спасибо .
Габов Алексей.
Здравствуйте!
Ко мне обратился один клиент с просьбой помочь автоматизировать розничную
торговлю. Я предложил ему попробовать сделать это в рамках программы БЭСТ4.
С автоматизацией розничной торговли я раньше никогда не сталкивался.
Ситуация такая:
У клиента имеется склад товаров и несколько розничных магазинов по торговле
промышленными и продуктовыми товарами.
Учет на складе пока ведется в рамках программы 1 с.
Приемка товаров осуществляется по штрих-коду поставщика.
Необходимо чтобы при отгрузке ТМЦ со склада ( по штрих-коду ) формировалась электронная накладная, которая затем при приемке ТМЦ в магазине автоматически импортировалась в программу.
Мои соображения поэтому поводу:
1.Клиент приобретает программу БЭСТ4 в составе:
Центральный комплекс- АРМ Гл.бух,учет товаров учет гот.продукции+экспорт-импорт строк накладных,
+ ввод по штрих коду,
торговый зал ( не знаю нужен ли торговый зал в данном случае)
Удаленный филиал- Удаленный склад товаров, удаленный торговый зал и программу Атол (не знаю без какого из этих модулей
можно обойтись?),
а также фискальный регистратор.
2.Т.к приемка товара на складе осуществляется по штрих-коду поставщика, то учет ,видимо, придется делать
партионный ( цены на один и тот же товар от одного поставщика будут меняться, а номенклатурный номер – нет и соответственно надо будет менять учетную цену на складе ).
3.Не знаю как лучше автоматизировать приемку товара с помощью сканера в данном случае.
а. Подключить его в разрыв клавиатуры .Но тогда при сканирование штрих-кода поставщика
которого еще нет в базе данных БЭСТа (номенклатурном справочнике) придется каждый раз подходить
к компьютеру и вводить данные вручную.
б. Использовать мобильный сканер. Но тогда возникает следующий :
С мобильным сканером идет своя программа которая при считывании данных со сканера на компьютере
преобразует его, как правило, в текстовый файл. Значит надо написать FileEval, который преобразует
его в файл формата DBF для последующего импорта строк накладной в накладную в режиме "Импорт строк".
Подвязываем эту программку к событию в накладной "Вход в документ".
4. На складе выделяется участок фасовки товаров
На расфасованный товар клеятся этикетки с внутренними штрих-кодами ( по ним будет учитываться товар в розничной
торговле).Только не понятно как лучше сгенерировать этот штрих код ,т.е. это будет номенклатурный номер или номенклатурный номер+ еще что-то.
Кроме того если учет партионный, то учетную цену партии ( а ее вероятно удобней сделать равной
продажной (розничной) цене в магазине) при генерации штрих -кода взять негде. В шаблоне этикетки термопринтера нет параметра учетной цены партии .Получается нужно вести еще и прайс-листы. А для этой цели нужен еще модуль
"Управление продажами".
Или в шаблоне этикетки термопринтера сделать запрос на выбор партии с целью импорта из справочника партий учетной цены партии?
5. Отгрузка товаров со склада ведется по внутренним этикеткам штрих-кода.
тот же: что лучше мобильный сканер или сканер в разъем клавиатуры?
6. На событие " запись документа " в расходной накладной навешиваем FileEval для формирования "электронной накладной".
7. При приемке товара в магазине со склада используем уже "электронную накладную".
! Какой для этой операции необходим и достаточен программный модуль.
8. Магазин без самообслуживания. Продавец сам по просьбе покупателя берет с прилавка,полки товар и сканирует его,производит расчет с покупателем.
Какое для автоматизированного учета в магазине необходимо и достаточно программное обеспечение?
Атол ,вроде бы, имеет более широкий выбор сервисных возможностей.