Имя: Пароль:
1C
1С v8
Показать оповещение пользователю
,
0 DmitrYY
 
14.01.22
10:10
Всем привет! Есть документ у которого есть реквизит "Задача". Требуется чтобы в системе не было двух документов с одинаковой задачей. Нужно при проведении выполнить проверку и показать оповещение пользователю (если уже есть документ с такой задачей), с ссылкой на документ, на которую можно нажать и открыть документ.
Проблемы в проверке нет, есть проблема с выводом оповещения. Проверку я делаю в модуле объекта "ПередЗаписью", а оповещение можно показать только на клиенте. Видимо нужно по другому совсем делать. В общем нужна помощь, как это все сделать?
1 DmitrYY
 
14.01.22
10:11
(0) Если есть в системе документ с такой задачей, то текущий документ не должен проводиться
2 Momus
 
14.01.22
10:16
ОбщегоНазначения.СообщитьПользователю лучше же. Можно сразу проблемный реквизит подсветить
3 DmitrYY
 
14.01.22
10:20
(2) дело не в подсветке, мне нужно именно оповещение пользователя, чтобы можно было тыкнуть и открыть документ
4 Momus
 
14.01.22
10:26
(3) И это оповещение нужно создавать при любом изменении документа (даже другим пользователем)?
5 DmitrYY
 
14.01.22
10:28
(4) не при любом изменении документа, а именно при проведении идет проверка, если проверка не прошла, то показываем оповещение со ссылкой на документ
6 Momus
 
14.01.22
10:31
(5) Кто проводит? Текущий пользователь из какой-либо формы? Метод доступен только на клиенте, нужно привязываться в форме. Если документ проводит текущий пользователь из формы документа, то почему не добавить это оповещение в контексте формы?
7 Momus
 
14.01.22
10:33
Можно добавить регистр сведений и при проведении делать запись в нем, а обработчиком ожидания проверить сообщения, но все равно нужна открытая форма, где будет вызван этот метод.
8 DmitrYY
 
14.01.22
10:34
(6) А как, в модуле формы в событии ПередЗаписью нельзя вызвать серверную процедуру(для проверки существования такого же документа), в событии ПередЗаписьюНаСервере можно сделать проверку, но как вернуть результат проверки на клиент и показать оповещение? Без РС никак?
9 Momus
 
14.01.22
10:39
(8) Почему нельзя? Внеконтекстный вызов возможен. Параметром передаем ссылку (или значение реквизита, если документ еще не создан) и возвращаем результат есть такой документ или нет.
10 Ryzeman
 
14.01.22
10:42
(8) У тебя по самой логике задаче нужна проверка при интерактивном заполнении поля, что бы пользователь не смог задвоить. Так и сделай её на форме.
Ты хочешь интерактивные на интерактивные действия пользователя интерактивно реагировать (показать на форме оповещение) но при этом используешь серверные процедуры объекта...
11 Ryzeman
 
14.01.22
10:43
(10)+ к тому же допустим сохранит пользователь задвоенную задачу, а потом из формы списка начнёт проводить, или вообще обработка в регламентном задании. Кто должен увидеть это оповещение будет и где?
12 Мимохожий Однако
 
14.01.22
10:45
Перед записью сообщай об ошибке  и очищай реквизит задача. При выдаче сообщения есть возможность активировать очищаемый реквизит для правильного ввода. Посмотри в СП СообщениеПользователю.
13 DmitrYY
 
14.01.22
10:46
(9) да, оказывается можно, неправильно понял описание из СП. Спасибо
14 DmitrYY
 
14.01.22
10:47
(11) оповещение только когда из формы проводится, для формы из списка можно просто вывести сообщение, а для РЗ в журнал записать ошибку.
15 DmitrYY
 
14.01.22
10:48
(14) хотя, для формы списка тоже можно наверное вывести оповещение?