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

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

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


Форум

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

Страницы: 1
БЭСТ-здравница, Нужна демо-версия
 
Демка давно лежит на партнерском ftp в папке Medic, с инструкцией по установке. Вопросы по установке лучше в личку или на eugeny@e7.ru
Сразу ориентируйте потенциального заказчика на то, что проку от установки программы в одной регистратуре будет не много; стоимость работающей системы будет ЗНАЧИТЕЛЬНО БОЛЬШЕ 20 т.р. С Нового Года (если имелся ввиду 2010) - не установить, за 2 дня такие системы не ставятся.
Если можно, пару слов о профиле клиента и ожиданиях. Пообщаемся, сформируем план действий. Самое главное, чтобы с вашей (партнерской) стороны было желание заниматься этой тематикой.
Ускорение печати из терминала при медленном соединении.
 
Алексей, очень может быть, что дело не в медленном соединении, т.е. не медленном "проползании" задания по каналу, а в том, что по-каким-то причинам задание долго в очереди висит. Если у Вас скорости соединения хватает на перерисовку экранов, для печати ДОС-задания её тоже должно хватать. У них объем-то мизерный, несколько кБайт/страницу. Посмотрите в диспетчере печати после отправки на печать, действительно ли это так. Вы точно не пользуетесь сервером печати? И еще, каким способом Вы цепляете принтер к серверу ( с помощью флажка "использовать локальные ресурсы" в клиенте RDP или настраиваете печать на TCP/IP порт)?
программирование Меркурий MS-K 2
 
С Меркурием не упражнялись, на Феликсе делали. Вот код, по которому чек не печатает построчно перечень товаров, но для секций 1 и 3 выделяет НДС 18% в чеке. Творчески его используйте и надеюсь, всё получится :wave:

Function Main()
local hkkm ,sum, dat, dept, doc, nds, NCheck, aMenu, aQues, p, f, s

p := LoadPath() + '!kkm.log'

if File(p) = .T.
f := FOpen(p, 1)
else
f := FCreate(p)
endif

aQues := {"ЏҐз в вм 祪?"}
aMenu := {" „ "," ЌҐв "}

nds := 0

if select('mdoc') > 0

if (empty(mdoc->DATE0) .and. upper(alltrim(mdoc->USER_CODE)) = "KASSA" .and. NoOrYes (aQues,2,aMenu) = 1)

sum := mdoc->SUMMA
dept := 2 // ‡¤Ґбм ­ ¤® ¤®Ў ўЁвм ўў®¤ ᥪ樨, «ЁЎ® Ї® Є Є®¬г-­ЁЎг¤м
// ЇаЁ§­ Єг ¤®Єг¬Ґ­в ў Ѓќ‘’Ґ (­ Їа. Є®¤ ®ЇҐа жЁЁ), «ЁЎ® Їа®бв® ¤Ё «®Ј®¬

// …б«Ё ᥪжЁп 1 Ё«Ё 3, ў 祪Ґ ўл¤Ґ«пҐвбп Ќ„‘

if dept = 1 .or. dept = 3
nds := sum*18/118
sum := sum-nds
endif


// Ё­ЁжЁ «Ё§ жЁп ®ЎкҐЄв

hkkm := CreateObject('AddIn.FprnM45')

try

hkkm:DeviceEnabled := .t.

hkkm:GetStatus()

if hkkm:CheckState() <> 0
hkkm:CancelCheck()
endif


NCheck := hkkm:CheckNumber()

hkkm:Password := "30"
hkkm:Mode := 1
hkkm:SetMode()



hkkm:Price := Round(sum, 2)
hkkm:Quantity := 1
hkkm:Department := dept
hkkm:Registration()

if dept = 1 .or. dept = 3
hkkm:Name := OemToAnsi("Ќ„‘ 18%")
hkkm:Price := Round(nds, 2)
hkkm:Quantity := 1
hkkm:Department := dept
hkkm:Registration()
endif

hkkm:TypeClose := 0
hkkm:CloseCheck()



catch
hkkm:CancelCheck()
hkkm := nil
alert('ЋиЁЎЄ ЇаЁ ЇҐз ⨠祪 !')

FClose(f)

return -1

end

hkkm:GetStatus()

if NCheck+1 == hkkm:CheckNumber()
mdoc->(dbrlock())
mdoc->DATE0 := Date()
mdoc->(dbcommit())
mdoc->(dbunlock())
else
hkkm:CancelCheck()
alert('ЋиЁЎЄ ЇаЁ ЇҐз ⨠祪 !!!')
endif

hkkm := nil

FSeek(f, 0, 2)
s := 'Џа®¤ ¦ ! „ в : '+dtos(date())+', —ҐЄ: '+str(NCheck)+', ‘ҐЄжЁп: '+str(dept)+', ‘㬬 : '+str(Round(sum, 2)+Round(nds, 2))+CHR(13)+CHR(10)
FWrite(f, s, len(s))

FClose(f)

endif

endif

return 0
программирование Меркурий MS-K 2
 
Как внешние модули подключаются в 5-ке, обсуждалось здесь: http://www.bestnet.ru/support/forum/index.php?PAGE_NAME=read&FID=11&TID=159&MID=s

Код для снятия Х-отчета:
Function Main()
local hkkm, pass

pass:=DIALOG("Пароль администратоа :","99",0)

hkkm := CreateObject('AddIn.FprnM45')

try

hkkm:DeviceEnabled := .t.
hkkm:CancelCheck()
hkkm:ResetMode()
hkkm:Password := str(pass)
hkkm:Mode := 2
hkkm:SetMode()
hkkm:ReportType := 2
hkkm:Report()
hkkm:ResetMode()

hkkm := nil

catch
hkkm := nil
alert(Ошибка при печати X-отчета !')
return -1
end

return 0

Для снятия Z-отчета:
Function Main()
local hkkm, pass

pass:=DIALOG("Пароль администратора :","99",0)


hkkm := CreateObject('AddIn.FprnM45')

try

hkkm:DeviceEnabled := .t.
hkkm:CancelCheck()
hkkm:ResetMode()
hkkm:Password := str(pass)
hkkm:Mode := 3
hkkm:SetMode()
hkkm:ReportType := 1
hkkm:Report()
hkkm:ResetMode()

hkkm := nil

catch
hkkm := nil
alert('Ошибка при печати Z-отчета !')
return -1
end

return 0


Естественно, пароль администратора можно убрать из диалога и проставить жестко.
программирование Меркурий MS-K 2
 
Костя, автор темы по-моему, не об этом спрашивал, а как пошагово привинтить это к работаюшему БЭСТУ.

В какой БЭСТ требуется это поставить, в 4 или 5? В четверке по шагам это делается так:

1. Складываем файлик с кодом, который называется, к примеру, u_kkm.prg, по пути ...\pro\plugins\source\sclad . Желательно, чтобы его название начиналось на "u", тогда при очередном апгрейде БЭСТа всё корректно переедет в новую версию.
2. В реестре накладных жмем <Ctrl-F5>, появляется окно "специальные функции".
3. Внизу подсказка "F11 - среда программиолвания", жмем <F11>, выбираем наш модуль. Далее <F2> - компиляция, после которой исполняемый код ( файл с типом .hrb) попадет по пути ...\pro\plugins\extensions\sclad
4. Выходим через <esc> до окна "специальные функции" и описываем вызов файла "U_kkm.hrb". Я считаю, удобнее сделать вызов на событие "сохранение" или "проверка документа", зачем оператору каждый раз <Ctrl-F5> давить?
5. Собственно всё. X- и Z-отчеты можно снимать непосредственно из панели управления драйвером. Если продавцов туда страшно пускать, могу здесь же выложить код для этих дел для привязки по <Ctrl-F5>
6. Более подробно об этих инструментах (харборе) написано в разделе "О программе. Программирование в БЭСТ"
программирование Меркурий MS-K 2
 
Код может быть примерно таким:

Function Main()
local ss,gg,ml,hkkm

if select('MDOC') > 0 .and. select('MDOCM') > 0

if empty(mdoc->date0)

mdoc->(ordsetfocus('MDOC'))
mdocm->(ordsetfocus('MDOCM'))
mlabel->(ordsetfocus('MLABEL'))

ss := mdoc->sclad + mdoc->vid + mdoc->type
ss := ss + mdoc->codedoc + mdoc->numdoc + dtos(mdoc->date)
ss := upper(ss)
gg := ss

if mdocm->(dbseek(ss))

hkkm := CreateObject('AddIn.FprnM45')

try

hkkm:DeviceEnabled := .t.
hkkm:CheckState()
hkkm:CancelCheck()
hkkm:Password := '1'
hkkm:Mode := 1
hkkm:SetMode()

do while !mdocm->(eof()) .and. (ss == gg)

if mlabel->(dbseek(upper(mdocm->grup + mdocm->nnum)))
ml := mlabel->name
ml := rtrim(ml)
do while len(ml) > 19
hkkm:Caption := OemToAnsi(left(ml, 19))
hkkm:PrintString()
ml := substr(ml, 20)
enddo
hkkm:Name := OemToAnsi(ml)
else
hkkm:Name := '?'
endif
hkkm:Price := Round(mdocm->Cenaout, 2)
hkkm:Quantity := Round(mdocm->Kolout, 3)
hkkm:Department := 1
hkkm:Registration()

mdocm->(dbskip())
ss := mdocm->sclad + mdocm->vid + mdocm->type
ss := ss + mdocm->codedoc + mdocm->numdoc + dtos(mdocm->date)
ss := upper(ss)
enddo

hkkm:TypeClose := 0
hkkm:CloseCheck()
hkkm := nil

catch
hkkm:CancelCheck()
hkkm := nil
alert('ЋиЁЎЄ ЇаЁ ЇҐз ⨠祪 !')
return -1
end

mdoc->(dbrlock())
mdoc->date0 := Date()
mdoc->summa0 := mdoc->summa
mdoc->(dbcommit())
mdoc->(dbunlock())

endif

endif

endif

return 0

Код рассчитан на работу с драйвером АТОЛ, он для "Меркуриев" бесплатный, http://www.atol.ru/products/programs/trade-work/driver/driver-kkm/

В приведенном примере в чек выводятся построчно наименования товаров из накладной, НДС не выделяется, регистрация всегда идет через секцию 1, поле mdoc->date0 используется для защиты от повторнной печати чека при пересохранении документа.
Нужен способ запретить ввод документа
 
Коллеги, может ли кто-нибудь подсказать изящный способ запретить ввод документа, не удовлетворяющего определенному набору требований?
Например, операторам запрещено при вводе накладной по складу NNNNN использовать типовую операцию MMMM или тип документа KKK.
Вешаем на формулу расчета суммы проводки или на событие "запись документа" какой-нибудь FileEval, который обнаружил запретное условие, выдал предупреждение, а потом не дал сохранить документ.
Допустимо аварийное завершение сессии с БЭСТом, только так, чтобы базы и индексы не страдали :funny:
Речь о БЭСТ 4+.
Локальный LPT1: в терминальном подключении, LPT2, LPT3 - пожалуйста, а LPT1 - никак
 
Цитата
Алексей Новиков пишет:
Не удаётся подключить таким образом lpt1:. Ошибка 5 - отказано в доступе. Остальные lpt - без проблем.


Алексей, проблема скорее всего связана с тем, что несмотря на отсутствие подключенных к LPT1 на сервере принтеров, сам порт в системе аппаратно существует (можно посмотреть в списке устройств). Поэтому система его запрещает мэпировать. Можно в CMOS отключить интегрированный LPT порт, тогда получится его определить его по сетевому пути.
Страницы: 1