ФИНАНСЫ БЕЗ ПРОБЛЕМ(tm):
ПЕРЕГОВОРНЫЙ ПУНКТ II

Добро пожаловать, Гость. Пожалуйста, выберите:
Вход || Регистрация.
28.02.20 в 21:02:12


Наш сайт | Cтаpый форум (до 08.2003 года) | Интернет-магазин & Центр загрузок |
Главная | Помощь | Поиск | Участники | Вход | Регистрация
Модифицированный Клиент CLW32:
Из документации ...
На форуме...

Использование Клиента FCM:
1. Отчетный период и журнал операций.
2. Печать.
3. Экспорт.
4. Многострочная операция.
5. Редактирование многострочных операций.
http://www.fwp-client.com

Работа с ФБП через браузер:
Настройка для лечебных учреждений, оказывающих медицинские услуги:
На форуме...
http://vasoft.ru

Технический аудит настройки.
[Читать]

ФИНАНСЫ БЕЗ ПРОБЛЕМ (сетевая) и Opencart:
предлагаем:
1. Выгрузка новых покупателей из интернет-магазина в план счетов и сохранение информации в extrd.dat.
2. Выгрузка данных о заказанном товаре и сохранение в ФБП в журнале операций, номер заказа регистрируем в плане счетов как с.счет.
3. Українська локалізація.






   Финансы без пpоблем: Пеpеговоpный Пункт II
   ФБП для начинающих

   Подскажите
« Предыдущая Тема | Следующая Тема »
Страниц: 1 ... 7 8 9 10 11  ...  20 Ответить | Уведомлять | Послать Тему | Печатать
   Автор  Тема: Подскажите  (Прочитано 12076 раз)
VLV

***



Я люблю Финансы без проблем!

   
Просмотреть Профиль |

Сообщений: 228
Re: Подскажите
« Ответить #120 В: 10.06.11 в 14:20:00 »
Цитировать | Править

Quote:
А в функциях [:CU] и [:AQ] переменной  SP значение нигде не присваивается?

 
Причина действительно кроется здесь...
НО ВНУТРИ ЭТИХ ВЫЗОВОВ НЕТ ПЕРЕОПРЕДЕЛЕНИЯ ПЕРЕМЕННОЙ SP.
Там только [GET *SP....]
Передается SP внутрь неявно.
 
Причина в самой конструкции
 
Если вместо
CALL MAKTMGPE_ (SP,DP,PR,[:CU],[:AQ])  
Сделать
Z1=[:CU]
Z2=[:AQ]
CALL MAKTMGPE_ (SP,DP,PR,Z1,Z2)  
То параметр передается корректно.
 
Первая запись несомненно удобнее, читабельнее и т.п., и используется у меня часто...а косячит далеко не всегда и по непонятным мотивам...
Сама функция, переданная в качестве параметра отрабатывает корректно...но ее влияние на другой параметр ...
 
Что делать?
 
С уважением, Владимир.
« Изменён в : 10.06.11 в 14:48:17 пользователем: VLV » Зарегистрирован
Tupitsin

***



Я люблю этот Форум!

   
Просмотреть Профиль | E-мэйл

Сообщений: 191
Re: Подскажите
« Ответить #121 В: 10.06.11 в 15:10:56 »
Цитировать | Править

Ищите и обрящете!
Я бы делал так (варианты):
1)
а)
Z2=[:AQ]
CALL MAKTMGPE_ (SP,DP,PR,[:CU],Z2)  
б)
Z1=[:CU]
CALL MAKTMGPE_ (SP,DP,PR,Z1,[:AQ])  
И смотреть, где будет ошибка. Диапазон поиска снижается вдвое.
2)В FARe найти все файлы со строкой SP=. И все просмотреть. Может быть, где-то есть несколько уровней вложенности вызовов процедур.
 
Зарегистрирован
VLV

***



Я люблю Финансы без проблем!

   
Просмотреть Профиль |

Сообщений: 228
Re: Подскажите
« Ответить #122 В: 14.06.11 в 16:49:33 »
Цитировать | Править

Quote:
Я бы делал так (варианты):  
1)  
а)  
Z2=[:AQ]  
CALL MAKTMGPE_ (SP,DP,PR,[:CU],Z2)    
б)  
Z1=[:CU]  
CALL MAKTMGPE_ (SP,DP,PR,Z1,[:AQ])    
И смотреть, где будет ошибка. Диапазон поиска снижается вдвое.  

 
Обрадовался я вначале, что Дмитрий Дмитриевич про метод такой хороший напомнилSmiley
 
И в первом случае и во втором ошибка...
И общая процедура для этих вызовов отискалась...
И содержание у нее прозрачное...
И SP  она НЕ переопределяет
И если вместо ее вызова разместить ее содержимое то НЕТ ошибки...
***********  
:ACNT (PZ)  
***********  
IF [GET *PZ,'ACNT']=0  
 CT='10-00'    
ELSE      
 CT=[GET *PZ,'ACNT']
ENDIF  
RETURN (CT)  
************
Но интересно что эта процедура в только в конкретном случае "крайней" оказалась...
Сделал "трассировку" переменной SP на фактах...
При возврате из второго вызова (если передача параметра явная) SP оказывается переопределенной.
 
Т.е. возврат из вызвавшей эту процедуру процедуры переопределяет SP.
После выхода из [:acnt pz] значение SP еще целехонькое...
 
А если вместо call acnt (pz) использовать call acnt
То нет ошибки...
 
Да и вообще acnt (pz) можно совершенно пустую сделать...ошибка останется...
 
« Изменён в : 14.06.11 в 18:35:34 пользователем: VLV » Зарегистрирован
VLV

***



Я люблю Финансы без проблем!

   
Просмотреть Профиль |

Сообщений: 228
Re: Подскажите
« Ответить #123 В: 14.06.11 в 18:21:12 »
Цитировать | Править

Вот...явил кажись внятную формулировку проблеммы...давайте уж помогать Smiley
 
Такая форма
***************************************
*FORMA
***************************************
SP='S01081697'
PZ='PZ1002'
  CALL Z_ (SP,PZ,0,0,[:X SP,PZ])
333
SP ^SP^^^^^^^^^
PZ ^PZ^^^^^^^^^
GOTO END
***************************************
:Z_ (SP,PZ,CN,CO,Q)
***************************************
Z INP
SP ^SP^^^^^^^^^
PZ ^PZ^^^^^^^^^
--------------------
CALL SSS_ (SP,PZ,0,DS)
RETURN
***************************************
:SSS_ (SP,PZ,DQ,DS)
***************************************
SSS
SP ^SP^^^^^^^^^
PZ ^PZ^^^^^^^^^
---------------------
RETURN
***************************************
:X (SP,PZ)
***************************************
CALL Y (PZ)
X
SP ^SP^^^^^^^^^
PZ ^PZ^^^^^^^^^
------------
RETURN
***************************************
:Y (PZ)
***************************************
Y
SP ^SP^^^^^^^^^
PZ ^PZ^^^^^^^^^
------------
RETURN
***************************************
:END
******
 
Результат работы ФОРМЫ
 
Y
SP S01081697
PZ PZ1002
------------
X
SP S01081697
PZ PZ1002
------------
Z INP
SP PZ1002  Huh ДОЛЖНО ТАК БЫТЬ Huh?
PZ PZ1002
--------------------
SSS
SP PZ1002
PZ PZ1002
---------------------
333
SP S01081697
PZ PZ1002  
*****
А если вместо  
CALL Y(PZ)
Написать
CALL Y(SP,PZ) (С соотв исправлением процедуры)
Работает как задумано
 
 
С уважением, Владимир.
« Изменён в : 17.06.11 в 12:29:21 пользователем: VLV » Зарегистрирован
Boris, Kiev.
Moderator

*****



Адепт ФБП  с 1996г.

   
Просмотреть Профиль | E-мэйл

Сообщений: 842
Re: Подскажите
« Ответить #124 В: 20.06.11 в 17:45:09 »
Цитировать | Править

on 14.06.11 в 18:21:12, VLV wrote:
Вот...явил кажись внятную формулировку проблеммы...давайте уж помогать Smiley
 
Такая форма
***************************************
*FORMA
***************************************
SP='S01081697'
PZ='PZ1002'
  CALL Z_ (SP,PZ,0,0,[:X SP,PZ])
 
......

 
 
В руководстве есть такое:
В опеpатоpе CALL можно указывать фактические паpаметpы подпpогpаммы - выpажение (или выpажения, pазделенные запятыми) в кpуглых скобках. Соответственно после опpеделения метки могут следовать фоpмальные паpаметpы подпpогpаммы - пеpеменная (или пеpеменные, pазделенные запятыми) в кpуглых скобках. Пpи входе в подпpогpамму фоpмальные паpаметpы получают значения фактических. Фоpмальные паpаметpы - это локальные пеpеменные подпpогpаммы, их экземпляpы автоматически уничтожаются пpи выполнении опеpатоpа RETURN. Паpаметpы пеpедаются "по значению", т.e. изменение значения фоpмального паpаметpа внутpи подпpогpаммы не влечет изменения значения фактического паpаметpа в вызывающей пpогpамме.
 
Похоже, что запись  
  CALL Z_ (SP,PZ,0,0,[:X SP,PZ])
синтаксически не предусмотрена именно при использовании CALL, т.к.  
переписав в 2 строчки так:
X=[:X SP,PZ]
  CALL Z_ (SP,PZ,0,0,X)
ситуация нормализуется.
 
Возможно следующие версии клиента будут сигналить о недопустимости подобных выражений.
« Изменён в : 20.06.11 в 18:17:08 пользователем: Boris, Kiev. » Зарегистрирован
VLV

***



Я люблю Финансы без проблем!

   
Просмотреть Профиль |

Сообщений: 228
Re: Подскажите
« Ответить #125 В: 23.06.11 в 13:59:43 »
Цитировать | Править

Ну вот на 100% , Борис, не охота с этим соглашаться.
 
Ошибка возникает в ситуации когда внутри подпрограммы, получившей параметры явно, вызывается другая подпрограмма с другим кол-вом параметров и другими именами параметров...
все по букве мануала...
 
pr1 (sp,pz)
...
call pr2 (pz)
...
return
 
call pr2 (pz) не имея внутри себя кода, модифицируещего переменную sp, при окончании работы являет запорченной эту переменную.
 
Где здесь нарушение буквы мануала?
 
Иметь ввиду что мог накосячить в каком нить другом вызове..при том что сам этот вызов корректно отработал....а где гарантии что и других неочевидных влияний нет?  
 
 
А вообще очень хочется чтобы мануал начал допускать такого рода запись...
(Дефакто она ведь работает, не знаю уж как разработчик задумывалSmiley)
 
CALL Z_ (SP,PZ,0,0,[:X SP,PZ])  
 
Это очень сильно сокращает количество кода и повышает читабельность, что полезно для здоровья ФБП Smiley
 
С уважением, Владимир.
« Изменён в : 23.06.11 в 14:35:57 пользователем: VLV » Зарегистрирован
Tupitsin

***



Я люблю этот Форум!

   
Просмотреть Профиль | E-мэйл

Сообщений: 191
Re: Подскажите
« Ответить #126 В: 24.06.11 в 09:14:36 »
Цитировать | Править

Я согласен с Владимиром. Формально такая запись абсолютно корректна. Более того она работает. Но не всегда. Попробуйте в программке, присланной Владимиром, заменить определение (и, соответственно, вызов)  
Y (PZ) на  
Y (SP,PZ)
Ошибка исчезнет.
Попробуйте закрыть вызов Y  
*CALL Y (PZ)
ошибка исчезнет.  
Хотя в обоих случаях вызов Z_ останется тем же.
Вообще-то это уже вопрос к Аркадию.
Надо править либо сервер, либо описание, где надо точно описать исключения из правил вызова вложенных процедур.
« Изменён в : 24.06.11 в 09:17:06 пользователем: Tupitsin » Зарегистрирован
Boris, Kiev.
Moderator

*****



Адепт ФБП  с 1996г.

   
Просмотреть Профиль | E-мэйл

Сообщений: 842
Re: Подскажите
« Ответить #127 В: 24.06.11 в 09:40:04 »
Цитировать | Править

Согласен, но поупражняйтесь с кол-ом параметров в вызовах подпрограмм из функций, которые параметрами в первом вызове, не забудьте про return(..) - там ещё "чудеснее" будет.
 
На сегодня, исключив запись вызова функции в параметрах call всё должно работать "как договорено".
 
Если есть пример глюка без этой записи пропишите пожалуйста, ещё поупражняюсь.
 
P.S.
local - это сила, пользую и всем рекомендую, а
[:SUB ..]  и call SUB () до сих пор у меня в стороне.
Зарегистрирован
VLV

***



Я люблю Финансы без проблем!

   
Просмотреть Профиль |

Сообщений: 228
Re: Подскажите
« Ответить #128 В: 10.08.11 в 15:10:32 »
Цитировать | Править

Подскажите плз...
 
Существует ли возможность зарегистрировать операцию в нужном месте ЖО в соответствии с конкретной датой и временем?
 
С уважением Владимир.
Зарегистрирован
BBBB

**



Я люблю этот Форум!

   
Просмотреть Профиль |

Сообщений: 79
Re: Подскажите
« Ответить #129 В: 11.08.11 в 14:34:17 »
Цитировать | Править

Не совсем понятно - надо вносить в прошлое, в текущий месяц или в будущее, это должно произойти при каких-то условиях или еще как?
Зарегистрирован
VLV

***



Я люблю Финансы без проблем!

   
Просмотреть Профиль |

Сообщений: 228
Re: Подскажите
« Ответить #130 В: 11.08.11 в 16:45:35 »
Цитировать | Править

Вносить нужно в прошлое.
 
Есть файл с транзакциями продаж от ККМ. В транзакциях есть дата и время. При загрузке этого файла в ФБП сервер регит операции в указанный день, но размещает их в дополнение к существующим операциям. А интересно разместить их не только в нужную дату, но и в нужное время.
« Изменён в : 11.08.11 в 16:46:45 пользователем: VLV » Зарегистрирован
Tupitsin

***



Я люблю этот Форум!

   
Просмотреть Профиль | E-мэйл

Сообщений: 191
Re: Подскажите
« Ответить #131 В: 12.08.11 в 09:24:31 »
Цитировать | Править

Когда-то, лет 5 назад, у меня было предложение к Аркадию сделать возможность вводить операцию ПЕРЕД (или ПОСЛЕ, или то и другое) операции с заданным кодом.  Такое добавление  решило бы многие проблемы. К сожалению, предложение не нашло поддержки. Конечно, вручную можно проделать такой финт, но это ОЧЕНЬ трудоемко. И уж точно не средствами сервера.
Зарегистрирован
Boris, Kiev.
Moderator

*****



Адепт ФБП  с 1996г.

   
Просмотреть Профиль | E-мэйл

Сообщений: 842
Re: Подскажите
« Ответить #132 В: 12.08.11 в 09:54:07 »
Цитировать | Править

on 12.08.11 в 09:24:31, Tupitsin wrote:
Когда-то, лет 5 назад, у меня было предложение к Аркадию сделать возможность вводить операцию ПЕРЕД (или ПОСЛЕ, или то и другое) операции с заданным кодом.  Такое добавление  решило бы многие проблемы. К сожалению, предложение не нашло поддержки. Конечно, вручную можно проделать такой финт, но это ОЧЕНЬ трудоемко. И уж точно не средствами сервера.

Не помню, кто делал это предложение первым, но был ответ, что здесь может быть накладка, т.к. возможна ситуация запроса от более одного клиента на регистрацию операции за выбранным штампом и потом гарантировать неизменность желаемого состояния относительного положения операций будет проблематично в общем случае.
Зарегистрирован
Boris, Kiev.
Moderator

*****



Адепт ФБП  с 1996г.

   
Просмотреть Профиль | E-мэйл

Сообщений: 842
Re: Подскажите
« Ответить #133 В: 12.08.11 в 10:02:44 »
Цитировать | Править

on 11.08.11 в 16:45:35, VLV wrote:
Вносить нужно в прошлое.
 
Есть файл с транзакциями продаж от ККМ. В транзакциях есть дата и время. При загрузке этого файла в ФБП сервер регит операции в указанный день, но размещает их в дополнение к существующим операциям. А интересно разместить их не только в нужную дату, но и в нужное время.

Если эти действия Вы планируете делать эпизодически, т.е. раз  от разу при необходимости, то решение может быть таким:
- поднимаете за требуемый день операции;
- добавляете операции от ККМ;
- делаете сорт по времени;
- удаляете старые, а лучше перерегистрируете на имеющиеся и добавляете оставшийся хвост.
 
Почему ККМ не может сразу бомбить в ЖО?
 
P.S. Вам ещё надо будет выставить синхронно время на севрере и ККМ  
 Grin
« Изменён в : 12.08.11 в 10:09:00 пользователем: Boris, Kiev. » Зарегистрирован
Tupitsin

***



Я люблю этот Форум!

   
Просмотреть Профиль | E-мэйл

Сообщений: 191
Re: Подскажите
« Ответить #134 В: 15.08.11 в 10:35:48 »
Цитировать | Править

on 12.08.11 в 09:54:07, Boris, Kiev. wrote:

Не помню, кто делал это предложение первым, но был ответ, что здесь может быть накладка, т.к. возможна ситуация запроса от более одного клиента на регистрацию операции за выбранным штампом и потом гарантировать неизменность желаемого состояния относительного положения операций будет проблематично в общем случае.

Если придет запрос на регистрацию от 2-х, 3-х... клиентов, то они будут разбираться только между собой, кто раньше, а кто позже. Однако, ВСЕ эти операции лягут ПЕРЕД (ПОСЛЕ) заданной. Не вижу конфликтов.
Зарегистрирован
Страниц: 1 ... 7 8 9 10 11  ...  20 Ответить | Уведомлять | Послать Тему | Печатать

« Предыдущая Тема | Следующая Тема »

Powered by YaBB 1 Gold - SP 1.3.2!
Forum software copyright й 2000-2004 Yet another Bulletin Board