| 
    
        
     
     | 
    
  | 
1с вывод сообщения со статусом | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Sargez    
     18.08.17 
            ✎
    10:50 
 | 
         
        Здравствуйте,
 
        На первый взгляд простецкая задача, но не могу решить. В подписке при проверки записи элемента выдаются сообщения пользователю. Реаллизовано через механизм ОбщегоНазначенияКлиентСервер.ДобавитьОшибкуПользователю И ОбщегоНазначенияКлиентСервер.СообщитьОшибкиПользователю. при отказе выдаются сообщения. НО заказчик захотел чтобы сообщения , которые не дают записать элемент маркировались красным знаком "!", а сообщения , которые информативные и все равно дают записать элемент (такие есть) маркировались "i" - информация. аналог был в прошлом - сообщить(текст,статуссообщения) - но во-первых на платформе 8.3.10 - сообщения все равно не маркируются, ну а во-вторых какой-то старый способ. какие есть предложения по решению данного вопроса? механизм оповещения пользователя тоже больше нет, чем да, тк может быть очень много всплывающих окон. Заранее благодарен!  | 
|||
| 
    1
    
        Denis_CFO    
     18.08.17 
            ✎
    11:03 
 | 
         
        (0) ну добавь перед текстом сообщения ! или i. и сообщай.     
         | 
|||
| 
    2
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    11:04 
 | 
         
        В общем случае такое не решить, так как запись не всегда происходит из клиентской формы.
 
        В частном случае, если речь идёт о какой-то конкретной форме, можно сделать так: 1 — добавляешь на форму новый реквизит типа строка 2 — в событии "перед записью" формы создаёшь помещаешь во временное хранилище пустое значение, адрес временного хранилища помещаешь в созданный тобой реквизит 3 — передаёшь адрес временного хранилища черед дополнительные параметры объекта, адрес становится доступен в событии 4 — вместо использования "сообщить ошибку пользователю" помещаешь все сообщения в объект и по адресу временного хранилища 5 — в событии "после записи" формы смотришь, есть ли что-то во временном хранилище 6 — если есть, выводишь в любом удобном для себя виде через какое-то новое окно, используя "форматирование текста" например  | 
|||
| 
    3
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    11:07 
 | 
         
        а если совсем попроще и без цвета, то при выводе группируй сообщения — сначала важные, потом неважные, с выводом заголовков. 
 
        Важные сообщения: Первое Второе Неважные сообщения Первое Второе  | 
|||
| 
    4
    
        dezss    
     18.08.17 
            ✎
    11:10 
 | 
         
        ПоказатьОповещениеПользователя     
         | 
|||
| 
    5
    
        dezss    
     18.08.17 
            ✎
    11:10 
 | 
         
        (4) + Картинку сможешь поставить какую захочешь.     
         | 
|||
| 
    6
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    11:14 
 | 
         
        (3) "после записи" при отмене записи не вызывается, на "после записи" повесить не получится(     
         | 
|||
| 
    7
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    11:14 
 | 
         
        (6) -> (2)     
         | 
|||
| 
    8
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    11:15 
 | 
         
        (4) показатьоповещениепользователя не работает на сервере     
         | 
|||
| 
    9
    
        dezss    
     18.08.17 
            ✎
    11:18 
 | 
         
        (8) на сервере нет, но какой смысл выводить что-то на сервере. Это же интерактивная работа с объектом, так что все это имеет смысл только в модуле формы, а что-то выводить при, например, массовой перепроводке документов ИМХО глупо.     
         | 
|||
| 
    10
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    11:18 
 | 
         
        к (2) вместо "После записи" можно использовать ПодключитьОбработчикОжидания, который после записи с периодичностью 0.5 секунды в течение N секунд будет смотреть, не появилось ли что-то во временном хранилище, и если появилось, выведет это что-то     
         | 
|||
| 
    11
    
        dezss    
     18.08.17 
            ✎
    11:18 
 | 
         
        (10) 0.5 нельзя...минимум 1. Если 0.5, то он выполнится только 1 раз.     
         | 
|||
| 
    12
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    11:19 
 | 
         
        (11) да     
         | 
|||
| 
    13
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    11:19 
 | 
         
        (9) ну так тут как раз и идёт речь о том, чтобы передать что-то с клиента на сервер. Если он на клиенте получит информацию, то её уже можно вывести как угодно — хоть через ПоказатьОповещение... , хоть через своё окно     
         | 
|||
| 
    14
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    11:19 
 | 
         
        с сервера на клиент*     
         | 
|||
| 
    15
    
        Sargez    
     18.08.17 
            ✎
    11:22 
 | 
         
        (2) так если будет ошибка, которая не дает записать объект. после записи не будет вызываться.     
         | 
|||
| 
    16
    
        dezss    
     18.08.17 
            ✎
    11:22 
 | 
         
        (14) Насколько я понял, у автора дилема именно с маркировкой сообщения, а не с передачей чего-то на клиент.     
         | 
|||
| 
    17
    
        Sargez    
     18.08.17 
            ✎
    11:22 
 | 
         
        (10) да, через ПодключитьОбработчикОжидания - вариант.     
         | 
|||
| 
    18
    
        dezss    
     18.08.17 
            ✎
    11:25 
 | 
         
        В общем, вот варианты оповещений, может что-то подойдет.
 
        http://xn----1-bedvffifm4g.xn--p1ai/articles/вывод-сообщений-пользователю/  | 
|||
| 
    19
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    11:27 
 | 
         
        (16) проблема у автора в том, что сообщения с сервера доступны только в одном формате — через оператор Сообщить(..), лишённый возможностей форматирования, а по условиям задачи нужно форматировать. А форматировать можно только на клиенте. Соответственно, нужно после записи получить текст с сервера на клиент.     
         | 
|||
| 
    20
    
        dezss    
     18.08.17 
            ✎
    11:30 
 | 
         
        (19) Тогда вопрос больше в архитектуре. Зачем городить огород, если работа идет интерактивно? Можно же все сделать в модуле формы.     
         | 
|||
| 
    21
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    11:37 
 | 
         
        (20) А что изменит изменение архитектуры? Запись никогда не будет происходить на клиенте, и тебе всё равно нужно будет получить тексты сообщений, тем или иным образом, в форме элемента и именно после записи     
         | 
|||
| 
    22
    
        dezss    
     18.08.17 
            ✎
    11:41 
 | 
         
        (21) Как это что изменит? Если осуществлять свои проверки именно в модуле формы перед записью, а не в подписке, возвращать туда результаты и в зависимости от них выводить сообщения, то проблемы у ТС и не будет.     
         | 
|||
| 
    23
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    11:48 
 | 
         
        (22) перенос функциональности из подписки в модуль формы ПередЗаписью никак не изменит способ получения сообщений на клиенте после записи. Тебе всё равно придётся использовать адрес во временном хранилище, который ты инициализируешь перед записью. Тебе всё равно придётся получать данные из этого адреса опосредованно, из обработчика ожидания.     
         | 
|||
| 
    24
    
        dezss    
     18.08.17 
            ✎
    11:51 
 | 
         
        (23) Зачем после записи, ведь перед? Да и какой в этом смысл, ведь после записи мы не можем отменить запись, а это ведь нужно в задаче ТС.
 
        Да и временное хранилище не обязательно. Добавить отдельный реквизит формы для этих сообщений и заполнять его.  | 
|||
| 
    25
    
        Sargez    
     18.08.17 
            ✎
    11:52 
 | 
         
        (22) вопрос все-таки остается все равно. как в сообщении в всплывающем окне промаркировать? всплывающие окна в виде показатьоповещениюпользователю не подходят заказчику.
 
        даже если я все сообщения получу на клиенте - то как промаркировать? те сделать красный восклицательный знак или синию букву "i"  | 
|||
| 
    26
    
        dezss    
     18.08.17 
            ✎
    11:56 
 | 
         
        (25) Почему не подходят? Группировать сообщения по критичности и их будет всего 2. Одно с красным восклицательным знаков, второе с синей i. Если не успели невести курсор и прочитать, есть история.
 
        В конце концов, если вообще никак не подходят, то нарисуй свою форму с выводам сообщения.  | 
|||
| 
    27
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    12:04 
 | 
         
        (24) как и в какой момент ты будешь заполнять предлагаемый тобой отдельный реквизит формы?
 
        Попробуй на пустом конфигураторе реализовать предлагаемое тобой, и тогда может быть поймёшь суть вопроса автора топика.  | 
|||
| 
    28
    
        dezss    
     18.08.17 
            ✎
    12:05 
 | 
         
        (27) Это я на твое сообщение о том, как передавать из ПередЗаписью в ПослеЗаписи в модуле формы.     
         | 
|||
| 
    29
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    12:07 
 | 
         
        (28) Всё равно попробуй реализовать сказанное тобой.     
         | 
|||
| 
    30
    
        dezss    
     18.08.17 
            ✎
    12:09 
 | 
         
        (29) Ща, сохраню конфу и попробую. Пройдусь отладчиком.     
         | 
|||
| 
    31
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    12:10 
 | 
         
        (25) ну так в подписке собирай сообщения не в строковый реквизит, а например в такой объект:
 
        Структура = Новый Структура; Структура.Вставить("Ошибки", МассивСообщенийОбОшибке); Структура.Вставить("Предупреждения", МассивПредупреждающихСообщений); // И потом: ПоместитьВоВременноеХранилище(Структура, НашАдрес);  | 
|||
| 
    32
    
        dezss    
     18.08.17 
            ✎
    12:13 
 | 
         
        (31) Он не про то, как получить разделить ошибки, а про то, как именно показать знаки.
 
        Всплывающих вроде только 2. СообщениеПользователю и ПоказатьОповещениеПользователя. Больше никаких всплывающих я не знаю.  | 
|||
| 
    33
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    12:15 
 | 
         
        (32) я в (2) написал — нужно создать свою форму вывода. В форме вывода может использоваться что угодно — хоть ФорматированныйТекст, хоть ПолеHTML, хоть ТабличныйДокумент, хоть ещё что-то — как душе угодно.     
         | 
|||
| 
    34
    
        dezss    
     18.08.17 
            ✎
    12:19 
 | 
         
        (29) попробовал.
 
        Вот результат, именно этого я и ожидал: ПриОткрытии http://clip2net.com/s/3N2lbDM ПередЗаписью http://clip2net.com/s/3N2litD ПослеЗаписи http://clip2net.com/s/3N2llLe  | 
|||
| 
    35
    
        Dzenn    
     гуру 
    18.08.17 
            ✎
    12:42 
 | 
         
        (34) Первое — событие "ПослеЗаписи" при отказе от записи не отработает
 
        Второе — ПередЗаписью в твоём случае отрабатывает на клиенте  | 
|||
| 
    36
    
        dezss    
     18.08.17 
            ✎
    12:47 
 | 
         
        (35) Естественно не отработает. Это только был ответ на твой вопрос, как передавать.
 
        Да, на клиенте. И что мешает использовать это событие и именно в нем проводить свои проверки?  | 
|||
| 
    37
    
        dezss    
     18.08.17 
            ✎
    12:57 
 | 
         
        Вот жеж...Моего оппонента забанили.     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |