1 - в memo211 после [DialogForm.Stroki."Цена_из_прайслиста_N_2"] есть еще 2 пустые строки (видно enter пару раз нажали)
2 - в memo35 после [DialogForm.Stroki."Кво_в_единицах_докта"] есть еще пробел
Я делал так: на masterdata клал один memoview, в нем ставил нужные поля
типа [DialogForm.q1."NNUM"][DialogForm.q1."NAME"][DialogForm.q1."OCENA2"]
а между ними ставил символ Tab (нажатием Ctrl+Tab)
сохранял как "Файл CSV" где символ-разделитель все равно какой
Дмитрий, Вы не совсем поняли .
Строки в memo берутся из таблицы (я приложил табл и отчет где это проявляется).
Насчет всяких кавычек и скобок - это мое предположение.
Доброго времени суток!
В Б4+ при установке у мемо свойства WordBreak:=True при некотором сочетании символов (похоже типа '"' и '(')
в определенных местах выводимого текста fastreport зависает и кроме снятия задачи договориться с ним не получается.
Для примера прикладываю сам отчет и файл b40.dbf из которого запрос берет данные
(в отчете настроено чтоб файл лежал C:\TEMP\), в файле 2 строки любая из которых приводит к зависаню при wordbreak=true.
Можно ли как победить эту неприятность, посоветуйте если кто сталкивался?
LoadLibrary вроде к Б5 относится, у меня Б4.
Я понял выход только один: все плагины засунуть в один файл и его компилить.
(щас в лоб на запись проверяю mdocm->ed1 и если что пишу туда "шт")
Спасибо за ответы
Приведенный плагин запускается на событие "картотека товаров" и дает возможность выбора способа
заполнения накладной. В зависимости от выбора юзера запускается плагин непосредственно формирующий aworkvars.
Вот при такой цепочке (плагин меню -> плагин формирования строк) и происходят иногда сбои,
причем если портится, то только единицы хранения. Если из цепочки убрать плагин меню, то сбоев нет.
В отладчике смотрел aworkvars перед выходом из плагина в норме, сразу после возврата в бэстовское окно
накладной вместо шт набор ерунды (см.картинки).
В отладчике каждый элемент aworkvars имеет длину 39. Пробовал создавать подобный массив для каждого
элемента aworkvars соблюдая тип и длину, но не помогло. К томуже из ваших уроков я знаю описание
только первых 4 элементов. Может дадите полное описание?
Путем экспериментов выяснил вот что: на событие "картотека товаров" подцеплен плагин выдающий меню
для выбора варианта работы и в зависимости от выбора юзера запускающий через hfileeval нужный плагин.
При таком варианте и происходят сбои. Если на событие подцепить сразу конечный плагин, то сбоев не добился.
Вызывающий другие проги (которые и обрабатывают aworkvars) плагин выглядит так:
Код
function main()
local la, ans:=.t.
local aa, n:=0, i, ano
altd()
try
la:=lanother
catch
la:=.f.
end
if la
aa:={' 80 символов ', ' Импорт из файла Excel ', ' Импорт из заказа CSV ', ' Чужой каталог ', ' X5 ', ' Стандартный ввод (Esc) '}
ano:={(globaltask=='03'), .t., (globaltask=='05'), .t., (globaltask=='03'), .t.}
aeval(aa,{|x|n:=max(n,len(x))})
i:=BoxMenu({'Форма ввода строк', '(цена: '+alltrim(acodecen[ascan(acodecen,{|x|x[1]=pcodecen}),2])+')'}, ;
(maxrow()-len(aa))/2-2,(maxcol()-n)/2,aa,ano,,,'gr+/b*,w+/n,,,w/b*','gr+/b*')
do case
case i=1
ans:=.f.
hfileeval('u_sclad_80_out.hrb')
case i=2
ans:=.f.
if globaltask=='03'
hfileeval('u_imp_nakl_xls.hrb')
elseif globaltask=='05'
hfileeval('. .\sclad\u_imp_nakl_xls.hrb')
endif
case i=3
ans:=.f.
hfileeval('u_my_catalog_zak.hrb')
case i=4
ans:=.f.
if globaltask=='03'
hfileeval('u_another_doc.hrb')
elseif globaltask=='05'
hfileeval('u_another_zak.hrb')
endif
case i=5
ans:=.f.
hfileeval('u_x5_vvod.hrb')
endcase
endif
return ans
Многоуважаемые спецы по fileeval, может подскажете чего?
Но иногда (довольно редко) вместо единиц хранения в mdocm пишется какая-то ересь (см.картинку).
В этом случае нельзя ничего распечатать: валится fastreport. При обычном вводе такого никогда не было.
Пробовал вместо mlabel->ed заносить "шт ", но по ощущениям глюк случается чаще.
Может кто сталкивался с чем подобным?
В Б4+ в отчете использую кросс-таб.
Можно ли как-то вывести в поле итога (см. рисунок) какие-то свои данные? (или можно в поле вместо "SMOUT")
В поле где "Общий итог" получается свое напечатать, а в соседнее никак.
Может кто-нибудь что посоветует?
Так и 60 символов нигде не выводилось полностью. Своих экранов для ввода накладных/заказов вполне пока хватает. Больше того, при записи приходной накладной если новая номенклатура в поле NAME в MKART пишется только 34 символа, и чтоб была нормальная сортировка по наименованию при просмотре картотеки пришлось на запись прихода перепрописывать NAME.
А так про косяки с отображением наименования никто пока не жаловался.
Я увеличил до 80, пока косяков не видно, но для нормального отображения всего наименования пришлось писать свой initlist для ввода накладных прихода/расхода, заказов.
к разработчикам Б4+ или к тем кто делал подобное.
Если увеличить длину поля NAME в MLABEL, то какие подводные камни могут вылезти?
Игры на демо-базе вроде глюков не выявили.
Странное поведение getopenfilename... Практически в половине случаев функция возвращает
путь с именем файла где первые 8 символов заменены на какой-то мусор.
Причем никакой закономерности не наблюдается, сбой происходит совершенно отфонарно.
Игры с разнами наборами флагов и пр. ничего недают.
Код функции
Код
function openOOCalc(lblank, lzak)
local cfile, ctitle:=hb_oemtoansi(iif(lzak,'Файл заказа поставщику из БЭСТа','Файл прайс-листа поставщика'))
local afilter:= {{hb_oemtoansi('Файлы Excel'),'*.xls'}, {hb_oemtoansi('Файлы OOCalc'),'*.ods'}, {hb_oemtoansi('Все файлы'),'*.*'}}
local cpath:=space(200)
local oapp, odesk, odoc
if lblank
cfile:='private:factory/scalc'
else
if lzak
mysay('...поиск файла заказа из БЭСТа...',5,'r+/n*')
else
mysay('...поиск прайс-листа поставщика...',7,'r+/n*')
endif
cfile:=getopenfilename(0, @cpath, ctitle, afilter, 1+4+8+2048+4096+65536+524288, '')
if empty(cfile)
mysay('',iif(lzak,5,7))
return nil
endif
if !file(cfile)
sayandwait({'Сбой программы!','(файл: "'+hb_ansitooem(cfile)+'")'})
mysay('',iif(lzak,5,7))
return nil
endif
cpath:=hb_ansitooem(cfile)
if lzak
mysay('файла заказа из БЭСТа: '+cpath,5)
else
mysay('прайс-лист поставщика: '+cpath,7)
endif
cfile:=strtran(cfile,'\','/')
cfile:=strtran(cfile,' ','%20')
cfile:='file://localhost/'+cfile
endif
oapp:=CreateObject('com.sun.star.ServiceManager')
odesk:=oapp:createInstance('com.sun.star.frame.Desktop')
odoc:=odesk:LoadComponentFromURL(cfile, '_blank', 0, {})
return odoc
Пришлось вставить проверку (if !file(cfile)).
Может уважаемый Александр Титов что-то Подскажет?