1С 8.3 УФ. Вывести "Вопрос" при записи элемента справочника #726646


#0 by mishkerdon
Доброе утро! В модуле объекта справочника есть код проверки в событиях "ПередЗаписью" и "ПриЗаписи", нужно вывести "Вопрос" после этой проверки пользователю до окончательной записи элемента справочника. Но выходит, если смотреть последовательность событий, то после "ПриЗаписи" в модуле объекта остаются только два события: "ПриЗаписиНаСервере" и "ПослеЗаписи" в модуле формы. В "ПриЗаписиНаСервере" нельзя клиентские функции вставлять, а в "ПослеЗаписи" нельзя отменить запись. Как можно поступить в этом случае??
#1 by SergeyKB
>в модуле объекта исполняется на сервере, забудьте про интерактивную работу с клиентов оттуда C учётом, что Вопрос модальный диалог, а теперь 1С рекомендует внедрять через механизмы  ассинхронных обработчиков, то лучше вам пересмореть сценарийинтерфейс работы а объяснить для начала, что будет в данном вопросе ?
#2 by mishkerdon
в данном вопросе выводится предупреждение об неустановленных реквизитах (с возможность продолжить или нет). Эти реквизиты устанавливаются или снимаются в проверке в модуле объекта.
#3 by Cube
Что мешает сделать проверку в процедуре формы ПередЗаписью?
#4 by mishkerdon
проверка должна выполняться всегда, даже при записи из кода и т.п.
#5 by Рэйв
Какие могут быть вопросы когда чтото неправильно заполенно? В ПередЗаписью Отказ=Истина и всех  в сад с сообщением пользователю. Пусть исправляют
#6 by SeraFim
ага, запускается фоновое задание с обменом. И у кого твой код будет спрашивать?
#7 by МимохожийОднако
У нужных реквизитов установи режим выдачи ошибки при пустых значениях. Система сама спросит и пошлёт.
#8 by Cube
Так ты делай процедуру &НаСервере в которой всё проверяешь и вызывай её в процедурах: - в форме &НаКлиенте с выводом сообщений - в модуле объекта без вывода сообщений. Просто Отказ = Истина.
#9 by Cube
Можно сделать, чтобы функция проверки возвращала текст ошибки. И если текст ошибки не пустой, то не записывать. &НаКлиенте текст ошибки ещё и выводить пользователю в лицо.
#10 by mishkerdon
Нет подождите, я пишу про разные вещи - есть код проверки в модуле объекта (он проверяет статус реквизитов и устанавливает или снимает их) и есть код проверки заполненности одного реквизита (необязательное заполнение, т.е. "Вопрос" передается как ДаНет, пользователь может продолжить запись и без этого реквизита). Но проблема в том, что этот код правильно сработает только после проверки и установки реквизитов в модуле объекта.
#11 by mishkerdon
пока так и сделал, т.е. вынес код проверки в модуле объекта из процедуры "ПриЗаписи" в отдельную процедуру, и вызываю ее и в "ПередЗаписью" на форме, и в "ПриЗаписи" в объекте. Но насколько это правильно не знаю, так как в будущем как раз таки этот код может стать рекурсивным.
#12 by Рэйв
Если идет программная запись, значит все так и надо как есть.Потому что ты сам должен программно заполнить как надо.а если интерактивная запись, то спрашивай в модуле формы. В ПередЗаписью в модуле объекта паровоз уже ушел на сервер и там спрашивать уже не у кого.
#13 by Рэйв
+>>Эти реквизиты устанавливаются или снимаются в проверке в модуле объекта. ничего не мешает делать те же проверки в модуле формы.
#14 by mishkerdon
Вам наверно уже смешно, но дважды запускать эту проверку в одной транзакции нельзя :)
#15 by Рэйв
Тогда скинь бремя метаний и сомнений и считай, что юзверь умный, и перед записью все заполнил как ему надо. А если не заполнил - то он сам себе злобный буратино:-)
#16 by Kamas
ВызватьИсключение "Злобный буратино сделай как надо";
#17 by olegves
зачем коряво программить? При записи активна транзакция, и общение с юзверями не комильфо - длительная блокировка гарантирована. Все общения с юзверями - вне транзакций - заруби себе на носу...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С