|
v7: Перехватить сообщение платформы "Номер не уникальный" | ☑ | ||
---|---|---|---|---|
0
GrayS19
14.01.21
✎
10:27
|
Чем можно перехватить событие, которое платформа генерит при попытке записи документа с неуникальным номером (когда рисуется окошко "Номер не уникальный") ?
Попробовал в самом документе принудительно Попытка Записать(); Исключение - не генерит Исключение. Почитал ветку про Класс.Перехватчик - но как я понял, как раз Записать() не перехватывается. Есть ещё какие-то варианты ? |
|||
1
trdm
14.01.21
✎
10:28
|
Обратиться к АЛьФу.
|
|||
2
trdm
14.01.21
✎
10:36
|
Да, платформе не хватает события "ПриВозникновенииОшибки" :)
|
|||
3
Волшебник
14.01.21
✎
10:50
|
Можно перед записью сделать поиск другого документа по этому номеру.
|
|||
4
Mikeware
14.01.21
✎
10:52
|
а разве ОписаниеОшибки после этого не заполнено?
вроде отлавливал как-то эту ошибку, "но это неточно"© |
|||
5
GrayS19
14.01.21
✎
10:53
|
(1) АЛьФ решил FormEx доработать, там интересно. Либо обработка ошибки уж очень глубоко в платформе и её не перехватить.
(3) да, спасибо, похоже ничего лучше не придумать |
|||
6
NorthWind
14.01.21
✎
11:00
|
(0) Лет 10 назад отлавливал эту ошибку. Насколько я помню, исключение работало, и ОписаниеОшибки () содержало текст "Номер не уникальный", что и позволяло отловить данный конкретный случай. Не помню каких-то существенных проблем.
|
|||
7
NorthWind
14.01.21
✎
11:01
|
все было сделано стандартными механизмами, FormEx не использовался. Платформа 7.7.027.
|
|||
8
Arbuz
14.01.21
✎
15:33
|
Странно.
Исключения нет. ОписаниеОшибки() пустое. только Записать()=0 неясно как при этом отлавливать, что именно - "Номер не уникальный" - не перебирая номера 27, dbf, 1cpp, formex, + так-то у меня ещё 1spy Орефкова - я могу отлавливать сообщения и месседжбоксы. |
|||
9
GrayS19
14.01.21
✎
15:36
|
(7) В каком месте кода удавалось получить ОписаниеОшибки() ? Процедура ПриЗаписи() отрабатывает без ошибок, поставил на форму как функцию, которая возвращает текст - пусто.
|
|||
10
GrayS19
14.01.21
✎
15:48
|
(8) и если в коде поставить
Если Записать() = 0 Тогда Сообщить("Не записалось"); КонецЕсли; то сначала получаем окно предупреждения платформы "Номер не уникальный", а потом уж отрабатывает сообщение. |
|||
11
alyuev
14.01.21
✎
16:06
|
Исключение работает при записи. Описание сохраняю в переменную, типа ОписьОшибки=ОписаниеОшибки() и дальше в ней проверяю в том числе "Number is not unique" или "Номер не уникальный" и пр.
|
|||
12
trad
14.01.21
✎
16:32
|
Док = СоздатьОбъект("Документ");
НомерНеУникальный = Док.НайтиПоНомеру(НомерДок, ДатаДок, Вид()); Если НомерНеУникальный = 0 Тогда Записать(); Иначе Сообщить("Номер не уникальный"); //УстановитьНовыйНомер(); // при желании КонецЕсли; |
|||
13
МихаилМ
14.01.21
✎
16:41
|
была вк для 1с77, которая все сообщения перехватывала. как завется - не помню.
но не vkhook |
|||
14
Arbuz
14.01.21
✎
16:49
|
(13) я ж указал в (8) "Шпион 1С" Орефкова 1spy.dll
|
|||
15
NorthWind
14.01.21
✎
19:25
|
(9)
//------------------------------------------------------------------------------ // Запись документа, даже несмотря на ошибку "Номер не уникальный" // Функция ЗаписатьДокБезопасно (Док) Завершение = 0; Результат = 1; Пока Завершение = 0 Цикл Попытка Док.Записать (); ЛоггингССообщением (ОписаниеДокумента (Док.ТекущийДокумент ()), "записан."); Завершение = 1; Исключение Описание = "Номер не уникальный"; Ошибка = ОписаниеОшибки (); Если Лев (Ошибка, СтрДлина (Описание)) = Описание Тогда Завершение = 0; Док.НомерДок = Инкремент (Док.НомерДок); ЛоггингССообщением ("Сбой нумератора при записи", Док.Вид (), " - будет предпринята попытка с номером ", Док.НомерДок); Иначе Завершение = 1; Результат = 0; ЛоггингССообщением ("Необработанная ошибка при записи документа", ОписаниеДокумента (Док), "-", Ошибка); КонецЕсли; КонецПопытки; КонецЦикла; Возврат Результат; КонецФункции |
|||
16
Злопчинский
15.01.21
✎
06:37
|
(15) это программная запись программного объекта.
а ты вот отлови ошибку записи интерактивно открытой формы в самой этой форме. |
|||
17
NorthWind
15.01.21
✎
08:28
|
(16) ясно, неверно понял чего (0) хочет. Нет, такое не делал.
|
|||
18
Mikeware
15.01.21
✎
08:46
|
(16) ну так на кнопку - назначь функцию, и в ней записывай.
Если это не поможет...©Задорнов, тогда в этой функции создавай док программно, копируй в него содержимое текущего незаписанного, и записывай как (15) |
|||
19
NorthWind
15.01.21
✎
09:23
|
(18) ну это танцевать не всегда будет. Юзак может "крестиком" окно закрыть, прога спросит - записать, не надо?
|
|||
20
Ёпрст
15.01.21
✎
09:26
|
Дык, в (12) ответ жешь..самое простое и быстро отработает
|
|||
21
Ёпрст
15.01.21
✎
09:27
|
Эту хрень в ПриЗаписи и привет, тока Записать() там лишнее, и статусвозврата(0) в исключение воткнуть..и усе
|
|||
22
Mikeware
15.01.21
✎
09:30
|
(19) ну, можно запретить закрывть крестиком. На хитрую оппу...
|
|||
23
GrayS19
15.01.21
✎
11:57
|
Спасибо всем, особенно (12),(21).
|
|||
24
Arbuz
15.01.21
✎
16:00
|
(19) (22) Можно же отлавливать ПриЗаписи() и городить тот огород
(20) Интересно, а кроме "Номер не уникальный" может ещё что так же запись обламывать? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |