Имя: Пароль:
1C
1С v8
Как оставлять сообщения
,
0 SweetaAngel
 
13.10.22
13:19
Допустим создаю конфигурацию с нуля открываю Предприятие.

Затем создаю внешнюю обработку, в модуле обработке пишу код:
Сообщить("Привет, мир");

Добавляю в обработку пустую форму.

Затем открываю обработку во вновь созданной конфигурации. Сообщение появляется на мгновение и исчезает.

А если то же самое делаю в типовой конфе сообщение остается.

Как сделать, чтобы сообщение оставалось?
1 Ryzeman
 
13.10.22
13:29
Вопрос - жесть, максимально нечеловеческим языком составлен) Если в типовой ты используешь что-то вроде ОбщегоНазначенияКлиент.СообщитьПользователю(), то тебе ничего не мешает залезть туда и посмотреть как там что реализовано.
Если же у тебя Сообщить() якобы работает по-разному в типовой и в самописке, то это ложь, и ты неправильно задаёшь вопрос, либо делаешь что-то не то. Например в типовой ты оставляешь форму открытой, а в самописке - закрываешь или что то в этом духе.
2 SweetaAngel
 
13.10.22
13:33
3 SweetaAngel
 
13.10.22
13:34
З.Ы. Обработку надо открыть и закрыть
4 СергейК
 
13.10.22
13:40
(1) "Если в типовой ты используешь что-то вроде ОбщегоНазначенияКлиент.СообщитьПользователю(),"
- в (0) конфигурация с нуля
5 Ryzeman
 
13.10.22
13:42
(2) Косяк платформы, я ХЗ. Нигде не документировано что такой код в принципе должен выполняться) Сообщить() выполняется в контексте другой формы (просто на предыдущей вкладке). Я бы не стал этот механизм использовать в самописке, даже если ты не собираешься её обновлять.
6 SweetaAngel
 
13.10.22
13:47
(5) > Нигде не документировано что такой код в принципе должен выполняться)

Чего? То что у тебя в модули обработки написано за пределами процедур и функций выполняется в первую очередь
7 SweetaAngel
 
13.10.22
13:48
(5) Собственно сообщение выводится не остается
8 Smallrat
 
13.10.22
13:53
(0) думается мне это потому, что в сообщения привязаны к формам - у тебя выводится сообщение до того, как форма открылась, соответственно у формы список сообщений пуст и платформа показывает пустой список сообщений, затирая то, что вывелось ранее.
9 SweetaAngel
 
13.10.22
14:09
(8) Так. И что нужно сделать в пустой конфигурации чтобы "ообщения привязаны к формам "?
10 Smallrat
 
13.10.22
14:11
(9) выводить в форме, а не в модуле или в модуле, но в процедуре, которая вызывается из формы
11 SweetaAngel
 
13.10.22
14:16
(10) Вот ты кудесник, и как это ты ухитрился до такого докумекать.

Я спрашивал что нужно сделать с пустой конфигурацией, чтобы она работала как типовая, а не как мне сообщение половчей вывести.
12 Ryzeman
 
13.10.22
14:17
(7) Выводится - где? Оно вне контекста? У меня в УТ 11.4 сообщение выводится не на форме обработки, а на предыдущей открытой форме.
Поэтому и говорю что это какая недокументированная особенность и глюк. 1с в принципе отходит от политики открытия внешних обработок интерактивно. Зачем так писать?
13 Сергиус
 
13.10.22
14:18
(0)Зачем выводить сообщить в модуле объекта обработки? Выводите в форме.
14 Ryzeman
 
13.10.22
14:18
(12) И это очевиднейший баг, никак не фича
15 Smallrat
 
13.10.22
14:18
(11) причем тут типовая/не типовая - так работает платформа, без всяких БСП
16 Smallrat
 
13.10.22
14:21
(15) а, если в типовой норм выводится - то это баг, бывают платформы, которые что-то там путают с идентификаторами формы и творится дичь - например какая-то из 15ых чтоли
17 SweetaAngel
 
13.10.22
16:59
(16) > то это баг, бывают платформы,

Самому не смешно? Я тут номера платформы не писал, очевидно, что у всех тут он не может быть одинаковым.
18 SweetaAngel
 
13.10.22
17:00
(16) Впрочем можешь меня поправить. Напиши на каком релизе платформы и типовой конфигурации, в Такси, это не работает.
19 SweetaAngel
 
14.10.22
11:56
Никто не знает?
20 Анцеранана
 
14.10.22
13:07
(0) возможно глюк какой-то, кэш почисти пользователя или базу удали из списка и добавь обратно или посмотри что у тебя с этим окном (Окна - восстановить положение основного окна) или правой кнопкой на окне сообщений и там что-нибудь посмотреть (последнее маловероятно).
21 SweetaAngel
 
14.10.22
18:40
(20) На твоих базах не работает?
22 Mihasya
 
17.10.22
01:04
(0) Скорее всего у типовых в рабочую область начальной страницы выведена какая-то форма, и сообщение привязывается к этой форме, а у твоей конфы нет формы, вот и нет сообщения
23 Курцвейл
 
17.10.22
01:15
(0) Это артефакт от обычных форм.
Нет смысла исследовать глюки старых функций.
24 H A D G E H O G s
 
17.10.22
02:15
Правильный ответ в (22).


Довольно часто необходимо вывести сообщение в обработке проведения документа, причем не только когда возникла ошибка при проведении, но и в том случае, когда документ успешно проведен. Проблема возникает когда пользователь использует команду “Провести и закрыть”. Сообщение привязывается к окну содержащему форму текущего документа, которое в случае успешного проведения тут же закрывается и пользователь его не видит. Все дело в том что метод Сообщить() объекта СообщениеПользователю выводит сообщение в АКТИВНОЕ окно, документ как правило открывается в дополнительном окне, которое в данном случае и является активным. Таким образом, что бы пользователь смог прочитать сообщение после закрытия формы документа, необходимо перед использованием метода Сообщить() активизировать основное окно управляемого приложения. Один из вариантов – сделать это в событии формы ПередЗаписью(), например так:
&НаКлиенте

Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
  ОкнаКлиентскогоПриложения = ПолучитьОкна();
  Для каждого ОкноКлиентскогоПриложения Из ОкнаКлиентскогоПриложения Цикл
    Если ОкноКлиентскогоПриложения.Основное Тогда
      ОкноКлиентскогоПриложения.Активизировать();
      Прервать;
     КонецЕсли;
  КонецЦикла;
КонецПроцедуры
25 SweetaAngel
 
17.10.22
04:34
(24) так в обработке работает без этого кода.
26 SweetaAngel
 
17.10.22
04:35
(22) Как это сделать?
27 SweetaAngel
 
17.10.22
07:24
(22) Да. Создал общую форму и добавил её на начальную страницу и заработало.
28 Chai Nic
 
17.10.22
07:28
А интересно, чем в 1с руководствовались, когда в управляемых формах отказались от глобального окна сообщений?
29 Aleksey
 
17.10.22
09:45
(28) не смогла? Подозреваю что опять всему виной браузер
30 Chai Nic
 
18.10.22
07:39
Да вряд ли дело в браузере. В современных браузерах чего только не делают. Плохо то, что фирма 1с в разработке приложения решила опираться на встроенные функции браузеров, а конкретно в работе с окнами. Лучше бы они рисовали интерфейс графическими примитивами на битмапе, по принципу RDP, используя тот же джаваскрипт. Тогда можно было бы не обращать внимания на ограничения браузеров и делать реально удобный интерфейс именно для 1с.