Автор |
Тема: Подскажите (Прочитано 28471 раз) |
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 874
|
on 15.08.11 в 10:35:48, Tupitsin wrote: Если придет запрос на регистрацию от 2-х, 3-х... клиентов, то они будут разбираться только между собой, кто раньше, а кто позже. Однако, ВСЕ эти операции лягут ПЕРЕД (ПОСЛЕ) заданной. Не вижу конфликтов. |
| Тонкость этого вопроса в том, что пользователь получив возможность зарегистрировать операцию «ЗА ТЕКУЩИМ ШТАМПОМ» по умолчанию считает, что это состояние относительного положения двух операций незыблемо, также как оно незыблемо в первых уже имеющихся трех ранжирах(«в начале дня», «в общем порядке» и «в конце дня»). Ведь предоставив такую возможность может запросто нарушиться хронология(про простую перебивку операций не говорю) в каждом из ранжиров, а посему эта возможность не аналогична первым трем, потому ей и не место здесь, хотя также долго не мог с этим согласиться, но окончательно успокоился, когда сделал формочку по перестановке двух операций местами(ведь в локале живет и часто востребована эта встроенная возможность). Согласен, что если упротребить «ПОСЛЕ ТЕКУЩЕГО ШТАМПА», то конфликта нет, но тогда зачем это делать, если, пожалуйста, сегодня регистрируй операцию в нужном ранжире и получишь тоже самое, просто представь, что коллеги наплодят(пользуясь этой же возможностью) за выбранным Вами штампом тот же самый массив, который якобы Вам сейчас мешает. Добавлю, что следующий шаг в этом направлении – копирование операций в конец или начало ОП, заставил забыть и не вспоминать об этой просьбе.
|
|
Зарегистрирован |
|
|
|
Tupitsin
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 191
|
Ввод операций "В общем порядке" меняет последовательность для операций "В конце дня". Ввод "В начале дня" меняет последовательность для операций "В общем порядке" и "В конце дня". Т.о. смена последовательности уже заложена в нынешнем варианте. Ввод "перед штампом" или "после штампа" лишь детализирует эту возможность. Кроме того, вовсе не обязательно давать эту возможность оператору напрямую из клиента. А вот дать такую возможность администратору просто необходимо. Пример 1: оператор "A E ·счет· BA=число " не может быть использован напрямую из клиента. Только через форму. Представляете себе, заменить вручную начальное значение счета! Это Вам не операции переставить. Однако, такая возможность есть. Пример 2 В однопользовательской версии определена клавиша: F9 - переставить две соседние операции одной даты; (Или уже нет? Давно не пользовался однопользовательской версией) Это разве не то же, что ввести операцию перед заданной? Последовательное применение этой клавиши перенесет операцию куда угодно. Почему бы не дать такую же возможность в сетевой версии?
|
« Изменён в : 16.08.11 в 09:17:51 пользователем: Tupitsin » |
Зарегистрирован |
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 874
|
on 16.08.11 в 09:15:35, Tupitsin wrote:Ввод операций "В общем порядке" меняет последовательность для операций "В конце дня". Ввод "В начале дня" меняет последовательность для операций "В общем порядке" и "В конце дня". Т.о. смена последовательности уже заложена в нынешнем варианте. |
| Похоже Вы не вникаете. Ещё раз, сегодня есть три ранжира, последовательность операций в каждом из них незыблема, т.е. например введя 10 операций в "начале дня", Вам не удасться изменить эту последовательность, например, введя между 2-ой и 3 -ей, только есть возможность добавлять в хвост каждого ранжира. Да согласен, что сервер вставляя операцию в конец каждого ранжира знает штамп, за которым он внедряет новую операцию, но давать возможность это делать свободно пользователю не целесообразно по вышеизложенным мотивам, а также с учетом не простых вопросов тельных операций многострочников и резервирования пространства для каждой операции( а не для трех ранжиров в дне) в общем случае для быстрого выполнения таких вставок.
|
|
Зарегистрирован |
|
|
|
Tupitsin
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 191
|
Ну нет, так нет. Как всегда, будем ездить из Москвы в Петербург через Владивосток. Нам не привыкать. (Хотя аргументы не убедили).
|
|
Зарегистрирован |
|
|
|
BBBB
Я люблю этот Форум!
Просмотреть Профиль |
Сообщений: 89
|
Может, подскажет кто сразу или даст толковую ссылку: нужен управляющий код для лазерного принтера с usb-портом для выталкивания листа в нужный момент (для отчетной формы).
|
|
Зарегистрирован |
|
|
|
VLV
Я люблю Финансы без проблем!
Просмотреть Профиль |
Сообщений: 231
|
Quote:Почему ККМ не может сразу бомбить в ЖО? |
| Чтобы ККМ бомбила в ЖО логично сделать РМ ККМ на основе ФБП-Сервер+ФБП-Клиент. Изначально я реализовал подобную штуку на основе Сервер+КлиентФорм. Но отсутствие у СервераФБП и КлиентаФорм возможности запустить их в в режиме приложения, или хотя бы свернуть в тулбар (я уж не говорю вместо Эксплорера) (плюс еще некоторые недочеты в этих программах) не позволяют их эксплуатировать в реальных условиях. Но и в этом случае для сети магазинов в разных точках расчитывать на надежность связи неверно. Следовательно бомбить сервер со всех удаленных точек не получется в реальном времени, придется, при необходимости собрать продажи в одно место, делать периодически. В итоге РМ товароведа получилось на основе ФБПСервер+КлиентФорм, РМК пришлось приобретать у стороннего производителя. В моем случае им оказался Фонтол. Фронтол - это софт, опирающийся на ФаерБест, и взаимодействие с ним возможно только в виде получения файла транзакций по запросу со стороны ФБП. Такая вот петрушка вышла. Если кто в этой области что делал...поделитесь, плз, хотя бы общими подходами к решению. С уважением, Владимир.
|
« Изменён в : 29.08.11 в 15:55:58 пользователем: VLV » |
Зарегистрирован |
|
|
|
VLV
Я люблю Финансы без проблем!
Просмотреть Профиль |
Сообщений: 231
|
Поясните для общего понимания ПЛЗ! *ОФ *Отправка директивы DR на сервер посредством PRINTSTR DR+[CH 13]+[CH 10] TO > FILE F.rq RENAMEFILE F.rq TO F.in Ожидание события появления в каталоге обмена ответа от сервера для последующей обработки loadtxt F.out ... Дождаться события появления файла не удается. После таймаута форма заканчивает работу и только после этого появляется в каталоге обмена долгожданный файл... Должно так быть? И по каким соображениям? Понятно что ФК, или многострочный запрос должен выполняться за одну транзакцию, но для ОФ возможноли обойти эту проблемму? Кстати возникает ситуация когда форма надолго зависает, возможно ли ее выполнение прервать чем нибуть кроме выключения сервера? С уважением, Владимир.
|
« Изменён в : 22.09.11 в 14:44:29 пользователем: VLV » |
Зарегистрирован |
|
|
|
Denis, Dnepropetrovsk
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 129
|
on 22.09.11 в 14:42:31, VLV wrote:Поясните для общего понимания ПЛЗ! *ОФ *Отправка директивы DR на сервер посредством PRINTSTR DR+[CH 13]+[CH 10] TO > FILE F.rq RENAMEFILE F.rq TO F.in Ожидание события появления в каталоге обмена ответа от сервера для последующей обработки loadtxt F.out ... Дождаться события появления файла не удается. После таймаута форма заканчивает работу и только после этого появляется в каталоге обмена долгожданный файл... Должно так быть? И по каким соображениям? Понятно что ФК, или многострочный запрос должен выполняться за одну транзакцию, но для ОФ возможноли обойти эту проблемму? Кстати возникает ситуация когда форма надолго зависает, возможно ли ее выполнение прервать чем нибуть кроме выключения сервера? С уважением, Владимир. |
| [b][/b] а каким образом организуется "Ожидание события появления в каталоге обмена ответа от сервера для последующей обработки loadtxt F.out" (пока сервер не ответит на эту форму никакие другие формы не обслуживаются, поэтому и нет ответа F.out) Для Вашего случая в CLW нужно после "PRINTSTR DR+[CH 13]+[CH 10] TO > FILE F.rq RENAMEFILE F.rq TO F.in " делать что-то вроде N:AUTO:R OTVET ·F.out· N:AUTO:#CLOSE А Форма OTVET должна содержать программу: F=[is 'Файл ответа','',80] if [fe F]=-1 это для случая, если сервер первым обработает текущую форму а не F.in printstr 'N:AUTO:R OTVET ·'+f+'·'+[ch 10] N:AUTO:#CLOSE else ***обработка loadtxt F.out endif
|
« Изменён в : 24.09.11 в 12:29:34 пользователем: Denis, Dnepropetrovsk » |
Зарегистрирован |
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 874
|
on 24.09.11 в 12:21:37, Denis, Dnepropetrovsk wrote: Для Вашего случая в CLW нужно после "PRINTSTR DR+[CH 13]+[CH 10] TO > FILE F.rq RENAMEFILE F.rq TO F.in " делать что-то вроде N:AUTO:R OTVET ·F.out· N:AUTO:#CLOSE А Форма OTVET должна содержать программу: F=[is 'Файл ответа','',80] if [fe F]=-1 это для случая, если сервер первым обработает текущую форму а не F.in printstr 'N:AUTO:R OTVET ·'+f+'·'+[ch 10] N:AUTO:#CLOSE else ***обработка loadtxt F.out endif |
| Ай,я,яй, Денис на Вас это не похоже. Интересно, Вы предлагаете код, проверяли ли Вы его и на каких версиях? Раскладывать по полочкам не буду, просто есть желание учредить правило подобных публикаций: - Предлагаемый код должен отрабатывать решаемую задачу на указанных версиях сервера и клиента.
|
|
Зарегистрирован |
|
|
|
Denis, Dnepropetrovsk
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 129
|
Код я не проверял (цель поста была не дать рабочий пример, а объяснить почему бессмысленно ожидать ответ от сервера в форме, которая делает запрос в файл). А по поводу кода: Ну во-первых я же написал что-то вроде А во-вторых я очень часто использую подобные конструкции в своих настройках и на 99% уверен что код рабочий для CLW в связке с сервером 4.11 и выше.
|
|
Зарегистрирован |
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 874
|
on 27.09.11 в 12:19:50, Denis, Dnepropetrovsk wrote:Код я не проверял (цель поста была не дать рабочий пример, а объяснить почему бессмысленно ожидать ответ от сервера в форме, которая делает запрос в файл). А по поводу кода: Ну во-первых я же написал что-то вроде А во-вторых я очень часто использую подобные конструкции в своих настройках и на 99% уверен что код рабочий для CLW в связке с сервером 4.11 и выше. |
| Объяснений или оправданий не нужно, давайте по сути. Интересно, всё-таки проверили свой код или нет? Больше «нет», чем «да», иначе про «бессмысленность» не написали бы, а дошли до своего решения, может быть нового для меня.
|
|
Зарегистрирован |
|
|
|
Denis, Dnepropetrovsk
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 129
|
Вот рабочий пример для получения ответа: Клиент CLW сервер 4.14 x64 3 формы: testz.rpt делает запрос "R testo" записью в файл testo.rpt форма для выполнения testp.rpt ожидает ответ и выводит то что ответил сервер Запускаем testz ------------------------------------- Код testz.rpt: ------------------------------------- *Тест запроса директивой *.on *,off US='***' имя пользователя KS='***' пароль пользователя call FR printstr [strip US+'·'+KS]+'··R testo' to file v call FZ renamefile v to v1 ****файл ответа vo=[cp v1,1,[length v1]-2]+'out' printstr 'N:AUTO:R testp ·'+vo+'·'+[ch 10] printstr 'N:AUTO:#CLOSE'+[ch 10] stop ********** :FR поиск свободного канала для записи директив f=[dir 1] каталог обмена i=1 v=f+[intsn i]+'.req' while ([fe v]<>-1)&(i<1000) i=i+1 v=f+[intsn i]+'.req' endwhile if i>1000 Каталог обмена не обслуживается!!!!! stop endif \>file v return ********** :FZ поиск свободного файла для записи директив f=[dir 1] каталог обмена i=1 v1=f+[intsn i]+'.in' v2=f+[intsn i]+'.out' while ([fe v1]<>-1)&(i<1000) i=i+1 v1=f+[intsn i]+'.in' v2=f+[intsn i]+'.out' endwhile if [fe v2]<>-1 deletefile v2 endif if i>1000 Каталог обмена не обслуживается!!!!! stop endif return ------------------------------------- Код testo.rpt: ------------------------------------- *Ответ сервера *.on *,off printstr 'Время выполнения: '+[tm] stop ------------------------------------- Код testp.rpt: ------------------------------------- *Ожидаем ответ от сервера *.on *,off F=[is 'Файл ответа','',80] if [fe F]=-1 это для случая, если сервер первым обработает текущую форму а не F.in printstr 'N:AUTO:R testp ·'+f+'·'+[ch 10] else ***обработка loadtxt F.out Сервер ответил: loadtxt F LX=[ged 'lt.N']+0.1 for i=1 to LX ST=[ged 'lt.'+[intsn i]] if ST<>'' if ST=0 ST=' пустая строка';endif;else ST=' пустая строка';endif printstr ST+[ch 10] endfor endif stop Буду рад если кому-нибудь это поможет)
|
|
Зарегистрирован |
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 874
|
on 28.09.11 в 15:29:32, Denis, Dnepropetrovsk wrote: F=[is 'Файл ответа','',80] if [fe F]=-1 это для случая, если сервер первым обработает текущую форму а не F.in printstr 'N:AUTO:R testp ·'+f+'·'+[ch 10] else ***обработка loadtxt F.out endif stop |
| Суть в этом и она не изменилась. Что будет, если сюда всё-таки состоится заход? Проверьте. Мягко говоря, алгоритм окажется несостоятельным.
|
|
Зарегистрирован |
|
|
|
Denis, Dnepropetrovsk
Я люблю этот Форум!
Просмотреть Профиль | E-мэйл
Сообщений: 129
|
Проверил. За 2 мин. настроил что-бы работало как надо дописал в testp.rpt пару строчек --------------- *Ожидаем ответ от сервера *.on *,off F=[is 'Файл ответа','',80] F1=[ir '',0,0] if F1=20 stop;endif if [fe F]=-1 это для случая, если сервер первым обработает текущую форму а не F.in printstr 'N:AUTO:R testp ·'+f+'·'+[intsn F1+1]+'·'+[ch 10] printstr 'N:AUTO:#CLOSE'+[ch 10] else ***обработка loadtxt F.out Сервер ответил: loadtxt F LX=[ged 'lt.N']+0.1 for i=1 to LX ST=[ged 'lt.'+[intsn i]] if ST<>'' if ST=0 ST=' пустая строка';endif;else ST=' пустая строка';endif printstr ST+[ch 10] endfor endif stop и в тестz.rpt пару символов вместо printstr 'N:AUTO:R testp ·'+vo+'·'+[ch 10] добавил "1·" printstr 'N:AUTO:R testp ·'+vo+'·1·'+[ch 10]
|
|
Зарегистрирован |
|
|
|
Boris, Kiev.
Адепт ФБП с 1996г.
Просмотреть Профиль | E-мэйл
Сообщений: 874
|
Проверяли "до 20" или нет? Но задача же не решена, принципиально, даже если организуете бесконечную инверсию параметра, без которой форма "отлетает".
|
|
Зарегистрирован |
|
|
|
|
|