как не выводить окно сообщений |
Я |
06.09.06 — 12:08
Есть ли команда для того чтобы при выполнении обработки в случае ошибки эта ошибка не выскакивала в окне сообщений?
Вообще возможно ли сделать так
1 — 06.09.06 — 12:09
Попытка
2 — 06.09.06 — 12:16
WshShell = СоздатьОбъект(«WScript.Shell»);
WshShell.SendKey(«^+(z)»);
WshShell.SendKey(«^+(я)»);
3 — 06.09.06 — 12:17
У меня ошибка из диалога выскакивает
Вот этот код тогда куда вставить:
WshShell = СоздатьОбъект(«WScript.Shell»);
WshShell.SendKey(«^+(z)»);
WshShell.SendKey(«^+(я)»);
4 — 06.09.06 — 12:20
2(3) А если исправить ошибку?
5 — 06.09.06 — 12:20
не получиться, надо именно не выводить
6 — 06.09.06 — 12:21
(5) Что за ошибка?
7 — 06.09.06 — 12:23
(5) LOL
8 — 06.09.06 — 12:25
(5) :))
если не получается, то еще окно сообщений можно за пределы экрана затянуть :))
9 — 06.09.06 — 12:25
(5) это как?
используй (1)
10 — 06.09.06 — 12:29
(3)
Попытка
//Текст твоей ошибки
Исключение
//Обработка исключения
КонецПопытки;
В итоге у тебя не будет выводиться ошибка, а будет срабатывать код после исключения. Тот код, что написал попробуй. Просто сначала выведи в окно сообщений какой нибудь текст, а потом запусти на выполнение.
11 — 06.09.06 — 12:30
(0) А вообще попробуй ошибку исправить. Или нельзя?
12 — 06.09.06 — 12:33
выдаваемые из конфы — можно перехватить
выдаваемые из платформы — нельзя, но можно обойти через Попытку
13 — 06.09.06 — 12:34
да мне эта ошибка не влияеет на работу обработки,
все правильно работает, просто бесит это окно с непонятно почему выскакиваемой ошибкой,
14 — 06.09.06 — 12:34
текст ошибки покажи )
15 — 06.09.06 — 12:34
(13) что за ошибка?
16 — 06.09.06 — 12:35
(13) А что за ошибка?
17 — 06.09.06 — 12:35
ггг
18 — 06.09.06 — 12:36
стандртная что поле объекта не представляет агрегатного состояния
19 — 06.09.06 — 12:36
хе… текст покаж
20 — 06.09.06 — 12:37
(18) перешло в жидкую фазу?
21 — 06.09.06 — 12:37
полностью ошибку
22 — 06.09.06 — 12:37
Код и текст ошибки
23 — 06.09.06 — 12:37
(18) Эту ошибку можно исправить ..
24 — 06.09.06 — 12:38
:)))
25 — 06.09.06 — 12:38
Значение не представляет агрегатный объект (НомерДок)
НомерДок вызывается из гл модуля прямиком в диалоге,
и причем номер документа выводится правильно
26 — 06.09.06 — 12:39
код давай
27 — 06.09.06 — 12:41
(25) Ау!!! Код не можешь найти?
28 — 06.09.06 — 12:42
да не интерсует меня эта ошибка вообще я уже все сделал без всяких ошибок,
меня интересовал вопрос о том как не выводить окно сообщений, раньше никогда не сталкивался
29 — 06.09.06 — 12:43
30 — 06.09.06 — 12:43
(28) код гони
31 — 06.09.06 — 12:44
(28) так вот и рушется целостность бд
32 — 06.09.06 — 12:45
(28) Тебе тяжело код написать?
33 — 06.09.06 — 12:47
Скорее всего ошибка в формуле таблицы?
34 — 06.09.06 — 12:49
короче ошибки нет, куда код она прописывает не знаю просто, чтобы глянуть, переделал по другому,
вообще никакой таблицы не было, ошибка выскакивает при обращении к диалогу
35 — 06.09.06 — 12:50
чо?
36 — 06.09.06 — 12:51
(34) Что ты подразумеваешь под «обращением к диалогу»?
37 — 06.09.06 — 12:51
в диалоге был текст, в тексте формула, в формуле НомерДок
38 — 06.09.06 — 12:52
(37) Эту ошибку можно исправить …
meps
39 — 06.09.06 — 12:54
открытие формы, нажатие на кнопку
-
Всем привет!
В обработке проведения делаю проверку на наличие проведенных документов на основании, и если таковые есть — выдаю ошибку, что нужно их распровести и делаю «Отказ = Истина». При этом выдается сервисное сообщение «Не удалось провести [название документа]. Ок, Подробно…».
Начальника хочет, чтобы выводилось одно сообщение о том, что не проведено, т.к. есть документы на основании. Как вывести свое сообщение и не выводить сервисное?
-
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
-
Если можно, чуть подробнее. В каком месте использовать попытку и что в ней пытаться сделать? Я же не программно провожу, а стандартными средствами.
-
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
Если кодить не умеете, лучше не лезьте, да и мой вам совет, не нужно переделывать штатный функционал, потом при обновлении замучаетесь. Это ваша «хотелка» ничего не значит для бизнес-логики, так что оставьте эту затею.
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
TylerDurdenIII
в суть не вдумывался. Пока вопросы:
1) почему вы это делаете (проверку) именно в обработке проведения документа? Почему например нельзя сделать это раньше, например перед записью документа?
2) всю задачу не знаю, это зависит уже от нее, поэтому может быть не актуально, но: судя по первому посту подразумевается что это проведение ваше запускает пользователь, и ему выводится какое-то сообщение. В итоге: вашу проверку действительно в модуле объекта надо делать, или же допустимо вообще убрать ее в модуль формы? -
1) Если делать в процедуре ПередЗаписью также придется ставить Отказ=Истина, который приведет к сообщению «Не удалось провести [название документа]».
2) Если в форму поместить код, то не отработает при проведении из списка. -
Offline
alexburn
Модераторы
Команда форума
Модератор- Регистрация:
- 5 янв 2009
- Сообщения:
- 15.150
- Симпатии:
- 560
- Баллы:
- 204
Главный вопрос — для чего это ????
Это влияет на бизнес-логику ?
Это влияет на скорость работы ИБ ?
Это влияет на оперативность ?
На что это влияет ???? -
Есть такие люди, которые хотят и все тут. Мешает им видите ли лишнее отвлекающее от основного сообщение. Буду убеждать, что не надо это, просто уже интересно как же можно это сделать если это возможно.
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
2) Понял. Принимается.
1) ПередЗаписью() использовать в любом случае лучше, не будет лишних расчетов, выполняемых в процедуре проведенияЕще уточняющий вопрос: контролировать (выводить ваше сообщение) надо именно при проведении документа или при отмене проведения?
-
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
Ну ок.
Смотрите, я не знаю как вы выводите ваше сообщение (Предупреждение())? Т.е. модальным окном что-ли, что у вас два она появляется?
Если так, то рекомендуемый мной вариант: сделать точно также как реализовано стандартно. Т.е. выводите причину ошибки при помощи «ОбщегоНазначения.СообщитьОбОшибке()», она появляется внизу экрана в окне сообщений, и на экране это ваше системное окно о том что невозможно провести (записать) документ.
Если же упорно так не хотите, ну единственный вариант который я знаю: вызовите собственное исключение в процедуре проведения (ВызватьИсключение <Текст>). -
В данный момент все как вы и описали — служебное сообщение выскакивает, а мое сообщение внизу экрана. Клиент упорно хочет одно сообщение.
Есть ли подводные камни у вызова исключения из проведения? Не делает ли платформа еще чего важного кроме вывода сообщения при отказе? -
Offline
shurikvz
Модераторы
Команда форума
Модератор- Регистрация:
- 1 окт 2009
- Сообщения:
- 8.547
- Симпатии:
- 344
- Баллы:
- 104
Да нет. Чего она важного может делать? Вызываете исключение — транзакция записи прерывается.
- Похожие темы
-
- Ответов:
- 12
- Просмотров:
- 1.235
greenLiss |
|
||
---|---|---|---|
|
База УТ11, но это не важно. Платформа 8.3 Есть документы, которые нельзя провести из-за не правильного заполнения, и это логично, так и должно быть. Правильно или не правильно, определяется в обработке проверки заполнения. Но вот в чём проблема, если пытаться провести из формы документа(когда Отказ = Истина), то будут появляться сообщения только те, которые прописаны в коде конфигурации(это хорошо), а вот если попытаться провести из формы списка документов, то будет появляться сообщение типа:»При проверке заполненности данных произошли ошибки», и на каждый такой документ, придется нажимать «ОК». Как можно обойти этот механизм, что бы пользователям не нужно было нажимать «ОК»? Заранее, спасибо. |
Yandex |
|
||
---|---|---|---|
|
IBReiter |
|
||
---|---|---|---|
|
А документ должен проверятся или нет? |
greenLiss |
|
||
---|---|---|---|
|
Да, что бы работало так же, как и всегда, но без этого сообщения |
EMigachev |
|
||
---|---|---|---|
|
если выдается сообщение — значит в документе не все правильно! — надо же исправить проблему или вам все-равно как проводится!? |
greenLiss |
|
||
---|---|---|---|
|
Да я же не против того, что не проводится… Проблема в самом сообщении, вот нужно пользователю провести 20 документов, он в списке их выделил, нажал «Провести», а там 10 ошибок (которые и так видно в окне сообщений), и он должен еще 10 раз нажать на «ОК». Зачем? Вот именно это и нужно убрать… Просто что бы не выдавалось терминирующее сообщение, с кнопкой «Ок», всё, что нужно, пользователь видит в обычных сообщениях… |
IBReiter |
|
||
---|---|---|---|
|
Тогда код нужно исправлять, другого варианта не вижу |
greenLiss |
|
||
---|---|---|---|
|
Конфига изменена, так что, проблемы изменения кода нет. Но где его менять??? Для примера: создаю новую конфигу, добавляю документ, в модуле объекта делаю только одну проц. «ОбработкаПроверкиЗаполнения» и пишу одну строку Отказ = Истина; И этого достаточно, что бы выходило сообщение при проведении из списка… |
EMigachev |
|
||
---|---|---|---|
|
Нужно понять каким образом выводится это предупреждение: 1. Это механизм платформы — проверка заполнения реквизита: 2. это написано в коде Проверить можно отладчиком и отключить это механизм проверки |
greenLiss |
|
||
---|---|---|---|
|
В ответе №6, можно понять, что это механизм платформы, сообщение выдаётся, когда Отказ в стандартных проц. равен истине. Но что делать дальше? Отказ = истине, когда что-то не правильно, и так должно быть (Иначе бы воспользовался стандартной «Проведение документов»)… |
EMigachev |
|
||
---|---|---|---|
|
отключите проверку на реквизиты по которым ругается |
greenLiss |
|
||
---|---|---|---|
|
Кроме проверки реквизитов происходит еще куча дополнительных проверок, которые обязательны… Отключение части проверок — не вариант. Нужно только отключить сообщение при отказе, но сам отказ должен остаться… Я так понимаю, что на данный момент, это не возможно. Напишу письмо в 1С, вдруг… |
IBReiter |
|
||
---|---|---|---|
|
Попробуйте, действительно, вдруг…;) |
rudnitskij |
|
||
---|---|---|---|
|
Можно попробовать использовать команду ВОЗВРАТ при невыполнении условия проверки, без использования команды ОТКАЗ. Чтоб документ не проводился — вам всего лишь нужно не выполнить процедуру ОбработкаПроведения до конца, прервать ее в нужном вам месте. Значение флажка ОТКАЗ на это никак не влияет |
Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху) |
Окно служебных сообщений (или Область служебных сообщений) — это специально предназначенное поле, в котором 1С Бухгалтерия 8 информирует пользователя об ошибках при проведении документов, а также сообщает другую полезную информацию. Выглядит оно в по-разному в зависимости от версии 1С Предприятия.
Для 1С Бухгалтерии 8.2 это поле внизу окна программы. Выглядит вот так.
[нажмите на картинку для увеличения]
Справка: как сохранять фото с сайтов
В приведенном примере была попытка списать со склада больше материалов, чем там есть. В результате документ не провелся. При этом появилось два сообщения. Одно (вверху) — это стандартное окно сообщений, как и в любой другой программе Windows. А вот второе (внизу) характерно для 1С Бухгалтерии 8.2 и это и есть то самое служебное окно.
В данном случае там указана причина ошибки, то есть почему не проводится документ. При появлении такого окна следует изучить информационные сообщения 1С Бухгалтерии — это поможет найти и исправить ошибку.
Запомните: ошибок может появиться больше, чем одна. В таком случае рекомендуется просматривать и исправлять их начиная с самой первой (в верхней части окна). Причина этого в том, что одни ошибки могут являться следствием других, более ранних. Такой приём порой помогает сэкономить много времени на поиске несуществующих (почему?) ошибок, особенно если ошибки сложные.
Другая особенность работы с этим окном в том, что оно не очищается автоматически. Поэтому, чтобы не путать новые ошибки со старыми, рекомендуется вручную очищать окно или просто его закрывать (после того, как всё исправили!).
И наконец, третье. Некоторые пользователи воспринимают данное окно сообщений как некоторую неприятность, которую подкидывает им 1С Бухгалтерия. При этом они просто или не глядя закрывают это окно, либо минимизируют его, поскольку «оно уже надоело появляться«. Надо ли говорить, что такие пользователи потом очень долго ищут сделанную ошибку!
Чтобы не совершать ошибки в учёте, хорошо изучите 1С:Бухгалтерию 8.3 по нашему специальному видеокурсу! С примерами уроков Вы можете познакомиться здесь (всего 240 уроков, 42 часа видео).
А как обстоят дела в 1С Бухгалтерии 8.3?
В версии Бухгалтерии Предприятия, построенной на платформе 8.3, окно, о котором речь шла выше, выглядит несколько по иному. Из-за различий в интерфейсе сообщения об ошибках в 1С Бухгалтерии 8.3 появляются непосредственно как часть того окна (или вкладки), которое эту ошибку вызывает. Вот пример.
[нажмите на картинку для увеличения]
Справка: как сохранять фото с сайтов
В любом случае порядок действий при работе с сообщениями об ошибках остаётся тот же самый.
Подведём итоги
Если при проведении документа 1С Бухгалтерия выдаёт ошибку, то следует внимательно изучить, что именно там написано. Это поможет локализовать ошибку и устранить её.
Подробно ошибки, возникающие при проведении различного типа документов, я рассматриваю в полном курсе по 1С Бухгалтерии 8.
Ещё раз напомню вам — поиск и исправление ошибок (не только текущих, но и при закрытии месяца) представляет собой отдельную задачу, с которой хорошо справляются далеко не все пользователи 1С Бухгалтерии. Вводить документы относительно просто, а вот найти и исправить ошибку — совсем другое дело. Для примера прочитайте статью про закрытие месяца.
Ведите учёт аккуратно!
Уникальная метка публикации: A36C6384-BFA0-DC74-E74F-53BB42BD3C40
Источник: //artemvm.info/information/uchebnye-stati/1s-predpriyatie/ispolzovanie-okna-soobschenii/
Содержание
Механизмы оповещения пользователя
Механизмы сообщений в 1С, делятся на два типа: те которые останавливают работу программы, ожидая реакции пользователя и те, которые просто выводят сообщение на экран во время выполнения.
Операторы не останавливающие выполнение
Сообщить
Функция сообщить выводит текст сообщения в табло, снабжая его значком статуса. Синтаксис выглядит следующим образом:
Сообщить(«Текст сообщения», СтатусСообщения)
В концепции управляемых форм, окошко для вывода сообщений привязано к форме, откуда было вызвано, в связи с этим оно закрыто вместе с формой.
Более удобным методом оповещения пользователя является метод ПоказатьОповещениеПользователя()
в нем можно указать навигационную ссылку на определенный объект, какое то пояснение и определенную картинку.
Сами оповещения сохраняются в истории оповещений. Для того, что бы указать навигационную ссылку, необходимо воспользоваться методом ПолучитьНавигационнуюСсылку(СсылкаНаОбъект). Например:
НужнаяСсылка = Справочники.Сотрудники.НайтиПоНаименованию(«Петров»); НавСсылка = ПолучитьНавигационнуюСсылку(НужнаяСсылка); ПоказатьОповещениеПользователя(«Загловок», НавСсылка, «ТекстСсылка»);
СообщениеПользователю
СообщениеПользователю
служит для оповещения пользователя об ошибках заполнения формы. В этой команде есть возможность указать на ошибочно заполненное поле и дать какой то комментарий пользователю. Работает оно следующим образом:
Сообщение = Новый СообщениеПользователю; Сообщение.Текст = "Контрагент должен быть указан"; Сообщение.Поле = "ПолеНаФорме"; Сообщение.Сообщить();
Операторы ожидающие реакции пользователя
Предупреждение
Предупреждение выводит модальное окно(блокирует все остальные окна) с заданным текстом и одной единственной кнопкой ОК. Задача предупреждения получить подтверждение от пользователя, о том что он информацию получил. Синтаксис очень простой:
Предупреждение("какой то текст");
Вопрос
Команада Вопрос
предназначена для получения какого то ответа от пользователя. Эта команда так же выводит модальное окно, но список кнопок можно определить самостоятельно. Для того, что бы это сделать нужно передать набор набор кнопок которые вы хотите видеть в диалоге вторым параметром. Это могут быть:
-
Значения системного перечисления РежимДиалогаВопрос
-
Да + Нет
-
Да + Нет + Отмена
-
ОК
-
ОК + Отмена
-
Повторить + Отмена
-
Прервать + Повторить + Пропустить
-
-
Список значений. В этом случае значение списка будет выступать идентификатором нажатой кнопки, а представление текстом кнопки в диалоге.
Синтаксис следующий:
Если Вопрос("Какой то вопрос", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Да Тогда //Какие то действия КонецЕсли;
Следует заметить, что методы Предупреждение
и Вопрос
подразумевают вывод диалоговых окон и как следствие недоступны на сервере.