Имя: Пароль:
1C
1С v8
Сообщение пользователю при проведении
0 zenon46
 
16.03.23
11:10
Доброго дня!
Конфа самописка на УФ, при проведении документа нужно сообщить пользователю по алгоритму об определенных нюансах, в информационных целях, но т.к. окно закрывается очень быстро то и сообщение исчезает, Отказ = Истина не подходит т.к. документ должен ПРОВОДИТЬСЯ. Гуглил - но вразумительных решений не нашел. Не думаю что никто не сталкивался с такой необходимостью, как решали данную хотелку ?
1 PLUT
 
16.03.23
11:14
ну как вариант добавь табличную часть в сам документ и пиши весь этот бред об определенных нюансах туда :) пользователь зайдет, почитает
2 PLUT
 
16.03.23
11:15
(1) + история бредов о нюансах будет - дата время, бред, пользователь
3 zenon46
 
16.03.23
11:17
(1) не вариант "этот бред" информационный хранить его не нужно от слова совсем.
4 KJlag
 
16.03.23
11:23
(3) как крайний вариант - отправлять письма?
5 RomanYS
 
16.03.23
11:24
(3) если бред, то забей.
Если важно - давай отказ и проводи только при подтверждении пользователем прочтения.
В среднем случае - пиши в регистр или отправляй на почту (естественно не транзакции проведения)
6 arsik
 
гуру
16.03.23
11:26
(0) Покажи как сообщение отправляешь.
7 bolder
 
16.03.23
11:31
(0) Сделай еще одну кнопку провести.И все сообщения будут видны как угодно долго.
8 RomanYS
 
16.03.23
11:35
(7) ну или просто убрать кнопку "Провести и закрыть"
9 bolder
 
16.03.23
11:36
(8) Нет, именно что добавить еще одну.Стандартная возможность все провести закрыть пусть будет.Но и называться она должна также.
10 zenon46
 
16.03.23
11:38
(6) обычно Сообщить
11 RomanYS
 
16.03.23
11:39
(9) тогда проблема не решится, никто не будет нажимать "провести и почитать сообщения"
12 KJlag
 
16.03.23
11:39
(8) как вариант
(7) не подойдет. ибо  по собственному опыту разговоров с юзерами (и рассмотрении с ними возникших ошибок) - просто кнопку записать и провести они не жмут. а сразу жмут "записать и закрыть" или "провести и закрыть". Даже если после этого надо было открыть форму обратно.
13 ГдеСобака Зарыта
 
16.03.23
11:49
(0) В каком-то из событий сообщения остаются после закрытие формы. ПередЗаписью, ПередЗаписьюНаСервере, ПослеЗаписи и т.п. Отпишите только потом где работает.
14 arsik
 
гуру
16.03.23
11:53
(10) А через СообщениеПользователю пробовал?
15 ГдеСобака Зарыта
 
16.03.23
11:58
Сам не поленился, в клиентских событиях ПриЗаписи и ПослеЗаписи сообщения прекрасно остаются после закрытия формы.
16 PLUT
 
16.03.23
12:01
(15) ну дык нужно же в обработке проведения в транзакции (0)

в приличном обществе за это канделябром
17 bolder
 
16.03.23
12:06
(12) Что значит не подойдет?Кому надо - нажмет и будет ситать до посинения, кому не надо нажмет провести и закрыть.Ляпота!Полное решение задачи.
18 PLUT
 
16.03.23
12:11
(17) тем более в (3) этот "бред" информационный. хранить не нужно совсем, а читать и подавно не обязательно
19 ГдеСобака Зарыта
 
16.03.23
12:13
(16) Через доп параметры из обработки проведения передать сообщение на клиент, после записи сообщить.
20 zenon46
 
16.03.23
12:23
(19) пробовал но что-то не взлетело
21 azernot
 
16.03.23
12:28
(0) Используй Оповещение.

Сообщения, с которыми нужно ознакомиться после окончания некоторого процесса, сообщения о проделанной работе. Такие сообщения могут включать информацию о том, что сделано, ее можно посмотреть, но можно и не смотреть. В случае если факт выполнения команды неочевиден для пользователя, система должна выдавать ту или иную реакцию на любую команду. Неправильно молча «проглатывать» нажатие на кнопку формы. Для таких сообщений следует использовать метод глобального контекста ПоказатьОповещениеПользователя(). Оповещение выводится в специальном постепенно затухающем окне в правом нижнем углу экрана (рис. 3.90). Важные для пользователя оповещения (со статусом Важное) запоминаются в центре оповещений, который можно открыть в любое время из панели инструментов.

https://its.1c.ru/db/pubv8devui/content/227/hdoc

Иногда полезно читать документацию и стандарты разработки.
22 bolder
 
16.03.23
12:38
(21) Ну вот уже тяжеловесные решения подтянулись.Документация полезна, но неполна.В случае фоновых задач оповещение пользователю не приведен пример.Но это обычное дело)
23 azernot
 
16.03.23
12:42
(22) А ещё не приведён пример, когда действие выполняет один пользователь, а оповестить надо другого, который вообще сейчас в отпуске :)
Так мы до мышей дойдём.
24 rozer76
 
16.03.23
20:39
(21) это с клиента только. Ему с сервера надо. Вариант или через рс, если в проведении или если еще можно в  передзаписью тогда в сам док пихать в реквизит. Или "система взаимодействия"...
25 maxipunchik
 
16.03.23
20:56
Можно сделать через свою кнопку и показать вопрос или аналоги. Так как вопрос показывается на клиенте, следовательно алгоритм надо вивести в модуль формы и просчитывать не огладываясь на обработку проведения.

Допустим хотел проверить при проведении тот ли контрагент, значит надо проверить это на форме до или после проведения.

Ну а форму закрывать уже можно когда угодно
26 eddy_n
 
17.03.23
02:18
Задачу создавай пользователю, она точно в глаза бросится. Не затухнет.
27 timurhv
 
17.03.23
02:53
В БСП 3.1.7 добавили "Новый механизм серверных оповещений".
Через 1-2 минуту клиент скопом получает эти данные с сервера. Для удобства можно разработать форму со ссылкой и текстом ошибки и открывать пользователю.
28 АгентБезопасной Нацио
 
17.03.23
08:39
Да здравствует костыллинг и велосипеддинг!©
Делаем так:
1. в расширении или в подписке на событие проведения:
&После("ОбработкаПроведения")
Процедура Р_ОбработкаПроведения(Отказ, РежимПроведения)
    Список = ПолучитьСообщенияПОльзователю();
    Если Список.Количество() > 0 Тогда
    УстановитьПривилегированныйРежим(Истина);
    Ключ=ПараметрыСеанса.КлючДанныхПовторногоИспользования;
    ХранилищеОбщихНастроек.Сохранить(
        Ключ, "Сообщения", Список,
        "", ПараметрыСеанса.ТекущийПользователь);
    УстановитьПривилегированныйРежим(Ложь);
    КонецЕсли;
КонецПроцедуры

2. в клиентском модуле после проведения
&Вместо("ОбработатьЗаписьОбъектаВФорме")
Функция Р_ОбработатьЗаписьОбъектаВФорме(Форма, ПараметрыЗаписи, Отказ)
    
    Результат = ПродолжитьВызов(Форма, ПараметрыЗаписи, Отказ);
    
    список = Р_Вспомогательный.ПолучитьСообщенияСеанса();
    Если значениеЗаполнено(список) тогда
        Для каждого эл из список Цикл
            ПоказатьОповещениеПользователя(эл.текст);
        конецЦикла;
    конецЕсли;
    Возврат Результат;
КонецФункции

3. свой серверный общий модуль Р_Вспомогательный:
Функция ПолучитьСообщенияСеанса() Экспорт
    УстановитьПривилегированныйРежим(Истина);
    Ключ=ПараметрыСеанса.КлючДанныхПовторногоИспользования;
    ОписаниеНастроек = Неопределено;
    список=ХранилищеОбщихНастроек.Загрузить(
        Ключ, "Сообщения", ОписаниеНастроек, ПараметрыСеанса.ТекущийПользователь.Наименование);
    ПустойМассив=новый Массив;    
    ХранилищеОбщихНастроек.Сохранить(
        Ключ, "Сообщения", ПустойМассив,
        "", ПараметрыСеанса.ТекущийПользователь);
    УстановитьПривилегированныйРежим(Ложь);
    возврат список;
КонецФункции
29 АгентБезопасной Нацио
 
17.03.23
08:41
(0) не надо гуглить, надо делать!
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс