|
Получить текст служебных сообщений | ☑ | ||
---|---|---|---|---|
0
kugelfangg
27.06.12
✎
15:11
|
Здравствуйте, господа! Подскажите пожалуйста каким образом программно получить текст выводимый в окно "Служебные сообщения"?
|
|||
1
FIXXXL
27.06.12
✎
15:14
|
сообщениобошипке() ?
|
|||
2
DrShad
27.06.12
✎
15:15
|
Глобальный контекст.ПолучитьСообщенияПользователю (Global context.GetUserMessages)
Глобальный контекст (Global context) ПолучитьСообщенияПользователю (GetUserMessages) Синтаксис: ПолучитьСообщенияПользователю(<УдалятьПолученные>) Параметры: <УдалятьПолученные> (необязательный) Тип: Булево. Признак необходимости удаления полученных сообщений из списка. Истина - удалять. Значение по умолчанию: Ложь Возвращаемое значение: Тип: ФиксированныйМассив. Описание: Получает массив объектов СообщениеПользователю, которые еще не были выведены пользователю. Такое может происходить при работе в регламентных заданиях, на стороне сервера или в Web-сервисах. Доступность: Сервер, толстый клиент, внешнее соединение. См. также: СообщениеПользователю Глобальный контекст, метод Сообщить |
|||
3
DrShad
27.06.12
✎
15:15
|
а вообще хз че именно тебе надо
|
|||
4
kugelfangg
27.06.12
✎
15:26
|
Мне нужно чтобы при возникновении исключения передавать всю инфу в другую базу через ComConnector
|
|||
5
kugelfangg
27.06.12
✎
15:28
|
(2) Не получилось. Выдает пустой "Фиксированный массив".
|
|||
6
mikecool
27.06.12
✎
15:29
|
(4) вроде как перехвата исключения вообще, глобально нету
|
|||
7
FIXXXL
27.06.12
✎
15:33
|
(1) сорри, опшипся
Встроенные функции языка (Script functions) ИнформацияОбОшибке (ErrorInfo) Синтаксис: ИнформацияОбОшибке() Возвращаемое значение: Тип: ИнформацияОбОшибке. Описание: Получает структурированную информацию об исключении. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. Пример: Попытка ... Исключение Инфо = ИнформацияОбОшибке(); Сообщить("Описание='" + Инфо.Описание + "'"); Сообщить("ИмяМодуля='" + Инфо.ИмяМодуля + "'"); Сообщить("НомерСтроки=" + Инфо.НомерСтроки); Сообщить("ИсходнаяСтрока='" + Инфо.ИсходнаяСтрока + "'"); КонецПопытки; |
|||
8
kugelfangg
27.06.12
✎
15:38
|
(6)Ок, абстрагируемся от исключения. Просто, как программно получить текст, содержащийся в "служебные сообщения"?
|
|||
9
Пыльный
27.06.12
✎
15:50
|
Стандартными средствами - никак.
Посмотри http://infostart.ru/public/99364/ Или запускай 1с-ку с параметром /Out "полный путь к файлу-логу" и потом его читай :) |
|||
10
orefkov
27.06.12
✎
16:17
|
(0)
В конфигураторе можно, в Предприятии - нет. |
|||
11
Maxus43
27.06.12
✎
16:18
|
можно ж писать в файл а потом парси наздоровье
|
|||
12
kugelfangg
27.06.12
✎
16:31
|
(7) спасибо за подсказку, но это к сожалению не совсем то что требуется=)
Результат: Инфо ИнформацияОбОшибке ИмяМодуля "Форма.Форма.Форма" ИсходнаяСтрока " ДокСсылка.ПолучитьОбъект().Записать(РежимЗаписиДокумента.Проведение);" НомерСтроки 19 Описание "Ошибка при вызове метода контекста (Записать)" Причина ИнформацияОбОшибке ИмяМодуля "" ИсходнаяСтрока "" НомерСтроки 0 Описание "Не удалось провести "Поступление товаров XXXXXX от 21.05.2012 16:03:14"!" Причина |
|||
13
Serg_1960
27.06.12
✎
17:09
|
(0) "...каким образом программно..." - это просто.
Берешь типовую конфигурацию(УПП, например) и меняешь там "Сообщить(" на "ОбщегоНазначения.СообщитьОбОшибке(". Будет, примерно, заменено 5765 строк и фсё :) PS: в УПП есть настройка куда выводить сообщения (в окно сообщений, в окно комментариев, в журнал регистрации) и была сделана попытка "консолидировать" вывод сообщений в единой процедуре... итог этих усилий - указан выше :( |
|||
14
kugelfangg
28.06.12
✎
11:25
|
(9) Вы не могли бы кинуть данную обработку в файлообменник. Жадный infostart.ru хочет от меня денег или статью, а сейчас реально не до того=)
|
|||
15
Cyberhawk
28.06.12
✎
11:31
|
||||
16
kugelfangg
28.06.12
✎
11:33
|
(13) к сожалению это не УПП. В нашей базе "сообщить" используется не только при ошибке, но и для вывода информации. При внешнем соединении "СообщитьОбОшибке" вызывает исключение. То есть даже если все в порядке, и система просто напишет: "документ проведен" внешнее соединение воспримет это как исключение, что крайне нежелательно.
|
|||
17
kugelfangg
28.06.12
✎
11:37
|
(15) Спасибо.
|
|||
18
kugelfangg
28.06.12
✎
11:43
|
Обработка не помогла. Он рассчитана на то, что все сообщения выводятся через СообщитьОбОшибке. В нашей базе все сделано через "сообщить()" т.е. Данные об ошибках изначально не сохраняются.
Как бы получить данные которые накапливаются в окне служебных сообщений, отправленные туда через "сообщить()". |
|||
19
kugelfangg
28.06.12
✎
11:51
|
ап
|
|||
20
aleks-id
28.06.12
✎
12:08
|
тебе же сказали - никак!
|
|||
21
Cyberhawk
28.06.12
✎
12:14
|
(19) т.е. ты хочешь в клиентском сеансе испольнить код, который выведет тебе содержимое окна "Служебные сообщения", так?
|
|||
22
orefkov
28.06.12
✎
12:21
|
(19)
Могу сделать ВК под толстого клиента, будет вести лог в файл всего, что вываливается в окно сообщений. 10 тыр на яндекс-мани. Готов? |
|||
23
Пыльный
28.06.12
✎
12:23
|
(19) ЖЖОШ!
|
|||
24
kugelfangg
28.06.12
✎
13:00
|
(22) а на безвозмездной основе?=)
Нашел в параметрах конфигурации поле "Файл служебных сообщений" указал путь. Но туда ничего не пишется. Подскажите пожалуйста в чем может быть причина? |
|||
25
Пыльный
28.06.12
✎
13:09
|
(24) Ладно. Распишу поподробнее :)
Справка -> Содержание справки -> Запуск 1С:Предприятие 8 и параметры запуска - > Общие параметры запуска -> находишь ключ /Out -> много думаешь. |
|||
26
orefkov
28.06.12
✎
13:22
|
(24)
К сожалению на безвозмездной основе некогда. |
|||
27
Агент Инфостарта
28.06.12
✎
13:28
|
(26) Щас начнут орать, орефков зажрался, забесплатно пырять не желает.
|
|||
28
orefkov
28.06.12
✎
14:01
|
(27)
Как говорится - "переходите на 7ку, там это реализовано" :) http://infostart.ru/public/14292/ |
|||
29
kugelfangg
28.06.12
✎
15:13
|
(25)
Нашел в справке: Закладка "Дополнительные" Файл служебных сообщений - если требуется автоматически сохранять служебные сообщения в файл, то в данном параметре указывается его имя (аналог параметру, передаваемому через ключ командной строки /OUT). НО! в этот файл нифига не пишется, он даже не создается. Подскажите пожалуйста, что я делаю не так=) |
|||
30
pumbaEO
28.06.12
✎
15:15
|
(29) на 8.1 писал после выхода из программы, на 8.2 должен писать сразу...
|
|||
31
kugelfangg
28.06.12
✎
15:18
|
У меня 8.2. Не пишет ни сразу, ни после закрытия. Может еще какую нибудь настройку нужно подкрутить, чтоб эта хрень заработала?
|
|||
32
kugelfangg
28.06.12
✎
15:23
|
ап
|
|||
33
kugelfangg
28.06.12
✎
16:26
|
up
|
|||
34
Пыльный
28.06.12
✎
16:39
|
(29) Так не пробовал, но при запуске из командной строки - всё ОК.
Спецально сейчас проверил :) |
|||
35
kugelfangg
28.06.12
✎
16:43
|
Проблема в том что мне это через ComConnector нужно делать.=) так что командная строка тут не прокатит=)
|
|||
36
sameza
16.07.12
✎
09:11
|
Озабочен той же траблой что и ТС.
Нашёл выход,но он работает через раз ... вот код: Процедура СлужебныеСообщенияВФайл (Файл) Экспорт WshShell = Новый COMОбъект("Wscript.Shell") ; WshShell.sendKeys("^%(o)") ; // (Ctrl Alt O) фокус ввода в окно "Служебные сообщения" WshShell.SendKeys("^(a)") ; // (Ctrl А) WshShell.SendKeys("^(c)") ; // (Ctrl С) WshShell.Exec ("ClipD.exe "+Файл) ; КонецПроцедуры ClipD.exe - прога на паскале, которая копирует содержимое буфера обмена в файл (Файл передаётся в неё как парамитр) вот код ClipD.exe <Pascal/Delphi> program ClipD; {$APPTYPE CONSOLE} uses SysUtils, Classes, Clipbrd; // --- Var sl : TStringList ; FileName : String ; // --- begin sl := TStringList.Create() ; sl.Text := Clipboard.AsText ; FileName := ParamStr(1) ; if (FileName <> '') then Begin sl.SaveToFile(FileName) ; End ; sl.Free() ; end. <Pascal/Delphi> работает через раз ... ковыряю дальше, ищу способы ... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |