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

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

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


Форум

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

Страницы: Пред. 1 2
как отключить отображение страницы TfrPage ?
 
Печатная форма по F12.
свойство первой страницы Page1.Type имеет значение ptDialog (это форма диалога).
Другие страницы Page1 Page2 - это простые страницы с данными и masterdata и свойство "Type" у них - ptReport.
Каким выражением можно отключать или не отображать страницу по определенному условию
код
Код
If n > 1 then Page2.Type:=ptDialog
не работатет так как ptDialog это логическое значение.
Как можно отключить страницу?
Требуется что-то типа Page2.Visible:=False
источник данных в виде самостоятельного SQL-запроса
 
Цитата
Рекомендую Вам при создании данного массива сортировать его в указанном порядке.

а как сортировать массив?
если у меня например в источнике данных STROKI так расположены:
склад___группа___номерТМЦ
99_______1000______102___
95_______1000______102___
99_______1000______102___
96_______1000______102___
95_______1000______102___

а мне надо сортировать по складам чтобы потом можно было группировать по ним

пока же мне приходится по каждому складу создавать отдельный массив и потом в нужной мне посдедовательности эти массивы складывать в общий массив, который у меня в последствии будет источником данных для MASTERDATA1
источник данных в виде самостоятельного SQL-запроса
 
Новая задача - группировка по складам при печати из заказа
(управление продаж - реестр заказов)
Группировка в фастрепорте - не группировка, а только разделение списка ТМЦ при смене значения условия группировки, то есть существующей группировкой можно пользоваться только если изменить сортировку в соответсвии с условием группировки

не совсем понятно по второму пункту
Цитата
2. В секции MasterData Вы устанавливаете виртуальный источник, и определяете количество этикеток, которое будет выводитмся:
Код<имя_MasterData>.DataSource := nI;
nI := 0;
В MasterData1 устанавливаю виртуальный источник
но в поле количество строк кроме цифр не могу ничего другого поставить
в частности не принимает nI
поставил просто единицу - 1
и еще - где именно нужно разместить код
Код
MasterData1.DataSource := nI;
nI := 0;

разместил пока в MasterHeader1-OnBeforePrint

как теперь можно отсортировать массив в нужном порядке
например = склад+группа+номер+партия

можно ли в fastreport'е использовать двумерный массив - получилась бы та же таблица
может и сортировать можно было бы тогда по строкам массива

или лучше будет на этапе заполнения массива заполнять сразу несколько массивов для каждого склада отдельно
Печать из спецфункции
 
где именно в зарплате и в какой печатной форме можно посмотреть как это практически реализовано?
Запрос в Дизайнере отчетов БЭСТ4
 
такая же задача с группировкой по складам при печати из заказа
(управление продаж - реестр заказов)

но группировка в фастрепорте - не группировка, а только разделение списка ТМЦ при смене значения условия группировки
то есть существующей группировкой можно пользоваться только если изменить сортировку в соответсвии с условием группировки

каким образом можно изменить сортировку в источнике данных STROKI ?

либо дайте образец печатной формы с сортировкой с помощью массивов

пока дополнительный источник данных SQL-запрос
Код
SELECT
rbookm.sclad as код_склада,
rbookm.dopcode as ном_док,
rbookm.grup as группа,
rbookm.nnum as номер,
rbookm.partia as код_партии,
rbookm.kol as количество,
mlabel.name as наименование_ТМЦ,
spr_part.name as имя_партии
FROM real\rbookm as rbookm
LEFT JOIN sclad\mlabel as mlabel on (rbookm.grup=mlabel.grup and rbookm.nnum=mlabel.nnum)
LEFT JOIN sclad\spr_part as spr_part on (rbookm.grup=spr_part.grup and rbookm.nnum=spr_part.nnum and rbookm.partia=spr_part.code)
Where rbookm.dopcode=:номер_заказа
Order by код_склада,группа,номер,код_партии

в свойствах SQL-запроса ставим
params
номер_заказа=[DialogForm.shapka."Номер_заказа"]
источник данных в виде самостоятельного SQL-запроса
 
С SQL-запросом пока ничего не получилось.
Обошлись спецфункцией которая готовит DBF-файл, на базе него создаётся источник данных
с помощью WINREPORT выводим на печать
(за образец был взят пример C:\B4_PLUS\pro\plugins\source\main\fe_prnal.prg)
Код
private aStruTMP,cFileTMP,cNameTMP,aStru,cFile,cName,cTemplate
PRIVATE aSetKey
// путь к шаблону win-печати
cTemplate:='sclad\\TEMPLATE\\strixkod.frf'

// Сохраняем привязанные к клавишам функции
   aSetKey:=SaveSetKey()

//Cохраняем текущее состояние (текущую рабочую область, 
//установленный индекс и фильтр, текущий номер записи).
  DBPUSH() 

// массив для описания структуры DBF файла необходимого для создания источника данных BEST4+
bda.s_maker SHAPKA STROKI
aStru := {}
  aAdd(aStru,{"VarName","C",20,0})
  aAdd(aStru,{"VarC","C",20,0})
  aAdd(aStru,{"FieldName","C",10,0})
// путь и имя DBF файла описания полей bda.s_maker SHAPKA STROKI
cFile := "File_op.dbf"
cName := GlobalTmpPath+cFile

// массив для описания структуры DBF файла, из кторого будет брать данные источник данных источник данных BEST4+
aStruTMP := {}
  aAdd(aStruTMP,{"Vid","C",1,0})
  aAdd(aStruTMP,{"Type","C",1,0})
  aAdd(aStruTMP,{"Sclad","C",6,0})
  aAdd(aStruTMP,{"Codedoc","C",3,0})
  aAdd(aStruTMP,{"Numdoc","C",6,0})
  aAdd(aStruTMP,{"Date","D",0,0})
  aAdd(aStruTMP,{"Grup","C",5,0})
  aAdd(aStruTMP,{"Nnum","C",13,0})
  aAdd(aStruTMP,{"Partia","C",5,0})
  aAdd(aStruTMP,{"PartName","C",20,0})
  aAdd(aStruTMP,{"Name","C",60,0})
  aAdd(aStruTMP,{"Kolout","N",19,4})
  aAdd(aStruTMP,{"inside","N",5,0})

// путь и имя DBF файла 
cFileTMP := "tmp.dbf"
cNameTMP := GlobalTmpPath+cFileTMP

// создаём C:\\TEMP\\File_op.dbf и C:\\TEMP\\tmp.dbf
DBCreate(cName,aStru)
DBCreate(cNameTMP,aStruTMP)

// открываем C:\\TEMP\\tmp.dbf для сетевого использования
NetUse("TMP",cNameTMP)
      DBPUSH("MDOCM","MDOCM_W",,{MDOCM->SCLAD+MDOCM->VID+MDOCM->TYPE+MDOCM->CODEDOC+MDOCM->NUMDOC,MDOC->SCLAD+MDOC->VID+MDOC->TYPE+MDOC->CODEDOC+MDOC->NUMDOC})

// реляция с номенклатурным справочником
MDOCM->(f_SetRelation("MLABEL","UPPER(GRUP+NNUM)"))

// реляция со справочником партий
MDOCM->(f_SetRelation("SPR_PART","UPPER(GRUP+NNUM+PARTIA)"))

// заполняем C:\\TEMP\\tmp.dbf валенками и ботинками с необходимым количеством строк
      MDOCM->( DBGOTOP() )
      WHILE MDOCM->( !EOF() )
        MAXKOL:=MDOCM->KOLOUT
            FOR I=1 TO MAXKOL
            TMP->(AddRec())
            TMP->VID     := MDOCM->VID
            TMP->TYPE    := MDOCM->TYPE
            TMP->SCLAD   := MDOCM->SCLAD
            TMP->CODEDOC := MDOCM->CODEDOC
            TMP->NUMDOC  := MDOCM->NUMDOC
            TMP->DATE    := MDOCM->DATE
            TMP->GRUP    := MDOCM->GRUP
            TMP->NNUM    := MDOCM->NNUM
            TMP->PARTIA  := MDOCM->PARTIA
            TMP->PARTNAME:= SPR_PART->NAME
            TMP->NAME    := MLABEL->NAME
            TMP->KOLOUT  := MDOCM->KOLOUT
            TMP->INSIDE   := I 
            TMP->(F_DBUNLOCK())
            NEXT
        MDOCM->(DBSKIP())
      ENDDO
      Dbpop()
TMP->(dbClosearea())

// заполняем C:\\TEMP\\File_op.dbf

NetUse("File_op",cName)
ADDREC()
File_op->VarName :="Заголовок"
File_op->VarC :="Движение ТМЦ"
DbUnlock()
  ADDREC()
  File_op->VarName :="Вид"
  File_op->FieldName :="VID"
  DbUnlock()
  ADDREC()
  File_op->VarName :="Тип"
  File_op->FieldName :="TYPE"
  DbUnlock()
  ADDREC()
  File_op->VarName :="Склад"
  File_op->FieldName :="SCLAD"
  DbUnlock()
  ADDREC()
  File_op->VarName :="Код документа"
  File_op->FieldName :="CODEDOC"
  DbUnlock()
  ADDREC()
  File_op->VarName :="Номер документа"
  File_op->FieldName :="NUMDOC"
  DbUnlock()
  ADDREC()
  File_op->VarName :="Дата документа"
  File_op->FieldName :="DATE"
  DbUnlock()
  ADDREC()
  File_op->VarName :="Группа"
  File_op->FieldName :="GRUP"
  DbUnlock()
  ADDREC()
  File_op->VarName :="Номер"
  File_op->FieldName :="NNUM"
  DbUnlock()
  ADDREC()
  File_op->VarName :="Партия"
  File_op->FieldName :="PARTIA"
  DbUnlock()
  ADDREC()
  File_op->VarName :="Наименование партии"
  File_op->FieldName :="PARTNAME"
  DbUnlock()
  ADDREC()
  File_op->VarName :="НаименованиеТМЦ"
  File_op->FieldName :="NAME"
  DbUnlock()
  ADDREC()
  File_op->VarName :="Количество"
  File_op->FieldName :="KOLOUT"
  DbUnlock()
  ADDREC()
  File_op->VarName :="Номер внутри партии"
  File_op->FieldName :="INSIDE"
  DbUnlock()
File_op->(dbClosearea()) 


// Вызов функции win-печати
// cTemplate - имя и путь к шаблону отчета
// cName - имя файла описания шапки и строк отчета 
// В качестве файла строк используется файл TMP.dbf 
// путь и название которого в переменной сNameTMP
// последний параметр .T. - вызов дизайнера отчета

WinReport(cTemplate,cName,cNameTMP,.T.)

// Восстанавливаем предыдущее состояние (текущую рабочую область, 
// установленный индекс и фильтр, текущий номер записи).
DbPop() 

// Восстанавливаем привязанные к клавишам функции
RestSetKey(aSetkey)


Я так подозреваю, что с помощью подобной спецфункции можно практически любой отчет организовать через fastreport.
источник данных в виде самостоятельного SQL-запроса
 
товары
закупка (приход)
создал SQL-запрос
Код
SELECT
mdocm.vid as mdocm_vid,
mdocm.type as mdocm_type,
mdocm.sclad as mdocm_sclad,
mdocm.numdoc as mdocm_numdoc,
mdocm.grup as mdocm_grup,
mdocm.nnum as mdocm_nnum,
mdocm.partia as mdocm_partia,
mdocm.kolout as mdocm_kolout,
mlabel.name as mlabel_name,
spr_part.code as spr_part_code,
spr_part.name as spr_part_name
FROM sclad\\mdocm as mdocm
LEFT JOIN sclad\\mlabel as mlabel on (mdocm.grup=mlabel.grup and mdocm.nnum=mlabel.nnum)
LEFT JOIN sclad\\spr_part as spr_part on (mdocm.grup=spr_part.grup  and mdocm.nnum=spr_part.nnum  and mdocm.partia=spr_part.code) 
Where mdocm.numdoc=:nomer_dokumenta and mdocm.sclad=:nomer_sklada  and mdocm.vid='1' and mdocm.type='1'

в параметрах запроса (инспектор-params) установил связь по двум параметрам
:nomer_dokumenta - [DialogForm.Shapka."Номер_документа"]
:nomer_sklada - [DialogForm.Shapka."Номер_склада"]
в принципе получил дублирование источника данных bda.s_maker(STROKI)

Вопрос

как изменить SQL-запрос чтобы в новом источнике данных количество строк каждой номенклатуры было равно значению mdocm.kolout (или [DialogForm.Stroki."Кво_в_единицах_докта"])
то есть нужно на каждую позицию номенклатуры приходной накладной распечатать необходимое количество бирок (этикеток)

например имеем накладную из двух позиций:
валенки - 2 шт
ботинки - 3 шт

на печатной форме надо вывести

валенки
валенки
ботинки
ботинки
ботинки
нерабочая ссылка
 
на странице
http://best4.ru/news/detail.php?ID=1977&PHPSESSID1=
хотел скачать Драйвер ключей (rar; 4,979,396 байт; 07.03.2008 12:33)
но ссылка
http://best4.ru/download/1975/best-4plus/12_01/ServicePack/P_121_44/KEY.rar
не работает

нашел методом тыка
на ftp://best4.ru/download/BEST-4/12_01/ServicePack/P_121_01-44/KEY/
Sentinel Protection Installer 7.4.0.exe

Почему нет свежих драйверов под линукс?
Под Novell Netware всегда с драйверами все было нормально.
Теперь у новела новая забота - это SLED10 и SLES10.
В поставке БЭСТа есть только старая версия драйверов и сервера ключа, которая, не спорю - работает на некоторых дистрибутивах двухлетней давности.
Но на последних версиях ключ невозможно увидеть.
Проверено на SLED10, SLES10, Mandriva2007, Ubuntu7.04, ASPLinux12, OpenSuse 10.3.
баги и глюки начиная с сервис пака 37, глюки SP37 и SP42
 
ПЕРВЫЙ ГЛЮК
если в справочнике операторов дать пользователю права на АРМ только в режиме просмотра (редактирование - запрещено) то по F9 невозможно распечатать документы в реестре заказов (управление продаж) проверено на SP37 И SP42
это касается печатных оврм с полями ввода перед печатью
так как в них при вызове по F9 невозможно ничего ввести и соответственно на печать далее не идет

На BEST4+ SP20 - все нормально.

ВТОРОЙ ГЛЮК - НАМНОГО ХУЖЕ
ЗАДВАИВАЮТСЯ СТРОКИ В КОНСТРУКТОРЕ ОТЧЕТОВ (РАЗДЕЛ ОТЧЕТЫ ПО ТОВАРАМ)
причем задваиваются не все строки
например детальная ведомость с остатками

такая же история - конструктор отчетов НОРМАЛЬНО работает на BEST4+ SP20
чтобы использовать отчеты приходится базу версии sp42 открывать бэстом с sp20
WINE@ETERSOFT + BEST4 + SUPERPRONET, проблемы с запуском сервера ключа под linux 2.6
 
Была такая мысль - но поиск по сайту ничего не дал.
Большое спасибо за идею с телефоном, обязательно воспользуюсь.

На сайте http://rainbow.msk.ru указан адрес техподдержки
techsupport@rainbow.msk.ru

Однако послав по этому адресу письмо, получил нетривиальный ответ:
Цитата
Delivery to the following recipients failed.
techsupport@rainbow.msk.ru

телефон оказался намного лучше
WINE@ETERSOFT + BEST4 + SUPERPRONET, проблемы с запуском сервера ключа под linux 2.6
 
WINE@ETERSOFT 1.0.8
mandriva 2007 spring / SLED10
BEST4+ sp 42
ключ USB sentinel SuperProNet

1) BEST4+ работает в коммерческом wine@etersoft 1.0.8

2) сервер ключа удалось запустить только на ASP-IV-server 2.6.9-11.EL.asp (glibc-2.3.4-2.9asp)
в этом случае БЭСТ работает под wine на SLED10 или Mandriva2007 но ключ стоит на другой машине под ASPLinux-IV server
запускаем монитор ключей от rainbow ищем ключи на машине с адресом 192.168.1.6
Код
./sspmon -f 192.168.1.6
----------------------------------------------------------------------------- 
             Monitoring Tool. 
         Sentinel SuperPro 6.3.1 
       Copyright (C) 1998 - 2003 Rainbow Technologies Inc.
           All rights reserved. 
----------------------------------------------------------------------------- 
          Sentinel SuperPro Server & Key Information
    Server  : 192.168.1.6 
          Key #              : 1 
          Version            : 6.3.0 
          Hard Limit         : 50 
          License In Use     : 0 
          Highest In Use     : 0 
          Number of TimeOuts : 0

При этом ключ отлично видно как с win-машин так и с wine-linux
но только при настройках в best.bat
Код
SET BEST_NAME=192.168.1.6
SET BEST_KEY=3

3) пробуем на SLED10
при запуске штатного скрипта запускающего демон USB ключа из поставки BEST4+:
Код
den@sled10:/opt/RainbowTechnologies/SUD5.50/USB> sh load_daemon.sh start 
load_daemon.sh: line 15: /etc/init.d/functions: Нет такого файла или каталога
действительно нет у меня на SLED10 такого /etc/init.d/functions ()
однако судя по выводу команды
Код
den@sled10:/opt/RainbowTechnologies/SUD5.50/USB> ./usbdaemon
Already running with pid 3763
я так понимаю демон уже запущен

Теперь попытаемся запустить сервер ключа на Suse Linux Enterprice Desktop 10.
Код
sled10:/opt/RainbowTechnologies/SuperPro/6.3/Server # ./loadserv start
./loadserv: line 7: /etc/init.d/functions: No such file or directory
starting SSP Server :./loadserv: line 46: daemon: command not found
да нету у меня на SLED10 такого файла /etc/init.d/functions
ок
попробуем без помощи скрипта запустить сервер ключа spnsrvlnx

SLED10 имеет glibc-2.4.31 и при запуске сервера ключа из поставки БЭСТ4+ выдаёт:
Код
den@sled10:/opt/RainbowTechnologies/SuperPro/6.3/Server # ./spnsrvlnx
./spnsrvlnx: relocation error: ./spnsrvlnx: symbol errno, version GLIBC_2.0 not defined in file libc.so.6 with link time reference
хотя на старом дистрибутиве ASP-IV-server 2.6.9-11.EL.asp GLIBC тоже был не 2.0-версии (glibc-2.3.4-2.9asp)
далее прочитав в инете что можно попробовать такую штуку
Цитата
export LD_ASSUME_KERNEL=2.4.1

имеем
Код
den@sled10:/opt/RainbowTechnologies/SuperPro/6.3/Server # ./spnsrvlnx
./spnsrvlnx: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory
теперь не пойму почему недоступна эта библиотека, хотя есть такие файлы /lib/libnsl-2.4.so и /lib/libnsl-so.1
в ASP linux тоже есть /lib/libnsl-2.3.4 и /lib/libnsl.so.1, правда версия немного другая
БЭСТ и ОпенОфис
 
а как насчет второй проблемы
- не все отчеты можно выгрузить в OPEN OFFICE
например в
настройка - картотека предприятий - авторизация доступа - справочник операторов
тут даже DOS формы нет, только EXCEL

Хотелось бы всё в openoffice
Страницы: Пред. 1 2