Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
АРМ Книговыдача :  ИРБИС Irbis
 
выдача без эк
Пользователь: Johan (IP-адрес скрыт)
Дата: 20, May, 2021 11:51

добрый день, настраиваю выдачу без вк, нужно чтоб он по умолчанию выдавал не на 20 дней, а на 15, нашел в autoin запрос и поменял все 20 на 15, в итоге выдает все правильно, на 15 дней, но появилась проблема, время сдачи если ровно01,02,03 числу то норм, а вот если 04,05..09, он в их формирует как 4,5,6 итд, ноль в начале не дописывает, из за этого ошибка, сразу человек отображается как должник, ниже код, можете подсказать в чем ошибка



(
  if p(v400) then
  if p(v400 ^ !) then
  if '01 03 05 07 08 10 12': v400 ^ e * 4.2 then
  if (val(v400 ^ e * 6) + 15) > 31 then
  if v400 ^ e * 4.2: '12'
  then f((val(v400 ^ e .4) + 1), 0, 0), '01'
  else v400 ^ e .4,
    if v400 ^ e * 4.2: '10'
  then
  else '0'
  fi, f((val(v400 ^ e * 4.2) + 1), 0, 0) fi,
  if val(v400 ^ e * 6) >= 21 then
  else '0'
  fi, f((val(v400 ^ e * 6) + 15 - 31), 0, 0)
  else v400 ^ e .6, f((val(v400 ^ e * 6) + 15), 0, 0) fi
  else if v400 ^ e * 4.2: '02'
  then
  if (val(v400 ^ e * 6) + 15) > 28 then v400 ^ e .4, '03',
    if val(v400 ^ e * 6) >= 18 then
  else '0'
  fi, f((val(v400 ^ e * 6) + 15 - 28), 0, 0)
  else v400 ^ e .6, f((val(v400 ^ e * 6) + 15), 0, 0) fi
  else if (val(v400 ^ e * 6) + 15) > 30 then v400 ^ e .4,
    if val(v400 ^ e * 4.2) >= 9 then
  else '0'
  fi, f((val(v400 ^ e * 4.2) + 1), 0, 0),
  if val(v400 ^ e * 6) >= 15 then
  else '0'
  fi, f((val(v400 ^ e * 6) + 15 - 30), 0, 0)
  else v400 ^ e .6, f((val(v400 ^ e * 6) + 15), 0, 0) fi fi fi
  else v400 ^ e fi fi / )





спасибо



Редактировано 9 раз. Последний раз 20.05.2021 12:10 пользователем Johan.

Re: выдача без эк
Пользователь: Alio (IP-адрес скрыт)
Дата: 27, May, 2021 10:40

3 вида ошибок

1. v400 ^ e - д. б. v400^e (удалить пробелы)

2. then и fi в конце строки должны заканчиваться разделительным знаком (пробел или ,)

3. удалить и в выражениях val(...


Исправленный формат


(

if p(v400) then

if p(v400^!) then

if '01 03 05 07 08 10 12': v400^e * 4.2 then

if (val(v400^e * 6) + 15) > 31 then

if v400^e * 4.2: '12'

then f((val(v400^e .4) + 1), 0, 0), '01'

else v400^e .4,

if v400^e * 4.2: '10'

then

else '0'

fi, f((val(v400^e * 4.2) + 1), 0, 0) fi,

if val(v400^e * 6) >= 21 then

else '0'

fi, f((val(v400^e * 6) + 15 - 31), 0, 0)

else v400^e .6, f((val(v400^e * 6) + 15), 0, 0) fi

else if v400^e * 4.2: '02'

then

if (val(v400^e * 6) + 15) > 28 then v400^e .4, '03',

if val(v400^e * 6) >= 18 then

else '0'

fi, f((val(v400^e * 6) + 15 - 28), 0, 0)

else v400^e .6, f((val(v400^e * 6) + 15), 0, 0) fi

else if (val(v400^e * 6) + 15) > 30 then v400^e .4,

if val(v400^e * 4.2) >= 9 then

else '0'

fi, f((val(v400^e * 4.2) + 1), 0, 0),

if val(v400^e * 6) >= 15 then

else '0'

fi, f((val(v400^e * 6) + 15 - 30), 0, 0)

else v400^e .6, f((val(v400^e * 6) + 15), 0, 0) fi fi fi

else v400^e fi fi / )

Re: выдача без эк
Пользователь: Johan (IP-адрес скрыт)
Дата: 31, May, 2021 17:15

Ошибки вида лишних пробелов, извиняюсь, просто код отформатировал для удобства чтения его, правил сам запрос не меняя его структуру, ошибка остается, прикрепил скриншоты, проблема я как понял в том, что он 0 не подставляет, если число возврата больше чем 4, 01,02..04 все ок, а вот уже 5,6,7 так и добавляет, по логике съехало как раз на 5, насколько и уменьшил срок выдачи с 20 до 15, было бы классно еще, чтобы параметр MAXRETURNDAYS прописать в этот запрос, чтоб он работал и в выдаче без эк, спасибо



(if p(v400) then if p(v400^!) then if '01 03 05 07 08 10 12':v400^e*4.2 then if (val(v400^e*6)+15)>31 then if v400^e*4.2:'12'then f((val(v400^e.4)+1),0,0),'01'else v400^e.4,if v400^e*4.2:'10'then else'0'fi,f((val(v400^e*4.2)+1),0,0) fi,if val(v400^e*6)>=21 then else'0'fi,f((val(v400^e*6)+15-31),0,0) else v400^e.6,f((val(v400^e*6)+15),0,0) fi else if v400^e*4.2:'02' then if (val(v400^e*6)+15)>28 then v400^e.4,'03',if val(v400^e*6)>=18 then else'0'fi,f((val(v400^e*6)+15-28),0,0) else v400^e.6,f((val(v400^e*6)+15),0,0) fi else if (val(v400^e*6)+15)>30 then v400^e.4,if val(v400^e*4.2)>=9 then else'0'fi,f((val(v400^e*4.2)+1),0,0),if val(v400^e*6)>=15 then else'0'fi,f((val(v400^e*6)+15-30),0,0) else v400^e.6,f((val(v400^e*6)+15),0,0) fi fi fi else v400^e fi fi/)


https://i.ibb.co/CbNhtGF/Screenshot-21.png



Редактировано 1 раз. Последний раз 31.05.2021 17:15 пользователем Johan.

Вложения: Screenshot_21.png (16.8KB)   Screenshot_22.png (7KB)  
Re: выдача без эк
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 02, June, 2021 20:14

Анализирую ваш формат. Подождите

Re: выдача без эк
Пользователь: Дунаевская (IP-адрес скрыт)
Дата: 03, June, 2021 12:27

Заменила в 3-х местах выражение
if val(v400^e*6)>=21... на if f((val(v400^e*6)+15-31),0,0)>='21'...

(if p(v400) then
if p(v400^!) then
if '01 03 05 07 08 10 12':v400^e*4.2 then
if (val(v400^e*6)+15)>31 then
if v400^e*4.2:'12'then f((val(v400^e.4)+1),0,0),'01'else v400^e.4,
if v400^e*4.2:'10'then else'0'fi,
f((val(v400^e*4.2)+1),0,0)
fi,
/* if val(v400^e*6)>=21 then else '0' fi,
if f((val(v400^e*6)+15-31),0,0)>='21' then'0' else fi,
f((val(v400^e*6)+15-31),0,0)
else v400^e.6,f((val(v400^e*6)+15),0,0) fi
else

if v400^e*4.2:'02' then
if (val(v400^e*6)+15)>28 then v400^e.4,'03',
/* if val(v400^e*6)>=18 then else'0'fi,
if f((val(v400^e*6)+15-28),0,0)>='18' then'0' else fi,
f((val(v400^e*6)+15-28),0,0)
else v400^e.6,f((val(v400^e*6)+15),0,0)
fi
else
if (val(v400^e*6)+15)>30 then v400^e.4,
if val(v400^e*4.2)>=9 then else'0'fi,
f((val(v400^e*4.2)+1),0,0),
/* if val(v400^e*6)>=15 then else'0'fi,
if f((val(v400^e*6)+15-30),0,0)>='15' then'0' else fi,
f((val(v400^e*6)+15-30),0,0)
else v400^e.6,f((val(v400^e*6)+15),0,0)
fi fi fi
else v400^e
fi fi/)

Re: выдача без эк
Пользователь: Johan (IP-адрес скрыт)
Дата: 03, June, 2021 23:54

спасибо, все работает



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.