Вопрос по очистке полей

  • Автор темы Автор темы Gor
  • Дата начала Дата начала
ой, моя ошибка... display:none правильно писать...
вот нечего слушать каких-то там программистов с форума, надо справочник юзать :)
 
Спасибо огромное за выдержку и терпение))) получилось))
 
Назрел ещё один вопрос :rolleyes:

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

Код:
@SetField("AlreadyVotedPersons";@Trim(AlreadyVotedPersons:@UserName));
@Success

Опять же вопрос, как мне им выдавать ошибку о том что они уже голосовали?

Повесил на button такой код

@If(@IsMember(@UserName; AlreadyVotedPersons); @Failure("Error: You have already voted"); @Do(@Command([ToolsRunMacro]; "(MegaFoodSubmitVote)")

К сожалению ошибка не выскакивает а просто не проходт Submit формы...(
 
У тебя все голосуют в одном документе? Зачем так? Почему бы не сделать каждый голос отдельным документом.
Тогда проверку можно запихнуть в агент.
 
Да, голосуют все в одном... Да мне казалось что так удобнее будет в одном документе хранится история всех тех кто проголосовал.
В агенте у меня обработка ошибок вся есть. Но агент же не позволит визуализировать ошибки в WEB в риал тайме? А у меня именно проблема с визуализацией ошибок... Т.е. как пользователю вывести сразу на экран после того как он нажал на кнопку, что тестирование он уже проходил, беря значение из поля в текущей документе...
В агенте проверяется одной строчкой - If Instr(Join(doc.AlreadyVotedPersons), doc.Originator(0))>0 Then...
 
Имхо, в отдельном будет лучше.
Проверку можно сделать как в WebQueryOpen(т.е. до открытия документа), так и в WebQuerySave(после submit, но это плохо).
В первом случае можно вывести сообщение, что пользователь уже голосовал. Причем можно вывести его результаты и даже дать возможность изменить что-то.

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

Хотя насчет вывода сообщения я не уверен, но показать, что он голосовал можно. :rolleyes:
 
я бы сделал так:

- каждое голосование / тест в отдельном доке;
- начать голосование можно лишь нажав на определенную кнопку, которая располагается в виде, на какой-то форме, но не открывая документ голосования;
- кнопка запустила бы урл-агент (запускается от имени пользователя), агент бы проверил голосовал ли текущий юзер по определенной теме, т.е. есть ли уже документ голосования;
- если документ есть, агент принтит сообщение, что голосование уже было и либо ничего не делает, либо открывает тот документ где юзер уже голосовал;
- если документа нету - агент открывает урл нового согласования обычным принтом команды OpenForm, либо сначала создает на бэк-энде документ, сохраняет его и открывает принтя урл-команду EditDocument, что предпочтительнее;
- если выбрали вариант создания нового дока по урлу, то в агенте WebQueryOpen придется сделать доп. проверку наличия голосования, на случай, если "умный" юзер сам пойдет по урлу, а не через агент, и, если голосование было, то прописать в доке поле, которое должно быть проверено JS на onLoad, если там флаг, что было согласование, то поступать как агент - сообщение и закрытие, либо открытие старого дока-голосования...
 
На самом деле уже неохото переделывать угента по формированию отчётов в Excel...
Что я хочу сделать ещё это только проверить поле AlreadyVotedPersons. Ведь мой вариант тоже имеет право на жизнь?)

Так значит такого рода проверка походит?

@If(@IsMember(@UserName; AlreadyVotedPersons); @Failure("Error: You have already voted"); @Success);

Она у меня почему то не срабатывает на WebQueryOpen документа....не принтится ошибка....Главный вопрос как её вывести на экран например по открытию дока и прервать дальнейшие действия с документом?
Или как вывести ошибку на экран в веб по проверке If Instr(Join(doc.AlreadyVotedPersons), doc.Originator(0))>0 Then в скриптовом агенте??
 
не ребята, принты в WQO игнорируются, придется писать в какое-то поле, и зачитывать на onLoad...
 
что ж тут не понятного? - при открытии :)
зачем сабмита дожидаться? ты же сам писал: "Зачем ему терять время?" ;)

еще можно поле, в котором флаг будет, в самом верху страницы уцепить, а за полем сделать <script>, в котором будет проверка, тогда можно даже до формирования документа выдать сообщ, и закрыться
 
Сделал проверку на JS. Правда повесил её всё таки на Submit=)) Нашёл на JS explode и пример массива)
Спасибо за помошь!!
 
ну, вот зачем с самого начала учиться плохому? :)
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab