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

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

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


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Глюк при работе с aworkvars
 
Б4+, работает плагин подключенный на вызов "картотека товаров", загружающий строки накладной из xls.
строка заполнения aworkvars:
Код
aadd(aworkvars,{upper(mkart->grup+mkart->nnum+space(5)+csclad), mlabel->ed, nscl, ncena})

Но иногда (довольно редко) вместо единиц хранения в mdocm пишется какая-то ересь (см.картинку).
В этом случае нельзя ничего распечатать: валится fastreport. При обычном вводе такого никогда не было.
Пробовал вместо mlabel->ed заносить "шт ", но по ощущениям глюк случается чаще.
Может кто сталкивался с чем подобным?
 
Путем экспериментов выяснил вот что: на событие "картотека товаров" подцеплен плагин выдающий меню
для выбора варианта работы и в зависимости от выбора юзера запускающий через 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, может подскажете чего?
 
С отладчиком надо идти.
Вы запускаете из разных модулей один и тот же плагин.
И массив у Вас укороченный.
Попробуйте для начала посмотреть на массив в оригинале каким должен быть.
 
Приведенный плагин запускается на событие "картотека товаров" и дает возможность выбора способа
заполнения накладной. В зависимости от выбора юзера запускается плагин непосредственно формирующий aworkvars.
Вот при такой цепочке (плагин меню -> плагин формирования строк) и происходят иногда сбои,
причем если портится, то только единицы хранения. Если из цепочки убрать плагин меню, то сбоев нет.
В отладчике смотрел aworkvars перед выходом из плагина в норме, сразу после возврата в бэстовское окно
накладной вместо шт набор ерунды (см.картинки).
В отладчике каждый элемент aworkvars имеет длину 39. Пробовал создавать подобный массив для каждого
элемента aworkvars соблюдая тип и длину, но не помогло. К томуже из ваших уроков я знаю описание
только первых 4 элементов. Может дадите полное описание?
 
LoadLibrary вроде к Б5 относится, у меня Б4.
Я понял выход только один: все плагины засунуть в один файл и его компилить.
(щас в лоб на запись проверяю mdocm->ed1 и если что пишу туда "шт")
Спасибо за ответы
 
Цитата
AndrV пишет:
LoadLibrary вроде к Б5 относится, у меня Б4.

К Б4 тоже библиотеки можно собирать я это я тоже писал но Оч. давно
 
Цитата
AndrV пишет:
только первых 4 элементов. Может дадите полное описание?

Возьмите в демобазе любую накладную и в режиме редактирования посмотрите через отладчик на элементы массива
 
Поискал на старом форуме про LoadLibrary, что-то не нашел,
aworkvars делать по аналогии я пытался (писал выше), ничего не вышло
 
Для меня Вопрос с БЭСТ-4 осложнены тем, что необходимо вспоминать далекое прошлое...
Тут могут быть либо варианты мне помочь Вам посмотреть Ваше решение - покрутить у себя, либо повысказывать предположения всякие разные...

Давайте Вы сначала проверите версию все в одном исходнике ?
 
Совсем из головы вылетело
а если в начале файла Вы поставите
set procedure to u_imp_nakl_xls.prg
То исходник переписывать сюда не надо и можете файл использовать как библиотеку
 
Спасибо, щас попробую
 
С set procedure сбоев не добился. Осталось в разных prg развести названия процедур.
Еще раз большое спасибо за помощь!
 
Ну значит проблема именно в том была что из одной виртуальной машины запускали другую и потом при выходе вероятно и есть в этом случае в Б4 какой-то баг.....но решение мы нашли и оно лучше чем hrb вызывать из hrb
Я бы сказал - правильнее.
Удачи
Страницы: 1
Читают тему (гостей: 1)