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

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

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


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование отчетов  / Проверка всех строк накладной

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Проверка всех строк накладной
 
Поступило предложение, видеть цену за килограмм.
Применил доп. еденицы.
Но теперь возникла ситуация, когда операторы не переключают цену за коробку,
а так и переносят за кг.
Написал условие на проверку накладной.
Но оно срабатывает только на первую строку.
Как запрограммировать чтоб проверяла все строки?

Код
begin
if [DialogForm.STROKI."Едизмерения_расхода"]=[DialogForm.STROKI."Доп_ЕИ1"] then
   begin
    MessageBox('исправьте кг на коробки','Внимание',mb_Ok);
    modalresult:=mrCancel;
    end
Else
    modalresult:=mrOK;
end
Изменено: ВАЛЕРИЙ БОНДАРЧУК - 02.11.2012 07:39:54
 
Примерно так (если этот скрипт выполняется на кнопке "Выполнить" и отчет формируется только по одной накладной):
lErr := False;
Stroki.First;
while (not Stroki.Eof) and (not lErr) do begin
if [DialogForm.STROKI."Едизмерения_расхода"]=[DialogForm.STROKI."Доп_ЕИ1"] then begin
lErr := True;
end;
Stroki.Next;
end;
Stroki.First;

if lErr then
begin
MessageBox('исправьте кг на коробки','Внимание',mb_Ok);
modalresult:=mrCancel;
end
Else
modalresult:=mrOK;
 
Сергей, спасибо за помощь.
Но что-то не получается, ругается на STROKI
 
Может кто нибудь еще поможет!
Выходит вот такое сообщение
 
перед Stroki.First надо Stroki.open
 
Спасибо, все получилось!!!
 
БЭСТ-4
Развиваем нашу расходную накладную из 3 поста.
Фирма закупает товар ежедневно, но помаленьку. Поэтому, часто отписывают под ноль, и грузчикам приходится заходить в офис и спрашивать не последняяли эта позиция, и если да, то снимают образец с витрины. Это отвлекает сотрудников от текущей работы, и усложняет работу грузчиков по поиску последней коробки на складе.
Возможно ли запрограммировать это через sql- запрос, на отслеживание остатка товара под ноль.
Например, ставим запись документа при отправке на печать. тогда остаток в картотеке склада будет ноль, и если остаток равен нулю, то шрифт номера по порядку изменить на жирный.
Вроде еще в строке mdocm.dbf поле kol0 - количество товара перед началом данного движения, может тогда ориентироваться на это поле.
Нужна помощь, sql- запрос никогда не писал.
 
Валера иди через winreport или плагин на контроль записи и ставь в строку свой признак.
Запросы будешь долго ждать печать - забудь
 
Константин, как я понял ты советуешь, сделать контроль в накладной БЭСТЕ (выдача транспаранта о позициях под ноль)..
А мне хочется, чтобы было ненавязчивый сигнал грузчикам в печатной накладной, что это позиция выбирает товар под ноль (жирный шрифт номера по порядку)
А операторам это не важно, главное они отписали товар. Например, по заявкам телефонным с точек отписано 20 накладных. Пускай в каждой одна позиция под ноль. Тогда, в каждой бумажной накладной один из номеров по порядку стоит жирным, значится при сборе товара грузчик без вопросов заходит в помещение выписки и забирает эту упаковку с витрины. Отсутсвует отвлечение операторов на Вопрос последняя ли это позиция, и грузчикам не надо больше бегать по складу в поиска "затерявшейся" коробки.
Или у тебя что-то другое в совете?
 
Нашел Fileеval - программу по формированию DOS накладной, в которой одна из функций вычисляет остаток на складе. и передает его, как параметр aVars[2].
aVars[2]:=s_k0+s_his-s_tek
Проверил на данных заказчика, программа отрабатывает корректно.
Теперь необходимо привязать это к печатной форме Фастрепорта.
Посмотрел, как формируются плагины для зарплат, хотя там и рассчитываются aVars, но напрямую в форму печати не передаются.
Подскажите как это сделать в Fastreporte?
 
Цитата
ВАЛЕРИЙ БОНДАРЧУК пишет:
Константин, как я понял ты советуешь, сделать контроль в накладной БЭСТЕ (выдача транспаранта о позициях под ноль)..
Я предлагаю другое.
1.Выбрать свободное поле в таблице (свободный параметр какой-нить)
2.В событии на запись заполнить это поле значением - например единичкой
3.при печати это поле должно быть штатно доступно и его анализировать - если оно единичка, то печатать восколицательные знаки или как-то еще это дело выделить.
Вам же при печати надо - вот я и говорю про действия для анализа в печатной форме
 
не в фастрепорте это надо делать. А ЗАРАНЕЕ - чтобы в фастрепорт это уже пришло и там только обрабатывать
 
Слепил код, пока не ставил else - она заполняла всем 1, применил у всех строк стоит ноль.


Код
DBPUSH("MDOCM","MDOCM","",{"UPPER(Sclad+Vid+Type+CodeDoc+NumDoc)",MDOC->(UPPER(Sclad+Vid+Type+CodeDoc+NumDoc)),,.F.,{"MDOCM"}}) 
DBGOTOP() 
DO WHILE !EOF() 
mkart->( DBSEEK(UPPER(MDOCM->SCLAD+MDOCM->GRUP+MDOCM->NNUM)) ) 
mdocm->(RECLOCK()) 

if (mkart->koltek:=0) 
mdocm->sum_csh:=1
else
mdocm->sum_csh:=0
endif
 
mdocm->(F_DBUNLOCK())
DBSKIP() 
ENDDO 
mdocm->( DBCOMMIT() ) 

DBPOP()
Вопрос правильно ли применил обращение к текущему остатку, если программу поставить на отработку при записи документа,
Ведь также поставлено запись накладной при вызове документа на печать.
По моей логике, 1. записалась накладная, 2 программа проверила текущее количество и сработала на изменение поля сумма налога с продаж, 3 затем запускается накладная в фастрепорте с обращением на это поле.
Помогите с советом по кодописанию.
Изменено: ВАЛЕРИЙ БОНДАРЧУК - 27.05.2013 13:22:46
 
Намаялся с кодом, но так и не победил его, Зато ставит текущий остаток в нужное поле.
Вот так выглядит последняя программа:
Код
DBPUSH("MDOCM","MDOCM","",{"upper(SCLAD+VID+TYPE+CODEDOC+NUMDOC)",MDOC->(UPPER(SCLAD+VID+TYPE+CODEDOC+NUMDOC))})
MKART->(ordsetfocus("MKART"))
F_SETRELATION("MKART","UPPER(GRUP+NNUM+PARTIA+SCLAD)")
DO WHILE (MDOCM->(!EOF()))
mdocm->(RECLOCK()) 
mdocm->sum_csh:=mkart->koltek
 MDOCM->(F_DBUNLOCK())
    MDOCM->(DBSKIP())
  ENDDO
DBPOP()
Пришлось условие на проверку остатка отработать в фастрепорте :
Код
begin
 If ([DialogForm.STROKI."Сумма_налога_с_продаж"]<>0) and
     ([DialogForm.SHAPKA."Вид_движ1приход2расход"]='2') Then
     EI:=[DialogForm.STROKI."Едизмерения_расхода"]
 else
     EI:=[[DialogForm.STROKI."Едизмерения_расхода"]+'.'];
end
Если остаток 0, то ставит точку к коробке.
Спасибо Константин за помощь.
Страницы: 1
Читают тему (гостей: 2)